< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Plugins.Tmdb.BoxSets.TmdbBoxSetProvider
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/BoxSets/TmdbBoxSetProvider.cs
Line coverage
66%
Covered lines: 4
Uncovered lines: 2
Coverable lines: 6
Total lines: 143
Line coverage: 66.6%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Name()100%210%
GetImageResponse(...)100%210%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/BoxSets/TmdbBoxSetProvider.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Globalization;
 4using System.Linq;
 5using System.Net.Http;
 6using System.Threading;
 7using System.Threading.Tasks;
 8using MediaBrowser.Common.Net;
 9using MediaBrowser.Controller.Entities.Movies;
 10using MediaBrowser.Controller.Library;
 11using MediaBrowser.Controller.Providers;
 12using MediaBrowser.Model.Entities;
 13using MediaBrowser.Model.Providers;
 14
 15namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets
 16{
 17    /// <summary>
 18    /// BoxSet provider powered by TMDb.
 19    /// </summary>
 20    public class TmdbBoxSetProvider : IRemoteMetadataProvider<BoxSet, BoxSetInfo>
 21    {
 22        private readonly IHttpClientFactory _httpClientFactory;
 23        private readonly TmdbClientManager _tmdbClientManager;
 24        private readonly ILibraryManager _libraryManager;
 25
 26        /// <summary>
 27        /// Initializes a new instance of the <see cref="TmdbBoxSetProvider"/> class.
 28        /// </summary>
 29        /// <param name="libraryManager">The <see cref="ILibraryManager"/>.</param>
 30        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/>.</param>
 31        /// <param name="tmdbClientManager">The <see cref="TmdbClientManager"/>.</param>
 32        public TmdbBoxSetProvider(IHttpClientFactory httpClientFactory, TmdbClientManager tmdbClientManager, ILibraryMan
 33        {
 2234            _httpClientFactory = httpClientFactory;
 2235            _tmdbClientManager = tmdbClientManager;
 2236            _libraryManager = libraryManager;
 2237        }
 38
 39        /// <inheritdoc />
 040        public string Name => TmdbUtils.ProviderName;
 41
 42        /// <inheritdoc />
 43        public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(BoxSetInfo searchInfo, CancellationToken can
 44        {
 45            var tmdbId = Convert.ToInt32(searchInfo.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture);
 46            var language = searchInfo.MetadataLanguage;
 47
 48            if (tmdbId > 0)
 49            {
 50                var collection = await _tmdbClientManager.GetCollectionAsync(tmdbId, language, TmdbUtils.GetImageLanguag
 51
 52                if (collection is null)
 53                {
 54                    return Enumerable.Empty<RemoteSearchResult>();
 55                }
 56
 57                var result = new RemoteSearchResult
 58                {
 59                    Name = collection.Name,
 60                    SearchProviderName = Name
 61                };
 62
 63                if (collection.Images is not null)
 64                {
 65                    result.ImageUrl = _tmdbClientManager.GetPosterUrl(collection.PosterPath);
 66                }
 67
 68                result.SetProviderId(MetadataProvider.Tmdb, collection.Id.ToString(CultureInfo.InvariantCulture));
 69
 70                return new[] { result };
 71            }
 72
 73            var collectionSearchResults = await _tmdbClientManager.SearchCollectionAsync(searchInfo.Name, language, canc
 74
 75            var collections = new RemoteSearchResult[collectionSearchResults.Count];
 76            for (var i = 0; i < collectionSearchResults.Count; i++)
 77            {
 78                var result = collectionSearchResults[i];
 79                var collection = new RemoteSearchResult
 80                {
 81                    Name = result.Name,
 82                    SearchProviderName = Name,
 83                    ImageUrl = _tmdbClientManager.GetPosterUrl(result.PosterPath)
 84                };
 85                collection.SetProviderId(MetadataProvider.Tmdb, result.Id.ToString(CultureInfo.InvariantCulture));
 86
 87                collections[i] = collection;
 88            }
 89
 90            return collections;
 91        }
 92
 93        /// <inheritdoc />
 94        public async Task<MetadataResult<BoxSet>> GetMetadata(BoxSetInfo info, CancellationToken cancellationToken)
 95        {
 96            var tmdbId = Convert.ToInt32(info.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture);
 97            var language = info.MetadataLanguage;
 98            // We don't already have an Id, need to fetch it
 99            if (tmdbId <= 0)
 100            {
 101                // ParseName is required here.
 102                // Caller provides the filename with extension stripped and NOT the parsed filename
 103                var parsedName = _libraryManager.ParseName(info.Name);
 104                var cleanedName = TmdbUtils.CleanName(parsedName.Name);
 105                var searchResults = await _tmdbClientManager.SearchCollectionAsync(cleanedName, language, cancellationTo
 106
 107                if (searchResults is not null && searchResults.Count > 0)
 108                {
 109                    tmdbId = searchResults[0].Id;
 110                }
 111            }
 112
 113            var result = new MetadataResult<BoxSet>();
 114
 115            if (tmdbId > 0)
 116            {
 117                var collection = await _tmdbClientManager.GetCollectionAsync(tmdbId, language, TmdbUtils.GetImageLanguag
 118
 119                if (collection is not null)
 120                {
 121                    var item = new BoxSet
 122                    {
 123                        Name = collection.Name,
 124                        Overview = collection.Overview
 125                    };
 126
 127                    item.SetProviderId(MetadataProvider.Tmdb, collection.Id.ToString(CultureInfo.InvariantCulture));
 128
 129                    result.HasMetadata = true;
 130                    result.Item = item;
 131                }
 132            }
 133
 134            return result;
 135        }
 136
 137        /// <inheritdoc />
 138        public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
 139        {
 0140            return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
 141        }
 142    }
 143}