using Jellyfin.Plugin.Vanguard.Configuration; using Jellyfin.Plugin.Vanguard.Seasons; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Providers; namespace Jellyfin.Plugin.Vanguard.Providers; /// Names a season from its number: "Thursday, Oct 29", "Week 44", "October 2026", "2026" or an override. public sealed class VanguardSeasonProvider : IRemoteMetadataProvider, IHasOrder { private readonly IHttpClientFactory _http; public VanguardSeasonProvider(IHttpClientFactory http) { _http = http; } public string Name => "Vanguard Metadata"; public int Order => 0; public Task> GetMetadata(SeasonInfo info, CancellationToken ct) { var result = new MetadataResult(); if (!info.IndexNumber.HasValue) return Task.FromResult(result); var cfg = Plugin.Instance?.Configuration ?? new PluginConfiguration(); var d = SeasonPolicy.Describe(info.IndexNumber.Value, SeasonPolicy.ParseOverrides(cfg.SeasonNameOverrides)); if (d is null) return Task.FromResult(result); result.Item = new Season { Name = d.Value.Name, IndexNumber = info.IndexNumber }; result.HasMetadata = true; return Task.FromResult(result); } public Task> GetSearchResults(SeasonInfo searchInfo, CancellationToken ct) => Task.FromResult>([]); public Task GetImageResponse(string url, CancellationToken ct) => _http.CreateClient(MediaBrowser.Common.Net.NamedClient.Default).GetAsync(url, ct); }