Files
CinemaTrailers4Jellyfins/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Configuration/PluginConfiguration.cs
Martin f49c32f181
All checks were successful
Publish Release / release (push) Successful in 23s
feat: add TV show trailer downloads, episode trailers, and movie/TV trailer separation
- 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>
2026-06-10 00:41:37 -04:00

73 lines
4.0 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;
// ── 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;
// ── 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;
}
}