aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Providers/Movies/MovieDbProvider.cs79
1 files changed, 57 insertions, 22 deletions
diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
index b4903ba69..fe409c090 100644
--- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
@@ -441,36 +441,71 @@ namespace MediaBrowser.Providers.Movies
if (searchResult != null)
{
- foreach (var possible in searchResult.results)
- {
- string matchedName = possible.title ?? possible.name;
- string id = possible.id.ToString(CultureInfo.InvariantCulture);
+ return FindIdOfBestResult(searchResult.results, name, year);
+ }
+
+ return null;
+ }
- if (matchedName != null)
+ private string FindIdOfBestResult(List<TmdbMovieSearchResult> results, string name, int? year)
+ {
+ if (year.HasValue)
+ {
+ // Take the first result from the same year
+ var id = results.Where(i =>
+ {
+ // Make sure it has a name
+ if (!string.IsNullOrEmpty(i.title ?? i.name))
{
- Logger.Debug("Match " + matchedName + " for " + name);
- if (year != null)
+ DateTime r;
+
+ // These dates are always in this exact format
+ if (DateTime.TryParseExact(i.release_date, "yyyy-MM-dd", EnUs, DateTimeStyles.None, out r))
{
- DateTime r;
-
- //These dates are always in this exact format
- if (DateTime.TryParseExact(possible.release_date, "yyyy-MM-dd", EnUs, DateTimeStyles.None, out r))
- {
- if (Math.Abs(r.Year - year.Value) > 1) // allow a 1 year tolerance on release date
- {
- Logger.Debug("Result " + matchedName + " released on " + r + " did not match year " + year);
- continue;
- }
- }
+ return r.Year == year.Value;
}
- //matched name and year
- return id;
}
+ return false;
+ })
+ .Select(i => i.id.ToString(CultureInfo.InvariantCulture))
+ .FirstOrDefault();
+
+ if (!string.IsNullOrEmpty(id))
+ {
+ return id;
+ }
+
+ // Take the first result within one year
+ id = results.Where(i =>
+ {
+ // Make sure it has a name
+ if (!string.IsNullOrEmpty(i.title ?? i.name))
+ {
+ DateTime r;
+
+ // These dates are always in this exact format
+ if (DateTime.TryParseExact(i.release_date, "yyyy-MM-dd", EnUs, DateTimeStyles.None, out r))
+ {
+ return Math.Abs(r.Year - year.Value) <= 1;
+ }
+ }
+
+ return false;
+ })
+ .Select(i => i.id.ToString(CultureInfo.InvariantCulture))
+ .FirstOrDefault();
+
+ if (!string.IsNullOrEmpty(id))
+ {
+ return id;
}
}
- return null;
+ // Just take the first one
+ return results.Where(i => !string.IsNullOrEmpty(i.title ?? i.name))
+ .Select(i => i.id.ToString(CultureInfo.InvariantCulture))
+ .FirstOrDefault();
}
/// <summary>
@@ -601,7 +636,7 @@ namespace MediaBrowser.Providers.Movies
return path;
}
-
+
internal string GetImagesDataFilePath(BaseItem item)
{
var path = GetDataFilePath(item);