aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-18 21:42:53 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-18 21:42:53 -0400
commitb48d15296c1708545f358dc0ccbc48fea9b2cf00 (patch)
treee1d13ad0810dd614a4b3f8da5e05cbc8f52fcb30 /MediaBrowser.Providers
parent6a2f6782d32603593c669632d825f29fb43f3ea6 (diff)
support custom ordering of user views
Diffstat (limited to 'MediaBrowser.Providers')
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs9
-rw-r--r--MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/TvdbSeriesProvider.cs90
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;