mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	Merge remote-tracking branch 'upstream/master' into ilogger
This commit is contained in:
		
						commit
						0982b73c11
					
				@ -241,11 +241,13 @@ namespace MediaBrowser.Model.Configuration
 | 
				
			|||||||
        public bool EnableNewOmdbSupport { get; set; }
 | 
					        public bool EnableNewOmdbSupport { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string[] RemoteIPFilter { get; set; }
 | 
					        public string[] RemoteIPFilter { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool IsRemoteIPFilterBlacklist { get; set; }
 | 
					        public bool IsRemoteIPFilterBlacklist { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public int ImageExtractionTimeoutMs { get; set; }
 | 
					        public int ImageExtractionTimeoutMs { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public PathSubstitution[] PathSubstitutions { get; set; }
 | 
					        public PathSubstitution[] PathSubstitutions { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool EnableSimpleArtistDetection { get; set; }
 | 
					        public bool EnableSimpleArtistDetection { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string[] UninstalledPlugins { get; set; }
 | 
					        public string[] UninstalledPlugins { get; set; }
 | 
				
			||||||
@ -355,6 +357,7 @@ namespace MediaBrowser.Model.Configuration
 | 
				
			|||||||
    public class PathSubstitution
 | 
					    public class PathSubstitution
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public string From { get; set; }
 | 
					        public string From { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string To { get; set; }
 | 
					        public string To { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					using MediaBrowser.Model.Plugins;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class PluginConfiguration : BasePluginConfiguration
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public bool CastAndCrew { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <title>OMDb</title>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					    <div data-role="page" class="page type-interior pluginConfigurationPage configPage" data-require="emby-input,emby-button,emby-checkbox">
 | 
				
			||||||
 | 
					        <div data-role="content">
 | 
				
			||||||
 | 
					            <div class="content-primary">
 | 
				
			||||||
 | 
					                <form class="configForm">
 | 
				
			||||||
 | 
					                    <label class="checkboxContainer">
 | 
				
			||||||
 | 
					                        <input is="emby-checkbox" type="checkbox" id="castAndCrew" />
 | 
				
			||||||
 | 
					                        <span>Collect information about the cast and other crew members from OMDb.</span>
 | 
				
			||||||
 | 
					                    </label>
 | 
				
			||||||
 | 
					                    <br />
 | 
				
			||||||
 | 
					                    <div>
 | 
				
			||||||
 | 
					                        <button is="emby-button" type="submit" class="raised button-submit block"><span>Save</span></button>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </form>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <script type="text/javascript">
 | 
				
			||||||
 | 
					            var PluginConfig = {
 | 
				
			||||||
 | 
					                pluginId: "a628c0da-fac5-4c7e-9d1a-7134223f14c8"
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $('.configPage').on('pageshow', function () {
 | 
				
			||||||
 | 
					                Dashboard.showLoadingMsg();
 | 
				
			||||||
 | 
					                ApiClient.getPluginConfiguration(PluginConfig.pluginId).then(function (config) {
 | 
				
			||||||
 | 
					                    $('#castAndCrew').checked = config.CastAndCrew;
 | 
				
			||||||
 | 
					                    Dashboard.hideLoadingMsg();
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $('.configForm').on('submit', function (e) {
 | 
				
			||||||
 | 
					                Dashboard.showLoadingMsg();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var form = this;
 | 
				
			||||||
 | 
					                ApiClient.getPluginConfiguration(PluginConfig.pluginId).then(function (config) {
 | 
				
			||||||
 | 
					                    config.CastAndCrew = $('#castAndCrew', form).checked;
 | 
				
			||||||
 | 
					                    ApiClient.updatePluginConfiguration(PluginConfig.pluginId, config).then(Dashboard.processPluginConfigurationUpdateResult);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        </script>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
@ -92,6 +92,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            return item is Movie || item is Trailer || item is Episode;
 | 
					            return item is Movie || item is Trailer || item is Episode;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // After other internet providers, because they're better
 | 
					        // After other internet providers, because they're better
 | 
				
			||||||
        // But before fallback providers like screengrab
 | 
					        // But before fallback providers like screengrab
 | 
				
			||||||
        public int Order => 90;
 | 
					        public int Order => 90;
 | 
				
			||||||
 | 
				
			|||||||
@ -103,6 +103,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    urlQuery += "&t=" + WebUtility.UrlEncode(name);
 | 
					                    urlQuery += "&t=" + WebUtility.UrlEncode(name);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                urlQuery += "&type=" + type;
 | 
					                urlQuery += "&type=" + type;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
@ -117,6 +118,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    urlQuery += string.Format(CultureInfo.InvariantCulture, "&Episode={0}", searchInfo.IndexNumber);
 | 
					                    urlQuery += string.Format(CultureInfo.InvariantCulture, "&Episode={0}", searchInfo.IndexNumber);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (searchInfo.ParentIndexNumber.HasValue)
 | 
					                if (searchInfo.ParentIndexNumber.HasValue)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    urlQuery += string.Format(CultureInfo.InvariantCulture, "&Season={0}", searchInfo.ParentIndexNumber);
 | 
					                    urlQuery += string.Format(CultureInfo.InvariantCulture, "&Season={0}", searchInfo.ParentIndexNumber);
 | 
				
			||||||
 | 
				
			|||||||
@ -87,10 +87,10 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
                item.CommunityRating = imdbRating;
 | 
					                item.CommunityRating = imdbRating;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //if (!string.IsNullOrEmpty(result.Website))
 | 
					            if (!string.IsNullOrEmpty(result.Website))
 | 
				
			||||||
            //{
 | 
					            {
 | 
				
			||||||
            //    item.HomePageUrl = result.Website;
 | 
					                item.HomePageUrl = result.Website;
 | 
				
			||||||
            //}
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!string.IsNullOrWhiteSpace(result.imdbID))
 | 
					            if (!string.IsNullOrWhiteSpace(result.imdbID))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -121,7 +121,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (!string.IsNullOrWhiteSpace(episodeImdbId))
 | 
					            if (!string.IsNullOrWhiteSpace(episodeImdbId))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                foreach (var episode in (seasonResult.Episodes ?? new RootObject[] { }))
 | 
					                foreach (var episode in seasonResult.Episodes)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (string.Equals(episodeImdbId, episode.imdbID, StringComparison.OrdinalIgnoreCase))
 | 
					                    if (string.Equals(episodeImdbId, episode.imdbID, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@ -134,7 +134,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
            // finally, search by numbers
 | 
					            // finally, search by numbers
 | 
				
			||||||
            if (result == null)
 | 
					            if (result == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                foreach (var episode in (seasonResult.Episodes ?? new RootObject[] { }))
 | 
					                foreach (var episode in seasonResult.Episodes)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (episode.Episode == episodeNumber)
 | 
					                    if (episode.Episode == episodeNumber)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@ -188,10 +188,10 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
                item.CommunityRating = imdbRating;
 | 
					                item.CommunityRating = imdbRating;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //if (!string.IsNullOrEmpty(result.Website))
 | 
					            if (!string.IsNullOrEmpty(result.Website))
 | 
				
			||||||
            //{
 | 
					            {
 | 
				
			||||||
            //    item.HomePageUrl = result.Website;
 | 
					                item.HomePageUrl = result.Website;
 | 
				
			||||||
            //}
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!string.IsNullOrWhiteSpace(result.imdbID))
 | 
					            if (!string.IsNullOrWhiteSpace(result.imdbID))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -263,6 +263,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                return url;
 | 
					                return url;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return url + "&" + query;
 | 
					            return url + "&" + query;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -386,7 +387,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var isConfiguredForEnglish = IsConfiguredForEnglish(item) || _configurationManager.Configuration.EnableNewOmdbSupport;
 | 
					            var isConfiguredForEnglish = IsConfiguredForEnglish(item) || _configurationManager.Configuration.EnableNewOmdbSupport;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Grab series genres because imdb data is better than tvdb. Leave movies alone
 | 
					            // Grab series genres because IMDb data is better than TVDB. Leave movies alone
 | 
				
			||||||
            // But only do it if english is the preferred language because this data will not be localized
 | 
					            // But only do it if english is the preferred language because this data will not be localized
 | 
				
			||||||
            if (isConfiguredForEnglish && !string.IsNullOrWhiteSpace(result.Genre))
 | 
					            if (isConfiguredForEnglish && !string.IsNullOrWhiteSpace(result.Genre))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -407,45 +408,50 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
                item.Overview = result.Plot;
 | 
					                item.Overview = result.Plot;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //if (!string.IsNullOrWhiteSpace(result.Director))
 | 
					            if (!Plugin.Instance.Configuration.CastAndCrew)
 | 
				
			||||||
            //{
 | 
					            {
 | 
				
			||||||
            //    var person = new PersonInfo
 | 
					                return;
 | 
				
			||||||
            //    {
 | 
					            }
 | 
				
			||||||
            //        Name = result.Director.Trim(),
 | 
					 | 
				
			||||||
            //        Type = PersonType.Director
 | 
					 | 
				
			||||||
            //    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //    itemResult.AddPerson(person);
 | 
					            if (!string.IsNullOrWhiteSpace(result.Director))
 | 
				
			||||||
            //}
 | 
					            {
 | 
				
			||||||
 | 
					                var person = new PersonInfo
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Name = result.Director.Trim(),
 | 
				
			||||||
 | 
					                    Type = PersonType.Director
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //if (!string.IsNullOrWhiteSpace(result.Writer))
 | 
					                itemResult.AddPerson(person);
 | 
				
			||||||
            //{
 | 
					            }
 | 
				
			||||||
            //    var person = new PersonInfo
 | 
					 | 
				
			||||||
            //    {
 | 
					 | 
				
			||||||
            //        Name = result.Director.Trim(),
 | 
					 | 
				
			||||||
            //        Type = PersonType.Writer
 | 
					 | 
				
			||||||
            //    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //    itemResult.AddPerson(person);
 | 
					            if (!string.IsNullOrWhiteSpace(result.Writer))
 | 
				
			||||||
            //}
 | 
					            {
 | 
				
			||||||
 | 
					                var person = new PersonInfo
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Name = result.Director.Trim(),
 | 
				
			||||||
 | 
					                    Type = PersonType.Writer
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //if (!string.IsNullOrWhiteSpace(result.Actors))
 | 
					                itemResult.AddPerson(person);
 | 
				
			||||||
            //{
 | 
					            }
 | 
				
			||||||
            //    var actorList = result.Actors.Split(',');
 | 
					 | 
				
			||||||
            //    foreach (var actor in actorList)
 | 
					 | 
				
			||||||
            //    {
 | 
					 | 
				
			||||||
            //        if (!string.IsNullOrWhiteSpace(actor))
 | 
					 | 
				
			||||||
            //        {
 | 
					 | 
				
			||||||
            //            var person = new PersonInfo
 | 
					 | 
				
			||||||
            //            {
 | 
					 | 
				
			||||||
            //                Name = actor.Trim(),
 | 
					 | 
				
			||||||
            //                Type = PersonType.Actor
 | 
					 | 
				
			||||||
            //            };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //            itemResult.AddPerson(person);
 | 
					            if (!string.IsNullOrWhiteSpace(result.Actors))
 | 
				
			||||||
            //        }
 | 
					            {
 | 
				
			||||||
            //    }
 | 
					                var actorList = result.Actors.Split(',');
 | 
				
			||||||
            //}
 | 
					                foreach (var actor in actorList)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (!string.IsNullOrWhiteSpace(actor))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        var person = new PersonInfo
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Name = actor.Trim(),
 | 
				
			||||||
 | 
					                            Type = PersonType.Actor
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        itemResult.AddPerson(person);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private bool IsConfiguredForEnglish(BaseItem item)
 | 
					        private bool IsConfiguredForEnglish(BaseItem item)
 | 
				
			||||||
@ -459,40 +465,70 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
        internal class SeasonRootObject
 | 
					        internal class SeasonRootObject
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public string Title { get; set; }
 | 
					            public string Title { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string seriesID { get; set; }
 | 
					            public string seriesID { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public int Season { get; set; }
 | 
					            public int Season { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public int? totalSeasons { get; set; }
 | 
					            public int? totalSeasons { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public RootObject[] Episodes { get; set; }
 | 
					            public RootObject[] Episodes { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Response { get; set; }
 | 
					            public string Response { get; set; }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        internal class RootObject
 | 
					        internal class RootObject
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public string Title { get; set; }
 | 
					            public string Title { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Year { get; set; }
 | 
					            public string Year { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Rated { get; set; }
 | 
					            public string Rated { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Released { get; set; }
 | 
					            public string Released { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Runtime { get; set; }
 | 
					            public string Runtime { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Genre { get; set; }
 | 
					            public string Genre { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Director { get; set; }
 | 
					            public string Director { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Writer { get; set; }
 | 
					            public string Writer { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Actors { get; set; }
 | 
					            public string Actors { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Plot { get; set; }
 | 
					            public string Plot { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Language { get; set; }
 | 
					            public string Language { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Country { get; set; }
 | 
					            public string Country { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Awards { get; set; }
 | 
					            public string Awards { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Poster { get; set; }
 | 
					            public string Poster { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public List<OmdbRating> Ratings { get; set; }
 | 
					            public List<OmdbRating> Ratings { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Metascore { get; set; }
 | 
					            public string Metascore { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string imdbRating { get; set; }
 | 
					            public string imdbRating { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string imdbVotes { get; set; }
 | 
					            public string imdbVotes { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string imdbID { get; set; }
 | 
					            public string imdbID { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Type { get; set; }
 | 
					            public string Type { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string DVD { get; set; }
 | 
					            public string DVD { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string BoxOffice { get; set; }
 | 
					            public string BoxOffice { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Production { get; set; }
 | 
					            public string Production { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Website { get; set; }
 | 
					            public string Website { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Response { get; set; }
 | 
					            public string Response { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public int Episode { get; set; }
 | 
					            public int Episode { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public float? GetRottenTomatoScore()
 | 
					            public float? GetRottenTomatoScore()
 | 
				
			||||||
@ -509,12 +545,15 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			|||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return null;
 | 
					                return null;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class OmdbRating
 | 
					        public class OmdbRating
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public string Source { get; set; }
 | 
					            public string Source { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public string Value { get; set; }
 | 
					            public string Value { get; set; }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										35
									
								
								MediaBrowser.Providers/Plugins/Omdb/Plugin.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								MediaBrowser.Providers/Plugins/Omdb/Plugin.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using MediaBrowser.Common.Configuration;
 | 
				
			||||||
 | 
					using MediaBrowser.Common.Plugins;
 | 
				
			||||||
 | 
					using MediaBrowser.Model.Plugins;
 | 
				
			||||||
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace MediaBrowser.Providers.Plugins.Omdb
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static Plugin Instance { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override Guid Id => new Guid("a628c0da-fac5-4c7e-9d1a-7134223f14c8");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override string Name => "OMDb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override string Description => "Get metadata for movies and other video content from OMDb.";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
 | 
				
			||||||
 | 
					            : base(applicationPaths, xmlSerializer)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Instance = this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public IEnumerable<PluginPageInfo> GetPages()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            yield return new PluginPageInfo
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Name = Name,
 | 
				
			||||||
 | 
					                EmbeddedResourcePath = GetType().Namespace + ".Configuration.config.html"
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					using MediaBrowser.Model.Plugins;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class PluginConfiguration : BasePluginConfiguration
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								MediaBrowser.Providers/Plugins/TheTvdb/Plugin.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								MediaBrowser.Providers/Plugins/TheTvdb/Plugin.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using MediaBrowser.Common.Configuration;
 | 
				
			||||||
 | 
					using MediaBrowser.Common.Plugins;
 | 
				
			||||||
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class Plugin : BasePlugin<PluginConfiguration>
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static Plugin Instance { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override Guid Id => new Guid("a677c0da-fac5-4cde-941a-7134223f14c8");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override string Name => "TheTVDB";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override string Description => "Get metadata for movies and other video content from TheTVDB.";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
 | 
				
			||||||
 | 
					            : base(applicationPaths, xmlSerializer)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Instance = this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -120,6 +120,7 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
            var cacheKey = GenerateKey("series", zap2ItId, language);
 | 
					            var cacheKey = GenerateKey("series", zap2ItId, language);
 | 
				
			||||||
            return TryGetValue(cacheKey, language, () => TvDbClient.Search.SearchSeriesByZap2ItIdAsync(zap2ItId, cancellationToken));
 | 
					            return TryGetValue(cacheKey, language, () => TvDbClient.Search.SearchSeriesByZap2ItIdAsync(zap2ItId, cancellationToken));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Task<TvDbResponse<Actor[]>> GetActorsAsync(
 | 
					        public Task<TvDbResponse<Actor[]>> GetActorsAsync(
 | 
				
			||||||
            int tvdbId,
 | 
					            int tvdbId,
 | 
				
			||||||
            string language,
 | 
					            string language,
 | 
				
			||||||
 | 
				
			|||||||
@ -14,9 +14,8 @@ using TvDbSharper.Dto;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
					namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// Class RemoteEpisodeProvider
 | 
					    /// Class RemoteEpisodeProvider.
 | 
				
			||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
    public class TvdbEpisodeProvider : IRemoteMetadataProvider<Episode, EpisodeInfo>, IHasOrder
 | 
					    public class TvdbEpisodeProvider : IRemoteMetadataProvider<Episode, EpisodeInfo>, IHasOrder
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -139,7 +138,6 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
                    Name = episode.EpisodeName,
 | 
					                    Name = episode.EpisodeName,
 | 
				
			||||||
                    Overview = episode.Overview,
 | 
					                    Overview = episode.Overview,
 | 
				
			||||||
                    CommunityRating = (float?)episode.SiteRating,
 | 
					                    CommunityRating = (float?)episode.SiteRating,
 | 
				
			||||||
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            result.ResetPeople();
 | 
					            result.ResetPeople();
 | 
				
			||||||
 | 
				
			|||||||
@ -57,7 +57,6 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    EnableImages = false
 | 
					                    EnableImages = false
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					 | 
				
			||||||
            }).Cast<Series>()
 | 
					            }).Cast<Series>()
 | 
				
			||||||
                .Where(i => TvdbSeriesProvider.IsValidSeries(i.ProviderIds))
 | 
					                .Where(i => TvdbSeriesProvider.IsValidSeries(i.ProviderIds))
 | 
				
			||||||
                .ToList();
 | 
					                .ToList();
 | 
				
			||||||
 | 
				
			|||||||
@ -55,7 +55,7 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (series == null || !season.IndexNumber.HasValue || !TvdbSeriesProvider.IsValidSeries(series.ProviderIds))
 | 
					            if (series == null || !season.IndexNumber.HasValue || !TvdbSeriesProvider.IsValidSeries(series.ProviderIds))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return new RemoteImageInfo[] { };
 | 
					                return Array.Empty<RemoteImageInfo>();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var tvdbId = Convert.ToInt32(series.GetProviderId(MetadataProviders.Tvdb));
 | 
					            var tvdbId = Convert.ToInt32(series.GetProviderId(MetadataProviders.Tvdb));
 | 
				
			||||||
@ -113,8 +113,8 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
                imageInfo.Type = TvdbUtils.GetImageTypeFromKeyType(image.KeyType);
 | 
					                imageInfo.Type = TvdbUtils.GetImageTypeFromKeyType(image.KeyType);
 | 
				
			||||||
                list.Add(imageInfo);
 | 
					                list.Add(imageInfo);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            var isLanguageEn = string.Equals(preferredLanguage, "en", StringComparison.OrdinalIgnoreCase);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var isLanguageEn = string.Equals(preferredLanguage, "en", StringComparison.OrdinalIgnoreCase);
 | 
				
			||||||
            return list.OrderByDescending(i =>
 | 
					            return list.OrderByDescending(i =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (string.Equals(preferredLanguage, i.Language, StringComparison.OrdinalIgnoreCase))
 | 
					                    if (string.Equals(preferredLanguage, i.Language, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
 | 
				
			|||||||
@ -79,6 +79,7 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
                        tvdbId);
 | 
					                        tvdbId);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return remoteImages;
 | 
					            return remoteImages;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -110,8 +111,8 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
                imageInfo.Type = TvdbUtils.GetImageTypeFromKeyType(image.KeyType);
 | 
					                imageInfo.Type = TvdbUtils.GetImageTypeFromKeyType(image.KeyType);
 | 
				
			||||||
                list.Add(imageInfo);
 | 
					                list.Add(imageInfo);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            var isLanguageEn = string.Equals(preferredLanguage, "en", StringComparison.OrdinalIgnoreCase);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var isLanguageEn = string.Equals(preferredLanguage, "en", StringComparison.OrdinalIgnoreCase);
 | 
				
			||||||
            return list.OrderByDescending(i =>
 | 
					            return list.OrderByDescending(i =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (string.Equals(preferredLanguage, i.Language, StringComparison.OrdinalIgnoreCase))
 | 
					                    if (string.Equals(preferredLanguage, i.Language, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
 | 
				
			|||||||
@ -22,6 +22,7 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
    public class TvdbSeriesProvider : IRemoteMetadataProvider<Series, SeriesInfo>, IHasOrder
 | 
					    public class TvdbSeriesProvider : IRemoteMetadataProvider<Series, SeriesInfo>, IHasOrder
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        internal static TvdbSeriesProvider Current { get; private set; }
 | 
					        internal static TvdbSeriesProvider Current { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private readonly IHttpClient _httpClient;
 | 
					        private readonly IHttpClient _httpClient;
 | 
				
			||||||
        private readonly ILogger<TvdbSeriesProvider> _logger;
 | 
					        private readonly ILogger<TvdbSeriesProvider> _logger;
 | 
				
			||||||
        private readonly ILibraryManager _libraryManager;
 | 
					        private readonly ILibraryManager _libraryManager;
 | 
				
			||||||
@ -145,7 +146,6 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        private async Task<string> GetSeriesByRemoteId(string id, string idType, string language, CancellationToken cancellationToken)
 | 
					        private async Task<string> GetSeriesByRemoteId(string id, string idType, string language, CancellationToken cancellationToken)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					 | 
				
			||||||
            TvDbResponse<SeriesSearchResult[]> result = null;
 | 
					            TvDbResponse<SeriesSearchResult[]> result = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
@ -249,6 +249,7 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
                    ImageUrl = TvdbUtils.BannerUrl + seriesSearchResult.Banner
 | 
					                    ImageUrl = TvdbUtils.BannerUrl + seriesSearchResult.Banner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                try
 | 
					                try
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var seriesSesult =
 | 
					                    var seriesSesult =
 | 
				
			||||||
@ -274,11 +275,12 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// The remove
 | 
					        /// The remove.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        const string remove = "\"'!`?";
 | 
					        const string remove = "\"'!`?";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// The spacers
 | 
					        /// The spacers.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        const string spacers = "/,.:;\\(){}[]+-_=–*";  // (there are two types of dashes, short and long)
 | 
					        const string spacers = "/,.:;\\(){}[]+-_=–*";  // (there are two types of dashes, short and long)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -315,8 +317,8 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
 | 
				
			|||||||
                    sb.Append(c);
 | 
					                    sb.Append(c);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sb.Replace(", the", string.Empty).Replace("the ", " ").Replace(" the ", " ");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            sb.Replace(", the", string.Empty).Replace("the ", " ").Replace(" the ", " ");
 | 
				
			||||||
            return Regex.Replace(sb.ToString().Trim(), @"\s+", " ");
 | 
					            return Regex.Replace(sb.ToString().Trim(), @"\s+", " ");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@ using MediaBrowser.Controller.Entities.Movies;
 | 
				
			|||||||
using MediaBrowser.Controller.Providers;
 | 
					using MediaBrowser.Controller.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbBoxSetExternalId : IExternalId
 | 
					    public class TmdbBoxSetExternalId : IExternalId
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -10,11 +10,11 @@ using MediaBrowser.Controller.Providers;
 | 
				
			|||||||
using MediaBrowser.Model.Dto;
 | 
					using MediaBrowser.Model.Dto;
 | 
				
			||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.Collections;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.Collections;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbBoxSetImageProvider : IRemoteImageProvider, IHasOrder
 | 
					    public class TmdbBoxSetImageProvider : IRemoteImageProvider, IHasOrder
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -105,6 +105,7 @@ namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    return 3;
 | 
					                    return 3;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!isLanguageEn)
 | 
					                if (!isLanguageEn)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase))
 | 
					                    if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
@ -112,10 +113,12 @@ namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
				
			|||||||
                        return 2;
 | 
					                        return 2;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (string.IsNullOrEmpty(i.Language))
 | 
					                if (string.IsNullOrEmpty(i.Language))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    return isLanguageEn ? 3 : 2;
 | 
					                    return isLanguageEn ? 3 : 2;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return 0;
 | 
					                return 0;
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
                .ThenByDescending(i => i.CommunityRating ?? 0)
 | 
					                .ThenByDescending(i => i.CommunityRating ?? 0)
 | 
				
			||||||
@ -16,12 +16,12 @@ using MediaBrowser.Model.Globalization;
 | 
				
			|||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.Collections;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.Collections;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbBoxSetProvider : IRemoteMetadataProvider<BoxSet, BoxSetInfo>
 | 
					    public class TmdbBoxSetProvider : IRemoteMetadataProvider<BoxSet, BoxSetInfo>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -78,9 +78,7 @@ namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
				
			|||||||
                var result = new RemoteSearchResult
 | 
					                var result = new RemoteSearchResult
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    Name = info.Name,
 | 
					                    Name = info.Name,
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    SearchProviderName = Name,
 | 
					                    SearchProviderName = Name,
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    ImageUrl = images.Count == 0 ? null : (tmdbImageUrl + images[0].File_Path)
 | 
					                    ImageUrl = images.Count == 0 ? null : (tmdbImageUrl + images[0].File_Path)
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -191,7 +189,6 @@ namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
				
			|||||||
                Url = url,
 | 
					                Url = url,
 | 
				
			||||||
                CancellationToken = cancellationToken,
 | 
					                CancellationToken = cancellationToken,
 | 
				
			||||||
                AcceptHeader = TmdbUtils.AcceptHeader
 | 
					                AcceptHeader = TmdbUtils.AcceptHeader
 | 
				
			||||||
 | 
					 | 
				
			||||||
            }).ConfigureAwait(false))
 | 
					            }).ConfigureAwait(false))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var json = response.Content)
 | 
					                using (var json = response.Content)
 | 
				
			||||||
@ -219,7 +216,6 @@ namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
				
			|||||||
                        Url = url,
 | 
					                        Url = url,
 | 
				
			||||||
                        CancellationToken = cancellationToken,
 | 
					                        CancellationToken = cancellationToken,
 | 
				
			||||||
                        AcceptHeader = TmdbUtils.AcceptHeader
 | 
					                        AcceptHeader = TmdbUtils.AcceptHeader
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    }).ConfigureAwait(false))
 | 
					                    }).ConfigureAwait(false))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        using (var json = response.Content)
 | 
					                        using (var json = response.Content)
 | 
				
			||||||
@ -229,6 +225,7 @@ namespace MediaBrowser.Providers.Tmdb.BoxSets
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return mainResult;
 | 
					            return mainResult;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Collections
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Collections
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class CollectionImages
 | 
					    public class CollectionImages
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Collections
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Collections
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class CollectionResult
 | 
					    public class CollectionResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Collections
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Collections
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Part
 | 
					    public class Part
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Backdrop
 | 
					    public class Backdrop
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Crew
 | 
					    public class Crew
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class ExternalIds
 | 
					    public class ExternalIds
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Genre
 | 
					    public class Genre
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Images
 | 
					    public class Images
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Keyword
 | 
					    public class Keyword
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Keywords
 | 
					    public class Keywords
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Poster
 | 
					    public class Poster
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Profile
 | 
					    public class Profile
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Still
 | 
					    public class Still
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class StillImages
 | 
					    public class StillImages
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Video
 | 
					    public class Video
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.General
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Videos
 | 
					    public class Videos
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class BelongsToCollection
 | 
					    public class BelongsToCollection
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Cast
 | 
					    public class Cast
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Casts
 | 
					    public class Casts
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Country
 | 
					    public class Country
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class MovieResult
 | 
					    public class MovieResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class ProductionCompany
 | 
					    public class ProductionCompany
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class ProductionCountry
 | 
					    public class ProductionCountry
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Releases
 | 
					    public class Releases
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class SpokenLanguage
 | 
					    public class SpokenLanguage
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Trailers
 | 
					    public class Trailers
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Youtube
 | 
					    public class Youtube
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.People
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.People
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class PersonImages
 | 
					    public class PersonImages
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.People
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.People
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class PersonResult
 | 
					    public class PersonResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Search
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Search
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class ExternalIdLookupResult
 | 
					    public class ExternalIdLookupResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Search
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Search
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class MovieResult
 | 
					    public class MovieResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Search
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Search
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class PersonSearchResult
 | 
					    public class PersonSearchResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.Search
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Search
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbSearchResult<T>
 | 
					    public class TmdbSearchResult<T>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.Search
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Search
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TvResult
 | 
					    public class TvResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Cast
 | 
					    public class Cast
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class ContentRating
 | 
					    public class ContentRating
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class ContentRatings
 | 
					    public class ContentRatings
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class CreatedBy
 | 
					    public class CreatedBy
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Credits
 | 
					    public class Credits
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Episode
 | 
					    public class Episode
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class EpisodeCredits
 | 
					    public class EpisodeCredits
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class EpisodeResult
 | 
					    public class EpisodeResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class GuestStar
 | 
					    public class GuestStar
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Network
 | 
					    public class Network
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Season
 | 
					    public class Season
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class SeasonImages
 | 
					    public class SeasonImages
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class SeasonResult
 | 
					    public class SeasonResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Models.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Models.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class SeriesResult
 | 
					    public class SeriesResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -13,10 +13,10 @@ using MediaBrowser.Controller.Providers;
 | 
				
			|||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.Movies;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class GenericTmdbMovieInfo<T>
 | 
					    public class GenericTmdbMovieInfo<T>
 | 
				
			||||||
        where T : BaseItem, new()
 | 
					        where T : BaseItem, new()
 | 
				
			||||||
@ -13,10 +13,10 @@ using MediaBrowser.Model.Entities;
 | 
				
			|||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.Movies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbImageProvider : IRemoteImageProvider, IHasOrder
 | 
					    public class TmdbImageProvider : IRemoteImageProvider, IHasOrder
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -4,7 +4,7 @@ using MediaBrowser.Controller.LiveTv;
 | 
				
			|||||||
using MediaBrowser.Controller.Providers;
 | 
					using MediaBrowser.Controller.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbMovieExternalId : IExternalId
 | 
					    public class TmdbMovieExternalId : IExternalId
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -15,15 +15,14 @@ using MediaBrowser.Controller.Entities.Movies;
 | 
				
			|||||||
using MediaBrowser.Controller.Library;
 | 
					using MediaBrowser.Controller.Library;
 | 
				
			||||||
using MediaBrowser.Controller.Providers;
 | 
					using MediaBrowser.Controller.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
using MediaBrowser.Model.Globalization;
 | 
					 | 
				
			||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Net;
 | 
					using MediaBrowser.Model.Net;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.Movies;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// Class MovieDbProvider
 | 
					    /// Class MovieDbProvider
 | 
				
			||||||
@ -3,19 +3,19 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Globalization;
 | 
					using System.Globalization;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Net;
 | 
					using System.Net;
 | 
				
			||||||
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using System.Text.RegularExpressions;
 | 
					 | 
				
			||||||
using MediaBrowser.Common.Net;
 | 
					using MediaBrowser.Common.Net;
 | 
				
			||||||
using MediaBrowser.Controller.Library;
 | 
					using MediaBrowser.Controller.Library;
 | 
				
			||||||
using MediaBrowser.Controller.Providers;
 | 
					using MediaBrowser.Controller.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.Search;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.Search;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbSearch
 | 
					    public class TmdbSearch
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Movies
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    internal class TmdbImageSettings
 | 
					    internal class TmdbImageSettings
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -6,9 +6,9 @@ using MediaBrowser.Common.Net;
 | 
				
			|||||||
using MediaBrowser.Controller.Entities;
 | 
					using MediaBrowser.Controller.Entities;
 | 
				
			||||||
using MediaBrowser.Controller.Providers;
 | 
					using MediaBrowser.Controller.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Music
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbMusicVideoProvider : IRemoteMetadataProvider<MusicVideo, MusicVideoInfo>
 | 
					    public class TmdbMusicVideoProvider : IRemoteMetadataProvider<MusicVideo, MusicVideoInfo>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -2,7 +2,7 @@ using MediaBrowser.Controller.Entities;
 | 
				
			|||||||
using MediaBrowser.Controller.Providers;
 | 
					using MediaBrowser.Controller.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.People
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.People
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbPersonExternalId : IExternalId
 | 
					    public class TmdbPersonExternalId : IExternalId
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -10,11 +10,11 @@ using MediaBrowser.Controller.Providers;
 | 
				
			|||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.People;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.People;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.People
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.People
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbPersonImageProvider : IRemoteImageProvider, IHasOrder
 | 
					    public class TmdbPersonImageProvider : IRemoteImageProvider, IHasOrder
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -17,13 +17,13 @@ using MediaBrowser.Model.IO;
 | 
				
			|||||||
using MediaBrowser.Model.Net;
 | 
					using MediaBrowser.Model.Net;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.People;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.People;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.Search;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.Search;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.People
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.People
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbPersonProvider : IRemoteMetadataProvider<Person, PersonLookupInfo>
 | 
					    public class TmdbPersonProvider : IRemoteMetadataProvider<Person, PersonLookupInfo>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -13,11 +13,11 @@ using MediaBrowser.Model.Globalization;
 | 
				
			|||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbEpisodeImageProvider :
 | 
					    public class TmdbEpisodeImageProvider :
 | 
				
			||||||
            TmdbEpisodeProviderBase,
 | 
					            TmdbEpisodeProviderBase,
 | 
				
			||||||
@ -80,7 +80,6 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                RatingType = RatingType.Score
 | 
					                RatingType = RatingType.Score
 | 
				
			||||||
            }));
 | 
					            }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
            var isLanguageEn = string.Equals(language, "en", StringComparison.OrdinalIgnoreCase);
 | 
					            var isLanguageEn = string.Equals(language, "en", StringComparison.OrdinalIgnoreCase);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return list.OrderByDescending(i =>
 | 
					            return list.OrderByDescending(i =>
 | 
				
			||||||
@ -89,6 +88,7 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    return 3;
 | 
					                    return 3;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!isLanguageEn)
 | 
					                if (!isLanguageEn)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase))
 | 
					                    if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
@ -96,15 +96,16 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                        return 2;
 | 
					                        return 2;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (string.IsNullOrEmpty(i.Language))
 | 
					                if (string.IsNullOrEmpty(i.Language))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    return isLanguageEn ? 3 : 2;
 | 
					                    return isLanguageEn ? 3 : 2;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return 0;
 | 
					                return 0;
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
                .ThenByDescending(i => i.CommunityRating ?? 0)
 | 
					                .ThenByDescending(i => i.CommunityRating ?? 0)
 | 
				
			||||||
                .ThenByDescending(i => i.VoteCount ?? 0);
 | 
					                .ThenByDescending(i => i.VoteCount ?? 0);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private IEnumerable<Still> GetPosters(StillImages images)
 | 
					        private IEnumerable<Still> GetPosters(StillImages images)
 | 
				
			||||||
@ -112,7 +113,6 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
            return images.Stills ?? new List<Still>();
 | 
					            return images.Stills ?? new List<Still>();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken)
 | 
					        public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return GetResponse(url, cancellationToken);
 | 
					            return GetResponse(url, cancellationToken);
 | 
				
			||||||
@ -18,7 +18,7 @@ using MediaBrowser.Model.Providers;
 | 
				
			|||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbEpisodeProvider :
 | 
					    public class TmdbEpisodeProvider :
 | 
				
			||||||
            TmdbEpisodeProviderBase,
 | 
					            TmdbEpisodeProviderBase,
 | 
				
			||||||
@ -203,6 +203,7 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            return GetResponse(url, cancellationToken);
 | 
					            return GetResponse(url, cancellationToken);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // After TheTvDb
 | 
					        // After TheTvDb
 | 
				
			||||||
        public int Order => 1;
 | 
					        public int Order => 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -8,11 +8,11 @@ using MediaBrowser.Controller.Configuration;
 | 
				
			|||||||
using MediaBrowser.Model.Globalization;
 | 
					using MediaBrowser.Model.Globalization;
 | 
				
			||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.TV;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.TV;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public abstract class TmdbEpisodeProviderBase
 | 
					    public abstract class TmdbEpisodeProviderBase
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -53,6 +53,7 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new ArgumentNullException(nameof(tmdbId));
 | 
					                throw new ArgumentNullException(nameof(tmdbId));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (string.IsNullOrEmpty(language))
 | 
					            if (string.IsNullOrEmpty(language))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new ArgumentNullException(nameof(language));
 | 
					                throw new ArgumentNullException(nameof(language));
 | 
				
			||||||
@ -80,6 +81,7 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new ArgumentNullException(nameof(tmdbId));
 | 
					                throw new ArgumentNullException(nameof(tmdbId));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (string.IsNullOrEmpty(preferredLanguage))
 | 
					            if (string.IsNullOrEmpty(preferredLanguage))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new ArgumentNullException(nameof(preferredLanguage));
 | 
					                throw new ArgumentNullException(nameof(preferredLanguage));
 | 
				
			||||||
@ -12,10 +12,10 @@ using MediaBrowser.Model.Dto;
 | 
				
			|||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbSeasonImageProvider : IRemoteImageProvider, IHasOrder
 | 
					    public class TmdbSeasonImageProvider : IRemoteImageProvider, IHasOrder
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -14,12 +14,12 @@ using MediaBrowser.Model.IO;
 | 
				
			|||||||
using MediaBrowser.Model.Net;
 | 
					using MediaBrowser.Model.Net;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.TV;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.TV;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
using Season = MediaBrowser.Controller.Entities.TV.Season;
 | 
					using Season = MediaBrowser.Controller.Entities.TV.Season;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbSeasonProvider : IRemoteMetadataProvider<Season, SeasonInfo>
 | 
					    public class TmdbSeasonProvider : IRemoteMetadataProvider<Season, SeasonInfo>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -145,6 +145,7 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new ArgumentNullException(nameof(tmdbId));
 | 
					                throw new ArgumentNullException(nameof(tmdbId));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (string.IsNullOrEmpty(language))
 | 
					            if (string.IsNullOrEmpty(language))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new ArgumentNullException(nameof(language));
 | 
					                throw new ArgumentNullException(nameof(language));
 | 
				
			||||||
@ -172,6 +173,7 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new ArgumentNullException(nameof(tmdbId));
 | 
					                throw new ArgumentNullException(nameof(tmdbId));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (string.IsNullOrEmpty(preferredLanguage))
 | 
					            if (string.IsNullOrEmpty(preferredLanguage))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                throw new ArgumentNullException(nameof(preferredLanguage));
 | 
					                throw new ArgumentNullException(nameof(preferredLanguage));
 | 
				
			||||||
@ -216,7 +218,6 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                Url = url,
 | 
					                Url = url,
 | 
				
			||||||
                CancellationToken = cancellationToken,
 | 
					                CancellationToken = cancellationToken,
 | 
				
			||||||
                AcceptHeader = TmdbUtils.AcceptHeader
 | 
					                AcceptHeader = TmdbUtils.AcceptHeader
 | 
				
			||||||
 | 
					 | 
				
			||||||
            }).ConfigureAwait(false))
 | 
					            }).ConfigureAwait(false))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var json = response.Content)
 | 
					                using (var json = response.Content)
 | 
				
			||||||
@ -2,7 +2,7 @@ using MediaBrowser.Controller.Entities.TV;
 | 
				
			|||||||
using MediaBrowser.Controller.Providers;
 | 
					using MediaBrowser.Controller.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbSeriesExternalId : IExternalId
 | 
					    public class TmdbSeriesExternalId : IExternalId
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -12,11 +12,11 @@ using MediaBrowser.Model.Entities;
 | 
				
			|||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.TV;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.TV;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbSeriesImageProvider : IRemoteImageProvider, IHasOrder
 | 
					    public class TmdbSeriesImageProvider : IRemoteImageProvider, IHasOrder
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -99,6 +99,7 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    return 3;
 | 
					                    return 3;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!isLanguageEn)
 | 
					                if (!isLanguageEn)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase))
 | 
					                    if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
@ -106,10 +107,12 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                        return 2;
 | 
					                        return 2;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (string.IsNullOrEmpty(i.Language))
 | 
					                if (string.IsNullOrEmpty(i.Language))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    return isLanguageEn ? 3 : 2;
 | 
					                    return isLanguageEn ? 3 : 2;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return 0;
 | 
					                return 0;
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
                .ThenByDescending(i => i.CommunityRating ?? 0)
 | 
					                .ThenByDescending(i => i.CommunityRating ?? 0)
 | 
				
			||||||
@ -171,6 +174,7 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // After tvdb and fanart
 | 
					        // After tvdb and fanart
 | 
				
			||||||
        public int Order => 2;
 | 
					        public int Order => 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -17,12 +17,12 @@ using MediaBrowser.Model.Globalization;
 | 
				
			|||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.Search;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.Search;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.TV;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.TV;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.TV
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbSeriesProvider : IRemoteMetadataProvider<Series, SeriesInfo>, IHasOrder
 | 
					    public class TmdbSeriesProvider : IRemoteMetadataProvider<Series, SeriesInfo>, IHasOrder
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -263,10 +263,12 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    series.SetProviderId(MetadataProviders.Imdb, ids.Imdb_Id);
 | 
					                    series.SetProviderId(MetadataProviders.Imdb, ids.Imdb_Id);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (ids.Tvrage_Id > 0)
 | 
					                if (ids.Tvrage_Id > 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    series.SetProviderId(MetadataProviders.TvRage, ids.Tvrage_Id.ToString(_usCulture));
 | 
					                    series.SetProviderId(MetadataProviders.TvRage, ids.Tvrage_Id.ToString(_usCulture));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (ids.Tvdb_Id > 0)
 | 
					                if (ids.Tvdb_Id > 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    series.SetProviderId(MetadataProviders.Tvdb, ids.Tvdb_Id.ToString(_usCulture));
 | 
					                    series.SetProviderId(MetadataProviders.Tvdb, ids.Tvdb_Id.ToString(_usCulture));
 | 
				
			||||||
@ -416,7 +418,6 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                Url = url,
 | 
					                Url = url,
 | 
				
			||||||
                CancellationToken = cancellationToken,
 | 
					                CancellationToken = cancellationToken,
 | 
				
			||||||
                AcceptHeader = TmdbUtils.AcceptHeader
 | 
					                AcceptHeader = TmdbUtils.AcceptHeader
 | 
				
			||||||
 | 
					 | 
				
			||||||
            }).ConfigureAwait(false))
 | 
					            }).ConfigureAwait(false))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var json = response.Content)
 | 
					                using (var json = response.Content)
 | 
				
			||||||
@ -453,7 +454,6 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                    Url = url,
 | 
					                    Url = url,
 | 
				
			||||||
                    CancellationToken = cancellationToken,
 | 
					                    CancellationToken = cancellationToken,
 | 
				
			||||||
                    AcceptHeader = TmdbUtils.AcceptHeader
 | 
					                    AcceptHeader = TmdbUtils.AcceptHeader
 | 
				
			||||||
 | 
					 | 
				
			||||||
                }).ConfigureAwait(false))
 | 
					                }).ConfigureAwait(false))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    using (var json = response.Content)
 | 
					                    using (var json = response.Content)
 | 
				
			||||||
@ -518,7 +518,6 @@ namespace MediaBrowser.Providers.Tmdb.TV
 | 
				
			|||||||
                Url = url,
 | 
					                Url = url,
 | 
				
			||||||
                CancellationToken = cancellationToken,
 | 
					                CancellationToken = cancellationToken,
 | 
				
			||||||
                AcceptHeader = TmdbUtils.AcceptHeader
 | 
					                AcceptHeader = TmdbUtils.AcceptHeader
 | 
				
			||||||
 | 
					 | 
				
			||||||
            }).ConfigureAwait(false))
 | 
					            }).ConfigureAwait(false))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var json = response.Content)
 | 
					                using (var json = response.Content)
 | 
				
			||||||
@ -1,11 +1,11 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using MediaBrowser.Model.Entities;
 | 
					using MediaBrowser.Model.Entities;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Models.General;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Models.General;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// Utilities for the TMDb provider
 | 
					    /// Utilities for the TMDb provider.
 | 
				
			||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
    public static class TmdbUtils
 | 
					    public static class TmdbUtils
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -5,9 +5,9 @@ using MediaBrowser.Common.Net;
 | 
				
			|||||||
using MediaBrowser.Controller.Entities;
 | 
					using MediaBrowser.Controller.Entities;
 | 
				
			||||||
using MediaBrowser.Controller.Providers;
 | 
					using MediaBrowser.Controller.Providers;
 | 
				
			||||||
using MediaBrowser.Model.Providers;
 | 
					using MediaBrowser.Model.Providers;
 | 
				
			||||||
using MediaBrowser.Providers.Tmdb.Movies;
 | 
					using MediaBrowser.Providers.Plugins.Tmdb.Movies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Tmdb.Trailers
 | 
					namespace MediaBrowser.Providers.Plugins.Tmdb.Trailers
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TmdbTrailerProvider : IHasOrder, IRemoteMetadataProvider<Trailer, TrailerInfo>
 | 
					    public class TmdbTrailerProvider : IHasOrder, IRemoteMetadataProvider<Trailer, TrailerInfo>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user