< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Plugins.Tmdb.TmdbExternalUrlProvider
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/TmdbExternalUrlProvider.cs
Line coverage
66%
Covered lines: 26
Uncovered lines: 13
Coverable lines: 39
Total lines: 110
Line coverage: 66.6%
Branch coverage
58%
Covered branches: 36
Total branches: 62
Branch coverage: 58%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 5/16/2026 - 12:15:55 AM Line coverage: 66.6% (22/33) Branch coverage: 68.5% (37/54) Total lines: 985/20/2026 - 12:15:44 AM Line coverage: 66.6% (22/33) Branch coverage: 62.9% (34/54) Total lines: 9810/29/2026 - 12:17:11 AM Line coverage: 66.6% (26/39) Branch coverage: 58% (36/62) Total lines: 110 5/16/2026 - 12:15:55 AM Line coverage: 66.6% (22/33) Branch coverage: 68.5% (37/54) Total lines: 985/20/2026 - 12:15:44 AM Line coverage: 66.6% (22/33) Branch coverage: 62.9% (34/54) Total lines: 9810/29/2026 - 12:17:11 AM Line coverage: 66.6% (26/39) Branch coverage: 58% (36/62) Total lines: 110

Coverage delta

Coverage delta 6 -6

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Name()100%11100%
GetExternalUrls()58.06%2166265.78%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/TmdbExternalUrlProvider.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using MediaBrowser.Controller.Entities;
 4using MediaBrowser.Controller.Entities.Movies;
 5using MediaBrowser.Controller.Entities.TV;
 6using MediaBrowser.Controller.Providers;
 7using MediaBrowser.Model.Entities;
 8using MediaBrowser.Providers.Plugins.Tmdb.TV;
 9using TMDbLib.Objects.TvShows;
 10
 11namespace MediaBrowser.Providers.Plugins.Tmdb;
 12
 13/// <summary>
 14/// External URLs for TMDb.
 15/// </summary>
 16public class TmdbExternalUrlProvider : IExternalUrlProvider
 17{
 18    /// <inheritdoc/>
 2719    public string Name => "TMDB";
 20
 21    /// <inheritdoc/>
 22    public IEnumerable<string> GetExternalUrls(BaseItem item)
 23    {
 24        switch (item)
 25        {
 26            case Series:
 227                if (item.TryGetProviderId(MetadataProvider.Tmdb, out var externalId))
 28                {
 129                    yield return TmdbUtils.BaseTmdbUrl + $"tv/{externalId}";
 30
 031                    if (item.TryGetProviderId(TmdbEpisodeGroupId.ProviderKey, out var episodeGroup))
 32                    {
 033                        yield return TmdbUtils.BaseTmdbUrl + $"tv/{externalId}/episode_group/{episodeGroup}";
 34                    }
 35                }
 36
 037                break;
 38            case Season season:
 339                if (season.Series?.TryGetProviderId(MetadataProvider.Tmdb, out var seriesExternalId) == true)
 40                {
 241                    var orderString = season.Series.DisplayOrder;
 242                    var seasonNumber = season.IndexNumber;
 243                    if (string.IsNullOrEmpty(orderString) && seasonNumber is not null)
 44                    {
 45                        // Default order is airdate
 146                        yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/season/{seasonNumber}";
 47                    }
 48
 149                    if (Enum.TryParse<TvGroupType>(season.Series.DisplayOrder, out var order))
 50                    {
 051                        if (order.Equals(TvGroupType.OriginalAirDate) && seasonNumber is not null)
 52                        {
 053                            yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/season/{seasonNumber}";
 54                        }
 55                    }
 56
 157                    if (season.Series?.TryGetProviderId(TmdbEpisodeGroupId.ProviderKey, out var episodeGroup) == true
 158                        && season.TryGetProviderId(TmdbEpisodeGroupId.ProviderKey, out var group))
 59                    {
 060                        yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/episode_group/{episodeGroup}/group/
 61                    }
 162                }
 63
 164                break;
 65            case Episode episode:
 266                if (episode.Series?.TryGetProviderId(MetadataProvider.Tmdb, out seriesExternalId) == true)
 67                {
 168                    var orderString = episode.Series.DisplayOrder;
 169                    var seasonNumber = episode.Season?.IndexNumber;
 170                    var episodeNumber = episode.IndexNumber;
 171                    if (string.IsNullOrEmpty(orderString) && seasonNumber is not null && episodeNumber is not null)
 72                    {
 73                        // Default order is airdate
 174                        yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/season/{seasonNumber}/episode/{epis
 75                    }
 76
 077                    if (Enum.TryParse<TvGroupType>(orderString, out var order))
 78                    {
 079                        if (order.Equals(TvGroupType.OriginalAirDate) && seasonNumber is not null && episodeNumber is no
 80                        {
 081                            yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/season/{seasonNumber}/episode/{
 82                        }
 83                    }
 084                }
 85
 086                break;
 87            case Movie:
 288                if (item.TryGetProviderId(MetadataProvider.Tmdb, out externalId))
 89                {
 190                    yield return TmdbUtils.BaseTmdbUrl + $"movie/{externalId}";
 91                }
 92
 093                break;
 94            case Person:
 295                if (item.TryGetProviderId(MetadataProvider.Tmdb, out externalId))
 96                {
 197                    yield return TmdbUtils.BaseTmdbUrl + $"person/{externalId}";
 98                }
 99
 0100                break;
 101            case BoxSet:
 2102                if (item.TryGetProviderId(MetadataProvider.Tmdb, out externalId))
 103                {
 1104                    yield return TmdbUtils.BaseTmdbUrl + $"collection/{externalId}";
 105                }
 106
 107                break;
 108        }
 13109    }
 110}

Methods/Properties

get_Name()
GetExternalUrls()