Browse Source

Merge pull request #5870 from cvium/fix-tmdbpersonprovider

(cherry picked from commit 6b103f7ab2db16f854cb01f97fb4e92d6bd33259)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
Bond-009 4 years ago
parent
commit
81f9bec101

+ 23 - 24
MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonImageProvider.cs

@@ -49,37 +49,36 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People
         public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
         {
             var person = (Person)item;
-            var personTmdbId = Convert.ToInt32(person.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture);
 
-            if (personTmdbId > 0)
+            if (!person.TryGetProviderId(MetadataProvider.Tmdb, out var personTmdbId))
             {
-                var personResult = await _tmdbClientManager.GetPersonAsync(personTmdbId, cancellationToken).ConfigureAwait(false);
-                if (personResult?.Images?.Profiles == null)
-                {
-                    return Enumerable.Empty<RemoteImageInfo>();
-                }
+                return Enumerable.Empty<RemoteImageInfo>();
+            }
 
-                var remoteImages = new List<RemoteImageInfo>();
-                var language = item.GetPreferredMetadataLanguage();
+            var personResult = await _tmdbClientManager.GetPersonAsync(int.Parse(personTmdbId, CultureInfo.InvariantCulture), cancellationToken).ConfigureAwait(false);
+            if (personResult?.Images?.Profiles == null)
+            {
+                return Enumerable.Empty<RemoteImageInfo>();
+            }
 
-                for (var i = 0; i < personResult.Images.Profiles.Count; i++)
-                {
-                    var image = personResult.Images.Profiles[i];
-                    remoteImages.Add(new RemoteImageInfo
-                    {
-                        ProviderName = Name,
-                        Type = ImageType.Primary,
-                        Width = image.Width,
-                        Height = image.Height,
-                        Language = TmdbUtils.AdjustImageLanguage(image.Iso_639_1, language),
-                        Url = _tmdbClientManager.GetProfileUrl(image.FilePath)
-                    });
-                }
+            var remoteImages = new RemoteImageInfo[personResult.Images.Profiles.Count];
+            var language = item.GetPreferredMetadataLanguage();
 
-                return remoteImages.OrderByLanguageDescending(language);
+            for (var i = 0; i < personResult.Images.Profiles.Count; i++)
+            {
+                var image = personResult.Images.Profiles[i];
+                remoteImages[i] = new RemoteImageInfo
+                {
+                    ProviderName = Name,
+                    Type = ImageType.Primary,
+                    Width = image.Width,
+                    Height = image.Height,
+                    Language = TmdbUtils.AdjustImageLanguage(image.Iso_639_1, language),
+                    Url = _tmdbClientManager.GetProfileUrl(image.FilePath)
+                };
             }
 
-            return Enumerable.Empty<RemoteImageInfo>();
+            return remoteImages.OrderByLanguageDescending(language);
         }
 
         public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)

+ 6 - 12
MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs

@@ -30,11 +30,9 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People
 
         public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(PersonLookupInfo searchInfo, CancellationToken cancellationToken)
         {
-            var personTmdbId = Convert.ToInt32(searchInfo.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture);
-
-            if (personTmdbId <= 0)
+            if (searchInfo.TryGetProviderId(MetadataProvider.Tmdb, out var personTmdbId))
             {
-                var personResult = await _tmdbClientManager.GetPersonAsync(personTmdbId, cancellationToken).ConfigureAwait(false);
+                var personResult = await _tmdbClientManager.GetPersonAsync(int.Parse(personTmdbId, CultureInfo.InvariantCulture), cancellationToken).ConfigureAwait(false);
 
                 if (personResult != null)
                 {
@@ -51,19 +49,15 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People
                     }
 
                     result.SetProviderId(MetadataProvider.Tmdb, personResult.Id.ToString(CultureInfo.InvariantCulture));
-                    result.SetProviderId(MetadataProvider.Imdb, personResult.ExternalIds.ImdbId);
+                    if (!string.IsNullOrEmpty(personResult.ExternalIds.ImdbId))
+                    {
+                        result.SetProviderId(MetadataProvider.Imdb, personResult.ExternalIds.ImdbId);
+                    }
 
                     return new[] { result };
                 }
             }
 
-            // TODO why? Because of the old rate limit?
-            if (searchInfo.IsAutomated)
-            {
-                // Don't hammer moviedb searching by name
-                return Enumerable.Empty<RemoteSearchResult>();
-            }
-
             var personSearchResult = await _tmdbClientManager.SearchPersonAsync(searchInfo.Name, cancellationToken).ConfigureAwait(false);
 
             var remoteSearchResults = new List<RemoteSearchResult>();