diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-08-18 21:42:53 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-08-18 21:42:53 -0400 |
| commit | b48d15296c1708545f358dc0ccbc48fea9b2cf00 (patch) | |
| tree | e1d13ad0810dd614a4b3f8da5e05cbc8f52fcb30 /MediaBrowser.Providers | |
| parent | 6a2f6782d32603593c669632d825f29fb43f3ea6 (diff) | |
support custom ordering of user views
Diffstat (limited to 'MediaBrowser.Providers')
| -rw-r--r-- | MediaBrowser.Providers/Manager/ProviderManager.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Providers/TV/TvdbSeriesProvider.cs | 90 |
3 files changed, 80 insertions, 21 deletions
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 3377d1535..f2ec85cfa 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -342,14 +342,17 @@ namespace MediaBrowser.Providers.Manager if (provider is IRemoteImageProvider || provider is IDynamicImageProvider) { - if (!ConfigurationManager.Configuration.EnableInternetProviders) + if (Array.IndexOf(options.DisabledImageFetchers, provider.Name) != -1) { return false; } - if (Array.IndexOf(options.DisabledImageFetchers, provider.Name) != -1) + if (provider is IRemoteImageProvider) { - return false; + if (!ConfigurationManager.Configuration.EnableInternetProviders) + { + return false; + } } } } diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs index a2ec897a1..82ccdc4ac 100644 --- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs @@ -5,11 +5,11 @@ using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; +using MediaBrowser.Model.MediaInfo; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.Providers.MediaInfo { diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index acff0231f..97eabcfa9 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -57,11 +57,30 @@ namespace MediaBrowser.Providers.TV { var seriesId = searchInfo.GetProviderId(MetadataProviders.Tvdb); - if (!string.IsNullOrEmpty(seriesId)) + if (string.IsNullOrEmpty(seriesId)) { + return await FindSeries(searchInfo.Name, cancellationToken).ConfigureAwait(false); } - - return new List<RemoteSearchResult>(); + + var metadata = await GetMetadata(searchInfo, cancellationToken).ConfigureAwait(false); + + var list = new List<RemoteSearchResult>(); + + if (metadata.HasMetadata) + { + var res = new RemoteSearchResult + { + Name = metadata.Item.Name, + PremiereDate = metadata.Item.PremiereDate, + ProductionYear = metadata.Item.ProductionYear, + ProviderIds = metadata.Item.ProviderIds, + SearchProviderName = Name + }; + + list.Add(res); + } + + return list; } public async Task<MetadataResult<Series>> GetMetadata(SeriesInfo itemId, CancellationToken cancellationToken) @@ -79,18 +98,13 @@ namespace MediaBrowser.Providers.TV if (string.IsNullOrEmpty(seriesId)) { - seriesId = await FindSeries(itemId.Name, cancellationToken).ConfigureAwait(false); - } + var srch = await GetSearchResults(itemId, cancellationToken).ConfigureAwait(false); - if (string.IsNullOrEmpty(seriesId)) - { - int? yearInName = null; - string nameWithoutYear; - NameParser.ParseName(itemId.Name, out nameWithoutYear, out yearInName); + var entry = srch.FirstOrDefault(); - if (!string.IsNullOrEmpty(nameWithoutYear) && !string.Equals(nameWithoutYear, itemId.Name, StringComparison.OrdinalIgnoreCase)) + if (entry != null) { - seriesId = await FindSeries(nameWithoutYear, cancellationToken).ConfigureAwait(false); + seriesId = entry.GetProviderId(MetadataProviders.Tvdb); } } } @@ -262,8 +276,29 @@ namespace MediaBrowser.Providers.TV /// <param name="name">The name.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{System.String}.</returns> - private async Task<string> FindSeries(string name, CancellationToken cancellationToken) + private async Task<IEnumerable<RemoteSearchResult>> FindSeries(string name, CancellationToken cancellationToken) + { + var results = (await FindSeriesInternal(name, cancellationToken).ConfigureAwait(false)).ToList(); + + if (results.Count == 0) + { + int? yearInName = null; + string nameWithoutYear; + NameParser.ParseName(name, out nameWithoutYear, out yearInName); + + if (!string.IsNullOrEmpty(nameWithoutYear) && !string.Equals(nameWithoutYear, name, StringComparison.OrdinalIgnoreCase)) + { + results = (await FindSeriesInternal(nameWithoutYear, cancellationToken).ConfigureAwait(false)).ToList(); + } + } + + return results; + } + + private async Task<IEnumerable<RemoteSearchResult>> FindSeriesInternal(string name, CancellationToken cancellationToken) { + // TODO: Support returning more data, including image url's for the identify function + var url = string.Format(RootUrl + SeriesQuery, WebUtility.UrlEncode(name)); var doc = new XmlDocument(); @@ -278,6 +313,8 @@ namespace MediaBrowser.Providers.TV doc.Load(results); } + var searchResults = new List<RemoteSearchResult>(); + if (doc.HasChildNodes) { var nodes = doc.SelectNodes("//Series"); @@ -305,7 +342,17 @@ namespace MediaBrowser.Providers.TV { var id = node.SelectSingleNode("./seriesid"); if (id != null) - return id.InnerText; + { + var searchResult = new RemoteSearchResult + { + Name = titles.FirstOrDefault(), + SearchProviderName = Name + }; + + searchResult.SetProviderId(MetadataProviders.Tvdb, id.InnerText); + + searchResults.Add(searchResult); + } } foreach (var title in titles) @@ -317,7 +364,7 @@ namespace MediaBrowser.Providers.TV } _logger.Info("TVDb Provider - Could not find " + name + ". Check name on Thetvdb.org."); - return null; + return searchResults; } /// <summary> @@ -1133,11 +1180,20 @@ namespace MediaBrowser.Providers.TV { string tvdbId; if (!info.ProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out tvdbId)) - tvdbId = await FindSeries(info.Name, CancellationToken.None); + { + var srch = await GetSearchResults(info, CancellationToken.None).ConfigureAwait(false); + + var entry = srch.FirstOrDefault(); + + if (entry != null) + { + tvdbId = entry.GetProviderId(MetadataProviders.Tvdb); + } + } if (!string.IsNullOrEmpty(tvdbId)) { - return new SeriesIdentity {Type = MetadataProviders.Tvdb.ToString(), Id = tvdbId}; + return new SeriesIdentity { Type = MetadataProviders.Tvdb.ToString(), Id = tvdbId }; } return null; |
