aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Omdb/OmdbItemProvider.cs')
-rw-r--r--MediaBrowser.Providers/Omdb/OmdbItemProvider.cs46
1 files changed, 42 insertions, 4 deletions
diff --git a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
index efcc76e69..ea9d14534 100644
--- a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
+++ b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
@@ -60,12 +60,18 @@ namespace MediaBrowser.Providers.Omdb
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(ItemLookupInfo searchInfo, string type, CancellationToken cancellationToken)
{
bool isSearch = false;
+ var episodeSearchInfo = searchInfo as EpisodeInfo;
var list = new List<RemoteSearchResult>();
var imdbId = searchInfo.GetProviderId(MetadataProviders.Imdb);
- var url = "http://www.omdbapi.com/?plot=short&r=json";
+ var url = "http://www.omdbapi.com/?plot=full&r=json";
+ if (type == "episode" && episodeSearchInfo != null)
+ {
+ episodeSearchInfo.SeriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out imdbId);
+ }
+
var name = searchInfo.Name;
var year = searchInfo.Year;
@@ -95,6 +101,18 @@ namespace MediaBrowser.Providers.Omdb
url += "&i=" + imdbId;
}
+ if (type == "episode")
+ {
+ if (searchInfo.IndexNumber.HasValue)
+ {
+ url += string.Format(CultureInfo.InvariantCulture, "&Episode={0}", searchInfo.IndexNumber);
+ }
+ if (searchInfo.ParentIndexNumber.HasValue)
+ {
+ url += string.Format(CultureInfo.InvariantCulture, "&Season={0}", searchInfo.ParentIndexNumber);
+ }
+ }
+
using (var stream = await _httpClient.Get(new HttpRequestOptions
{
Url = url,
@@ -124,10 +142,20 @@ namespace MediaBrowser.Providers.Omdb
foreach (var result in resultList)
{
- var item = new RemoteSearchResult();
+ var item = new RemoteSearchResult
+ {
+ IndexNumber = searchInfo.IndexNumber,
+ Name = result.Title,
+ ParentIndexNumber = searchInfo.ParentIndexNumber,
+ ProviderIds = searchInfo.ProviderIds,
+ SearchProviderName = Name
+ };
+
+ if (episodeSearchInfo != null && episodeSearchInfo.IndexNumberEnd.HasValue)
+ {
+ item.IndexNumberEnd = episodeSearchInfo.IndexNumberEnd.Value;
+ }
- item.SearchProviderName = Name;
- item.Name = result.Title;
item.SetProviderId(MetadataProviders.Imdb, result.imdbID);
int parsedYear;
@@ -137,6 +165,13 @@ namespace MediaBrowser.Providers.Omdb
item.ProductionYear = parsedYear;
}
+ DateTime released;
+ if (!string.IsNullOrEmpty(result.Released)
+ && DateTime.TryParse(result.Released, CultureInfo.InvariantCulture, DateTimeStyles.AllowWhiteSpaces, out released))
+ {
+ item.PremiereDate = released;
+ }
+
if (!string.IsNullOrWhiteSpace(result.Poster) && !string.Equals(result.Poster, "N/A", StringComparison.OrdinalIgnoreCase))
{
item.ImageUrl = result.Poster;
@@ -267,6 +302,8 @@ namespace MediaBrowser.Providers.Omdb
public string Year { get; set; }
public string Rated { get; set; }
public string Released { get; set; }
+ public string Season { get; set; }
+ public string Episode { get; set; }
public string Runtime { get; set; }
public string Genre { get; set; }
public string Director { get; set; }
@@ -281,6 +318,7 @@ namespace MediaBrowser.Providers.Omdb
public string imdbRating { get; set; }
public string imdbVotes { get; set; }
public string imdbID { get; set; }
+ public string seriesID { get; set; }
public string Type { get; set; }
public string Response { get; set; }
}