diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-10-26 01:29:32 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-10-26 01:29:32 -0400 |
| commit | c80e1df1ca1b5b2a082bf6a10e0c4c35d3a31f3b (patch) | |
| tree | b4decdfd240182061ab55299b12798b429f7a82d /MediaBrowser.Providers | |
| parent | 2890c71af92dcb6920c4ab7da48cd6807ca86703 (diff) | |
support null image encoder
Diffstat (limited to 'MediaBrowser.Providers')
| -rw-r--r-- | MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs | 26 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Movies/MovieDbProvider.cs | 39 |
2 files changed, 42 insertions, 23 deletions
diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs index 55184140e9..3c2d9c82fc 100644 --- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs +++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs @@ -87,22 +87,26 @@ namespace MediaBrowser.Providers.Movies if (string.IsNullOrEmpty(tmdbId)) { movieInfo = await MovieDbProvider.Current.FetchMainResult(imdbId, false, language, cancellationToken).ConfigureAwait(false); - if (movieInfo == null) return item; - - tmdbId = movieInfo.id.ToString(_usCulture); + if (movieInfo != null) + { + tmdbId = movieInfo.id.ToString(_usCulture); - dataFilePath = MovieDbProvider.Current.GetDataFilePath(tmdbId, language); - _fileSystem.CreateDirectory(Path.GetDirectoryName(dataFilePath)); - _jsonSerializer.SerializeToFile(movieInfo, dataFilePath); + dataFilePath = MovieDbProvider.Current.GetDataFilePath(tmdbId, language); + _fileSystem.CreateDirectory(Path.GetDirectoryName(dataFilePath)); + _jsonSerializer.SerializeToFile(movieInfo, dataFilePath); + } } - await MovieDbProvider.Current.EnsureMovieInfo(tmdbId, language, cancellationToken).ConfigureAwait(false); + if (!string.IsNullOrWhiteSpace(tmdbId)) + { + await MovieDbProvider.Current.EnsureMovieInfo(tmdbId, language, cancellationToken).ConfigureAwait(false); - dataFilePath = dataFilePath ?? MovieDbProvider.Current.GetDataFilePath(tmdbId, language); - movieInfo = movieInfo ?? _jsonSerializer.DeserializeFromFile<MovieDbProvider.CompleteMovieData>(dataFilePath); + dataFilePath = dataFilePath ?? MovieDbProvider.Current.GetDataFilePath(tmdbId, language); + movieInfo = movieInfo ?? _jsonSerializer.DeserializeFromFile<MovieDbProvider.CompleteMovieData>(dataFilePath); - ProcessMainInfo(item, preferredCountryCode, movieInfo); - item.HasMetadata = true; + ProcessMainInfo(item, preferredCountryCode, movieInfo); + item.HasMetadata = true; + } return item; } diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index c39c2ed685..a91714d324 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -16,9 +16,11 @@ using System; using System.Collections.Generic; using System.Globalization; using System.IO; +using System.Net; using System.Threading; using System.Threading.Tasks; using CommonIO; +using MediaBrowser.Model.Net; namespace MediaBrowser.Providers.Movies { @@ -116,7 +118,7 @@ namespace MediaBrowser.Providers.Movies public Task<MetadataResult<T>> GetItemMetadata<T>(ItemLookupInfo id, CancellationToken cancellationToken) where T : BaseItem, new() { - var movieDb = new GenericMovieDbInfo<T>(_logger, _jsonSerializer, _libraryManager, _fileSystem); + var movieDb = new GenericMovieDbInfo<T>(_logger, _jsonSerializer, _libraryManager, _fileSystem); return movieDb.GetMetadata(id, cancellationToken); } @@ -211,7 +213,7 @@ namespace MediaBrowser.Providers.Movies var dataFilePath = GetDataFilePath(id, preferredMetadataLanguage); - _fileSystem.CreateDirectory(Path.GetDirectoryName(dataFilePath)); + _fileSystem.CreateDirectory(Path.GetDirectoryName(dataFilePath)); _jsonSerializer.SerializeToFile(mainResult, dataFilePath); } @@ -309,25 +311,38 @@ namespace MediaBrowser.Providers.Movies var cacheMode = isTmdbId ? CacheMode.None : CacheMode.Unconditional; var cacheLength = TimeSpan.FromDays(3); - using (var json = await GetMovieDbResponse(new HttpRequestOptions + try { - Url = url, - CancellationToken = cancellationToken, - AcceptHeader = AcceptHeader, - CacheMode = cacheMode, - CacheLength = cacheLength + using (var json = await GetMovieDbResponse(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + AcceptHeader = AcceptHeader, + CacheMode = cacheMode, + CacheLength = cacheLength - }).ConfigureAwait(false)) + }).ConfigureAwait(false)) + { + mainResult = _jsonSerializer.DeserializeFromStream<CompleteMovieData>(json); + } + } + catch (HttpException ex) { - mainResult = _jsonSerializer.DeserializeFromStream<CompleteMovieData>(json); + // Return null so that callers know there is no metadata for this id + if (ex.StatusCode.HasValue && ex.StatusCode.Value == HttpStatusCode.NotFound) + { + return null; + } + + throw; } cancellationToken.ThrowIfCancellationRequested(); // If the language preference isn't english, then have the overview fallback to english if it's blank if (mainResult != null && - string.IsNullOrEmpty(mainResult.overview) && - !string.IsNullOrEmpty(language) && + string.IsNullOrEmpty(mainResult.overview) && + !string.IsNullOrEmpty(language) && !string.Equals(language, "en", StringComparison.OrdinalIgnoreCase)) { _logger.Info("MovieDbProvider couldn't find meta for language " + language + ". Trying English..."); |
