aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Providers/Omdb/OmdbItemProvider.cs36
1 files changed, 32 insertions, 4 deletions
diff --git a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
index 36e7697d7..f8763b847 100644
--- a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
+++ b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
@@ -59,6 +59,8 @@ namespace MediaBrowser.Providers.Omdb
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(ItemLookupInfo searchInfo, string type, CancellationToken cancellationToken)
{
+ bool isSearch = false;
+
var list = new List<RemoteSearchResult>();
var imdbId = searchInfo.GetProviderId(MetadataProviders.Imdb);
@@ -75,7 +77,7 @@ namespace MediaBrowser.Providers.Omdb
name = parsedName.Name;
year = year ?? yearInName;
}
-
+
if (string.IsNullOrWhiteSpace(imdbId))
{
if (year.HasValue)
@@ -83,8 +85,10 @@ namespace MediaBrowser.Providers.Omdb
url += "&y=" + year.Value.ToString(CultureInfo.InvariantCulture);
}
- url += "&t=" + WebUtility.UrlEncode(name);
+ // &s means search and returns a list of results as opposed to t
+ url += "&s=" + WebUtility.UrlEncode(name);
url += "&type=" + type;
+ isSearch = true;
}
else
{
@@ -101,9 +105,23 @@ namespace MediaBrowser.Providers.Omdb
}).ConfigureAwait(false))
{
- var result = _jsonSerializer.DeserializeFromStream<SearchResult>(stream);
+ var resultList = new List<SearchResult>();
- if (string.Equals(result.Response, "true", StringComparison.OrdinalIgnoreCase))
+ if (isSearch)
+ {
+ var searchResultList = _jsonSerializer.DeserializeFromStream<SearchResultList>(stream);
+ resultList.AddRange(searchResultList.Search);
+ }
+ else
+ {
+ var result = _jsonSerializer.DeserializeFromStream<SearchResult>(stream);
+ if (string.Equals(result.Response, "true", StringComparison.OrdinalIgnoreCase))
+ {
+ resultList.Add(result);
+ }
+ }
+
+ foreach (var result in resultList)
{
var item = new RemoteSearchResult();
@@ -264,5 +282,15 @@ namespace MediaBrowser.Providers.Omdb
public string Type { get; set; }
public string Response { get; set; }
}
+
+ private class SearchResultList
+ {
+ /// <summary>
+ /// Gets or sets the results.
+ /// </summary>
+ /// <value>The results.</value>
+ public List<SearchResult> Search { get; set; }
+ }
+
}
}