diff options
| author | Tim Hobbs <jesus.tesh@gmail.com> | 2014-03-05 04:27:13 -0800 |
|---|---|---|
| committer | Tim Hobbs <jesus.tesh@gmail.com> | 2014-03-05 04:27:13 -0800 |
| commit | 482fde658746750075ff8a562ca1fb88f1739ef4 (patch) | |
| tree | 7bd5084ffa6be20a4533eb37d94f852f2d888a84 /MediaBrowser.Providers/BoxSets | |
| parent | 604f971477da4dca5247f7d531323175ad044150 (diff) | |
| parent | 9396f16aed2f304789324afc83e0c9f385c5f00a (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Conflicts:
MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js
Diffstat (limited to 'MediaBrowser.Providers/BoxSets')
| -rw-r--r-- | MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs | 60 |
1 files changed, 52 insertions, 8 deletions
diff --git a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs index 09939f2d6d..29032ca298 100644 --- a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs +++ b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs @@ -22,7 +22,6 @@ namespace MediaBrowser.Providers.BoxSets { public class MovieDbBoxSetProvider : IRemoteMetadataProvider<BoxSet, BoxSetInfo> { - private readonly CultureInfo _enUs = new CultureInfo("en-US"); private const string GetCollectionInfo3 = @"http://api.themoviedb.org/3/collection/{0}?api_key={1}&append_to_response=images"; internal static MovieDbBoxSetProvider Current; @@ -32,20 +31,53 @@ namespace MediaBrowser.Providers.BoxSets private readonly IServerConfigurationManager _config; private readonly IFileSystem _fileSystem; private readonly ILocalizationManager _localization; + private readonly IHttpClient _httpClient; - public MovieDbBoxSetProvider(ILogger logger, IJsonSerializer json, IServerConfigurationManager config, IFileSystem fileSystem, ILocalizationManager localization) + public MovieDbBoxSetProvider(ILogger logger, IJsonSerializer json, IServerConfigurationManager config, IFileSystem fileSystem, ILocalizationManager localization, IHttpClient httpClient) { _logger = logger; _json = json; _config = config; _fileSystem = fileSystem; _localization = localization; + _httpClient = httpClient; Current = this; } + private readonly CultureInfo _usCulture = new CultureInfo("en-US"); + public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(BoxSetInfo searchInfo, CancellationToken cancellationToken) { - return new List<RemoteSearchResult>(); + var tmdbId = searchInfo.GetProviderId(MetadataProviders.Tmdb); + + var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false); + + var tmdbImageUrl = tmdbSettings.images.base_url + "original"; + + if (!string.IsNullOrEmpty(tmdbId)) + { + await EnsureInfo(tmdbId, searchInfo.MetadataLanguage, cancellationToken).ConfigureAwait(false); + + var dataFilePath = GetDataFilePath(_config.ApplicationPaths, tmdbId, searchInfo.MetadataLanguage); + var info = _json.DeserializeFromFile<RootObject>(dataFilePath); + + var images = (info.images ?? new Images()).posters ?? new List<Poster>(); + + var result = new RemoteSearchResult + { + Name = info.name, + + SearchProviderName = Name, + + ImageUrl = images.Count == 0 ? null : (tmdbImageUrl + images[0].file_path) + }; + + result.SetProviderId(MetadataProviders.Tmdb, info.id.ToString(_usCulture)); + + return new[] { result }; + } + + return await new MovieDbSearch(_logger, _json).GetSearchResults(searchInfo, cancellationToken).ConfigureAwait(false); } public async Task<MetadataResult<BoxSet>> GetMetadata(BoxSetInfo id, CancellationToken cancellationToken) @@ -55,11 +87,13 @@ namespace MediaBrowser.Providers.BoxSets // We don't already have an Id, need to fetch it if (string.IsNullOrEmpty(tmdbId)) { - var searchResult = await new MovieDbSearch(_logger, _json).FindCollectionId(id, cancellationToken).ConfigureAwait(false); + var searchResults = await new MovieDbSearch(_logger, _json).GetSearchResults(id, cancellationToken).ConfigureAwait(false); + + var searchResult = searchResults.FirstOrDefault(); if (searchResult != null) { - tmdbId = searchResult.id.ToString(_enUs); + tmdbId = searchResult.GetProviderId(MetadataProviders.Tmdb); } } @@ -106,7 +140,7 @@ namespace MediaBrowser.Providers.BoxSets Overview = obj.overview }; - item.SetProviderId(MetadataProviders.Tmdb, obj.id.ToString(_enUs)); + item.SetProviderId(MetadataProviders.Tmdb, obj.id.ToString(_usCulture)); return item; } @@ -219,10 +253,15 @@ namespace MediaBrowser.Providers.BoxSets private static string GetDataFilePath(IApplicationPaths appPaths, string tmdbId, string preferredLanguage) { + if (string.IsNullOrWhiteSpace(preferredLanguage)) + { + throw new ArgumentNullException("preferredLanguage"); + } + var path = GetDataPath(appPaths, tmdbId); var filename = string.Format("all-{0}.json", - preferredLanguage ?? string.Empty); + preferredLanguage); return Path.Combine(path, filename); } @@ -291,7 +330,12 @@ namespace MediaBrowser.Providers.BoxSets public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken) { - throw new NotImplementedException(); + return _httpClient.GetResponse(new HttpRequestOptions + { + CancellationToken = cancellationToken, + Url = url, + ResourcePool = MovieDbProvider.Current.MovieDbResourcePool + }); } } } |
