< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Plugins.Tmdb.TV.TmdbSeasonImageProvider
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonImageProvider.cs
Line coverage
17%
Covered lines: 4
Uncovered lines: 19
Coverable lines: 23
Total lines: 87
Line coverage: 17.3%
Branch coverage
0%
Covered branches: 0
Total branches: 16
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 5/11/2026 - 12:15:59 AM Line coverage: 17.3% (4/23) Branch coverage: 0% (0/16) Total lines: 8910/29/2026 - 12:17:11 AM Line coverage: 17.3% (4/23) Branch coverage: 0% (0/16) Total lines: 87 5/11/2026 - 12:15:59 AM Line coverage: 17.3% (4/23) Branch coverage: 0% (0/16) Total lines: 8910/29/2026 - 12:17:11 AM Line coverage: 17.3% (4/23) Branch coverage: 0% (0/16) Total lines: 87

Coverage delta

Coverage delta 1 -1

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Order()100%210%
get_Name()100%210%
Supports(...)100%11100%
GetSupportedImages()100%210%
GetImages()0%272160%
GetImageResponse(...)100%210%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonImageProvider.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using System.Net.Http;
 4using System.Threading;
 5using System.Threading.Tasks;
 6using MediaBrowser.Common.Net;
 7using MediaBrowser.Controller.Entities;
 8using MediaBrowser.Controller.Entities.TV;
 9using MediaBrowser.Controller.Providers;
 10using MediaBrowser.Model.Entities;
 11using MediaBrowser.Model.Providers;
 12
 13namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 14{
 15    /// <summary>
 16    /// TV season image provider powered by TheMovieDb.
 17    /// </summary>
 18    public class TmdbSeasonImageProvider : IRemoteImageProvider, IHasOrder
 19    {
 20        private readonly IHttpClientFactory _httpClientFactory;
 21        private readonly TmdbClientManager _tmdbClientManager;
 22
 23        /// <summary>
 24        /// Initializes a new instance of the <see cref="TmdbSeasonImageProvider"/> class.
 25        /// </summary>
 26        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/>.</param>
 27        /// <param name="tmdbClientManager">The <see cref="TmdbClientManager"/>.</param>
 28        public TmdbSeasonImageProvider(IHttpClientFactory httpClientFactory, TmdbClientManager tmdbClientManager)
 29        {
 2730            _httpClientFactory = httpClientFactory;
 2731            _tmdbClientManager = tmdbClientManager;
 2732        }
 33
 34        /// <inheritdoc/>
 035        public int Order => 1;
 36
 37        /// <inheritdoc/>
 038        public string Name => TmdbUtils.ProviderName;
 39
 40        /// <inheritdoc />
 41        public bool Supports(BaseItem item)
 42        {
 10743            return item is Season;
 44        }
 45
 46        /// <inheritdoc />
 47        public IEnumerable<ImageType> GetSupportedImages(BaseItem item)
 48        {
 049            yield return ImageType.Primary;
 050        }
 51
 52        /// <inheritdoc />
 53        public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
 54        {
 055            var season = (Season)item;
 056            var series = season?.Series;
 57
 058            var seriesTmdbId = 0;
 59
 060            if (season?.IndexNumber is null || series?.TryGetTmdbId(out seriesTmdbId) != true)
 61            {
 062                return Enumerable.Empty<RemoteImageInfo>();
 63            }
 64
 065            var language = item.GetPreferredMetadataLanguage();
 66
 67            // TODO use image languages if All Languages isn't toggled, but there's currently no way to get that value i
 068            var seasonResult = await _tmdbClientManager
 069                .GetSeasonAsync(seriesTmdbId, season.IndexNumber.Value, null, null, null, cancellationToken)
 070                .ConfigureAwait(false);
 71
 072            var posters = seasonResult?.Images?.Posters;
 073            if (posters is null)
 74            {
 075                return Enumerable.Empty<RemoteImageInfo>();
 76            }
 77
 078            return _tmdbClientManager.ConvertPostersToRemoteImageInfo(posters, language);
 079        }
 80
 81        /// <inheritdoc />
 82        public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
 83        {
 084            return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
 85        }
 86    }
 87}