All checks were successful
Publish Release / release (push) Successful in 14s
The fixed TV lists are mostly long-running shows whose first_air_date is outside ReleaseDateRangeMonths, and paging stops at the first page with no in-range title, so only ~7 TV candidates were found (5 then dropped by language). Add a "discover" source per media type that asks /discover for recent titles in AllowedLanguages, sorted by popularity (1600+ TV results for en|fr today). TV Discover defaults on, movie Discover off. yt-dlp failures were mostly passing HTTP 403s from back-to-back requests; the built-in fallback is sometimes only offered 360p. Retry yt-dlp once after 15s before falling back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
88 lines
5.2 KiB
C#
88 lines
5.2 KiB
C#
using MediaBrowser.Model.Plugins;
|
|
|
|
namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Configuration
|
|
{
|
|
public class PluginConfiguration : BasePluginConfiguration
|
|
{
|
|
// ── TMDB ──────────────────────────────────────────────────────────────
|
|
|
|
public string TmdbApiKey { get; set; } = string.Empty;
|
|
|
|
// ── Sources (Movies) ─────────────────────────────────────────────────
|
|
|
|
public bool SourceNowPlaying { get; set; } = true;
|
|
public bool SourceUpcoming { get; set; } = true;
|
|
public bool SourcePopular { get; set; } = false;
|
|
public bool SourceTopRated { get; set; } = false;
|
|
// TMDB Discover: newest titles in the allowed languages, most popular first.
|
|
public bool SourceDiscover { get; set; } = false;
|
|
|
|
// ── Sources (TV Shows) ───────────────────────────────────────────────
|
|
|
|
public bool SourceTvAiringToday { get; set; } = true;
|
|
public bool SourceTvOnTheAir { get; set; } = true;
|
|
public bool SourceTvPopular { get; set; } = false;
|
|
public bool SourceTvTopRated { get; set; } = false;
|
|
// TMDB Discover: newest shows in the allowed languages, most popular first. On by default:
|
|
// the TV lists above are mostly long-running shows the date range filters out.
|
|
public bool SourceTvDiscover { get; set; } = true;
|
|
|
|
// ── Date Range ────────────────────────────────────────────────────────
|
|
|
|
public int ReleaseDateRangeMonths { get; set; } = 6;
|
|
|
|
// ── Download Settings ─────────────────────────────────────────────────
|
|
|
|
public string DownloadFolder { get; set; } = string.Empty;
|
|
|
|
/// <summary>Maximum movie trailers to download per run. 0 = don't download movie trailers.</summary>
|
|
public int MaxTrailersToDownload { get; set; } = 20;
|
|
|
|
/// <summary>Maximum TV show trailers to download per run. 0 = don't download TV show trailers.</summary>
|
|
public int MaxTvTrailersToDownload { get; set; } = 0;
|
|
|
|
public int MaxPagesPerSource { get; set; } = 3;
|
|
public int PreferredVideoHeight { get; set; } = 720;
|
|
public bool SkipAlreadyDownloaded { get; set; } = true;
|
|
public bool SkipMoviesInLibrary { get; set; } = true;
|
|
public string YtDlpPath { get; set; } = string.Empty;
|
|
|
|
// ── Languages ─────────────────────────────────────────────────────────
|
|
|
|
/// <summary>Comma-separated ISO 639-1 codes. Empty = all languages allowed.</summary>
|
|
public string AllowedLanguages { get; set; } = string.Empty;
|
|
|
|
// ── Trailer Rotation ──────────────────────────────────────────────────
|
|
|
|
/// <summary>Maximum trailers to keep on disk. Oldest are deleted first when exceeded. 0 = unlimited.</summary>
|
|
public int MaxTotalTrailers { get; set; } = 50;
|
|
|
|
// ── IIntroProvider (Cinema Mode / Wholphin) ───────────────────────────
|
|
|
|
/// <summary>Number of trailers to inject before each movie via IIntroProvider. 0 = disabled.</summary>
|
|
public int TrailersPerMovie { get; set; } = 1;
|
|
|
|
/// <summary>Only pick trailers whose genre overlaps with the movie being played.</summary>
|
|
public bool FilterByGenre { get; set; } = false;
|
|
|
|
/// <summary>Only pick trailers rated at most the same as the movie being played.</summary>
|
|
public bool FilterByRating { get; set; } = false;
|
|
|
|
/// <summary>Cycle through all trailers before repeating any.</summary>
|
|
public bool AvoidRepeats { get; set; } = true;
|
|
|
|
/// <summary>Also inject trailers before TV episodes, but only before the first episode a user watches each day.</summary>
|
|
public bool TrailersForEpisodes { get; set; } = false;
|
|
|
|
// ── Pre-Roll Bumpers ─────────────────────────────────────────────────
|
|
|
|
/// <summary>Jellyfin movie library (VirtualFolder ItemId) to pick a random "Trailer Pre-Roll"
|
|
/// bumper from, played before the trailer block. Empty = disabled.</summary>
|
|
public string TrailerPreRollLibraryId { get; set; } = string.Empty;
|
|
|
|
/// <summary>Jellyfin movie library (VirtualFolder ItemId) to pick a random "Feature Pre-Roll"
|
|
/// bumper from, played after the trailer block, right before the feature. Empty = disabled.</summary>
|
|
public string FeaturePreRollLibraryId { get; set; } = string.Empty;
|
|
}
|
|
}
|