| 
					
				 | 
			
			
				@@ -26,11 +26,6 @@ namespace MediaBrowser.Providers.Tmdb.TV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public class TmdbSeriesProvider : IRemoteMetadataProvider<Series, SeriesInfo>, IHasOrder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private const string GetTvInfo3 = TmdbUtils.BaseTmdbApiUrl + @"3/tv/{0}?api_key={1}&append_to_response=credits,images,keywords,external_ids,videos,content_ratings"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private readonly CultureInfo _usCulture = new CultureInfo("en-US"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        internal static TmdbSeriesProvider Current { get; private set; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly IJsonSerializer _jsonSerializer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly IFileSystem _fileSystem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly IServerConfigurationManager _configurationManager; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -39,6 +34,11 @@ namespace MediaBrowser.Providers.Tmdb.TV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly IHttpClient _httpClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly ILibraryManager _libraryManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private readonly CultureInfo _usCulture = new CultureInfo("en-US"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private const string GetTvInfo3 = TmdbUtils.BaseTmdbApiUrl + @"3/tv/{0}?api_key={1}&append_to_response=credits,images,keywords,external_ids,videos,content_ratings"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        internal static TmdbSeriesProvider Current { get; private set; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public TmdbSeriesProvider( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             IJsonSerializer jsonSerializer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             IFileSystem fileSystem, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -217,10 +217,9 @@ namespace MediaBrowser.Providers.Tmdb.TV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var series = seriesResult.Item; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             series.Name = seriesInfo.Name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            series.OriginalTitle = seriesInfo.Original_Name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             series.SetProviderId(MetadataProviders.Tmdb, seriesInfo.Id.ToString(_usCulture)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //series.VoteCount = seriesInfo.vote_count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             string voteAvg = seriesInfo.Vote_Average.ToString(CultureInfo.InvariantCulture); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (float.TryParse(voteAvg, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out float rating)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -240,7 +239,7 @@ namespace MediaBrowser.Providers.Tmdb.TV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 series.Genres = seriesInfo.Genres.Select(i => i.Name).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //series.HomePageUrl = seriesInfo.homepage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            series.HomePageUrl = seriesInfo.Homepage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             series.RunTimeTicks = seriesInfo.Episode_Run_Time.Select(i => TimeSpan.FromMinutes(i).Ticks).FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -308,29 +307,50 @@ namespace MediaBrowser.Providers.Tmdb.TV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             seriesResult.ResetPeople(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var tmdbImageUrl = settings.images.GetImageUrl("original"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (seriesInfo.Credits != null && seriesInfo.Credits.Cast != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (seriesInfo.Credits != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                foreach (var actor in seriesInfo.Credits.Cast.OrderBy(a => a.Order)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (seriesInfo.Credits.Cast != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var personInfo = new PersonInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    foreach (var actor in seriesInfo.Credits.Cast.OrderBy(a => a.Order)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Name = actor.Name.Trim(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Role = actor.Character, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Type = PersonType.Actor, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        SortOrder = actor.Order 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var personInfo = new PersonInfo {Name = actor.Name.Trim(), Role = actor.Character, Type = PersonType.Actor, SortOrder = actor.Order}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (!string.IsNullOrWhiteSpace(actor.Profile_Path)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        personInfo.ImageUrl = tmdbImageUrl + actor.Profile_Path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (!string.IsNullOrWhiteSpace(actor.Profile_Path)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            personInfo.ImageUrl = tmdbImageUrl + actor.Profile_Path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (actor.Id > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            personInfo.SetProviderId(MetadataProviders.Tmdb, actor.Id.ToString(CultureInfo.InvariantCulture)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        seriesResult.AddPerson(personInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (actor.Id > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (seriesInfo.Credits.Crew != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var keepTypes = new[] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        personInfo.SetProviderId(MetadataProviders.Tmdb, actor.Id.ToString(CultureInfo.InvariantCulture)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        PersonType.Director, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        PersonType.Writer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        PersonType.Producer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    foreach (var person in seriesInfo.Credits.Crew) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        // Normalize this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var type = TmdbUtils.MapCrewToPersonType(person); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    seriesResult.AddPerson(personInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (!keepTypes.Contains(type, StringComparer.OrdinalIgnoreCase) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            !keepTypes.Contains(person.Job ?? string.Empty, StringComparer.OrdinalIgnoreCase)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        seriesResult.AddPerson(new PersonInfo { Name = person.Name.Trim(), Role = person.Job, Type = type }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 |