From 6e2ded5d33721373b9f2ecd4c70b490d6929763e Mon Sep 17 00:00:00 2001 From: Leonardo Galli Date: Wed, 4 Jan 2017 15:01:34 +0100 Subject: [PATCH] Fixed an issue where sometimes the json returned from IMDb just was not parsed correctly for some misterious reason. --- .DS_Store | Bin 10244 -> 10244 bytes .../SkyHook/Resource/MovieResource.cs | 21 ++++++++++++++++++ .../MetadataSource/SkyHook/SkyHookProxy.cs | 12 +++++++--- src/NzbDrone.Core/NzbDrone.Core.csproj | 2 ++ 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/NzbDrone.Core/MetadataSource/SkyHook/Resource/MovieResource.cs diff --git a/.DS_Store b/.DS_Store index e7ed6672e6d119438b43b45af2ca308f7610a91a..8139cef010b45dfb9aaa946a9f548270720e1773 100644 GIT binary patch delta 14 VcmZn(XbITBC&9?LnP1{7KL8^g1YZCE delta 14 VcmZn(XbITBC&9?DnP1{7KL8^a1YQ6D diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/Resource/MovieResource.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/Resource/MovieResource.cs new file mode 100644 index 000000000..72e3534e2 --- /dev/null +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/Resource/MovieResource.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; + +namespace NzbDrone.Core.MetadataSource.SkyHook.Resource +{ + public class ImdbResource + { + public int v { get; set; } + public string q { get; set; } + public MovieResource[] d { get; set; } + } + + public class MovieResource + { + public string l { get; set; } + public string id { get; set; } + public string s { get; set; } + public int y { get; set; } + public string q { get; set; } + public object[] i { get; set; } + } +} \ No newline at end of file diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index 8b996fedd..97c1bb520 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -148,11 +148,17 @@ public List SearchForNewMovie(string title) var responseCleaned = response.Content.Replace(imdbCallback, "").TrimEnd(")"); - dynamic json = JsonConvert.DeserializeObject(responseCleaned); + _logger.Warn("Cleaned response: " + responseCleaned); + + ImdbResource json = JsonConvert.DeserializeObject(responseCleaned); + + _logger.Warn("Json object: " + json); + + _logger.Warn("Crash ahead."); var imdbMovies = new List(); - foreach (dynamic entry in json.d) + foreach (MovieResource entry in json.d) { var imdbMovie = new Movie(); imdbMovie.ImdbId = entry.id; @@ -166,7 +172,7 @@ public List SearchForNewMovie(string title) imdbMovie.Images = new List(); try { - string url = entry.i[0]; + string url = (string)entry.i[0]; var imdbPoster = new MediaCover.MediaCover(MediaCoverTypes.Poster, url); imdbMovie.Images.Add(imdbPoster); } diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index cb3dfcba2..860b3241f 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -183,6 +183,7 @@ + @@ -807,6 +808,7 @@ +