aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-10-26 01:29:32 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-10-26 01:29:32 -0400
commitc80e1df1ca1b5b2a082bf6a10e0c4c35d3a31f3b (patch)
treeb4decdfd240182061ab55299b12798b429f7a82d /MediaBrowser.Providers
parent2890c71af92dcb6920c4ab7da48cd6807ca86703 (diff)
support null image encoder
Diffstat (limited to 'MediaBrowser.Providers')
-rw-r--r--MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs26
-rw-r--r--MediaBrowser.Providers/Movies/MovieDbProvider.cs39
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...");