feat: add TV show trailer downloads, episode trailers, and movie/TV trailer separation
All checks were successful
Publish Release / release (push) Successful in 23s

- Download trailers for TV shows from TMDB with separate sources and an
  independent max-count cap (0 disables a category)
- Play trailers before TV episodes via IIntroProvider, limited to the first
  episode a user watches each day
- Tag TV show trailers in their NFO so movies only get movie trailers and
  episodes only get TV show trailers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Martin
2026-06-10 00:41:37 -04:00
parent f769e33b8d
commit f49c32f181
9 changed files with 542 additions and 127 deletions

View File

@@ -8,13 +8,20 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Configuration
public string TmdbApiKey { get; set; } = string.Empty;
// ── Sources ───────────────────────────────────────────────────────────
// ── 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;
// ── 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;
// ── Date Range ────────────────────────────────────────────────────────
public int ReleaseDateRangeMonths { get; set; } = 6;
@@ -22,7 +29,13 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Configuration
// ── 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;
@@ -52,5 +65,8 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Configuration
/// <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;
}
}