aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-28 11:56:56 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-28 11:56:56 -0400
commit3ef0ddcd120124e896f69e15bf238140f6e03344 (patch)
tree6464f7c33dec44198be22f00c091b7a7f4ec14a5
parentd06dca2d66e88e69fc06de346cdf09d52c90fc2b (diff)
improve flexibility of tvdb search. try yearless search if nothing comes back initially
-rw-r--r--MediaBrowser.Providers/TV/RemoteSeriesProvider.cs39
1 files changed, 15 insertions, 24 deletions
diff --git a/MediaBrowser.Providers/TV/RemoteSeriesProvider.cs b/MediaBrowser.Providers/TV/RemoteSeriesProvider.cs
index 307094d19..edd60d304 100644
--- a/MediaBrowser.Providers/TV/RemoteSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/RemoteSeriesProvider.cs
@@ -194,7 +194,7 @@ namespace MediaBrowser.Providers.TV
if (string.IsNullOrEmpty(seriesId))
{
- seriesId = await GetSeriesId(series, cancellationToken);
+ seriesId = await FindSeries(series.Name, cancellationToken).ConfigureAwait(false);
}
cancellationToken.ThrowIfCancellationRequested();
@@ -447,33 +447,14 @@ namespace MediaBrowser.Providers.TV
}
/// <summary>
- /// Gets the series id.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{System.String}.</returns>
- private async Task<string> GetSeriesId(BaseItem item, CancellationToken cancellationToken)
- {
- var seriesId = item.GetProviderId(MetadataProviders.Tvdb);
- if (string.IsNullOrEmpty(seriesId))
- {
- seriesId = await FindSeries(item.Name, cancellationToken).ConfigureAwait(false);
- }
- return seriesId;
- }
-
-
- /// <summary>
/// Finds the series.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{System.String}.</returns>
- public async Task<string> FindSeries(string name, CancellationToken cancellationToken)
+ private async Task<string> FindSeries(string name, CancellationToken cancellationToken)
{
-
- //nope - search for it
- string url = string.Format(RootUrl + SeriesQuery, WebUtility.UrlEncode(name));
+ var url = string.Format(RootUrl + SeriesQuery, WebUtility.UrlEncode(name));
var doc = new XmlDocument();
using (var results = await HttpClient.Get(new HttpRequestOptions
@@ -489,8 +470,8 @@ namespace MediaBrowser.Providers.TV
if (doc.HasChildNodes)
{
- XmlNodeList nodes = doc.SelectNodes("//Series");
- string comparableName = GetComparableName(name);
+ var nodes = doc.SelectNodes("//Series");
+ var comparableName = GetComparableName(name);
if (nodes != null)
foreach (XmlNode node in nodes)
{
@@ -509,6 +490,16 @@ namespace MediaBrowser.Providers.TV
}
}
+ // Try stripping off the year if it was supplied
+ var parenthIndex = name.LastIndexOf('(');
+
+ if (parenthIndex != -1)
+ {
+ var newName = name.Substring(0, parenthIndex);
+
+ return await FindSeries(newName, cancellationToken);
+ }
+
Logger.Info("TVDb Provider - Could not find " + name + ". Check name on Thetvdb.org.");
return null;
}