aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/BoxSets
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-03-01 17:34:27 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-03-01 17:34:27 -0500
commit6c5cf81752c4189e9a7a8c79ea84d802cc979eea (patch)
treeef98da95463b2f6f535a3b9785ba64f4ddde7e46 /MediaBrowser.Providers/BoxSets
parentd537826d818bcff1da3b766b35dbacd7fa9a3184 (diff)
a start to the lookup feature
Diffstat (limited to 'MediaBrowser.Providers/BoxSets')
-rw-r--r--MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs73
1 files changed, 68 insertions, 5 deletions
diff --git a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs
index 09939f2d6d..d698b4ce03 100644
--- a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs
+++ b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs
@@ -32,20 +32,71 @@ 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 };
+ }
+
+ var results = await new MovieDbSearch(_logger, _json).GetSearchResults(searchInfo, cancellationToken).ConfigureAwait(false);
+
+ return results.Select(i => GetRemoteSearchResult(i, tmdbImageUrl));
+ }
+
+ private RemoteSearchResult GetRemoteSearchResult(MovieDbSearch.TmdbMovieSearchResult tmdbResult, string baseImageUrl)
+ {
+ var result = new RemoteSearchResult
+ {
+ Name = tmdbResult.name,
+
+ SearchProviderName = Name,
+
+ ImageUrl = string.IsNullOrEmpty(tmdbResult.poster_path) ? null : (baseImageUrl + tmdbResult.poster_path)
+ };
+
+ result.SetProviderId(MetadataProviders.Tmdb, tmdbResult.id.ToString(_usCulture));
+
+ return result;
}
public async Task<MetadataResult<BoxSet>> GetMetadata(BoxSetInfo id, CancellationToken cancellationToken)
@@ -55,7 +106,9 @@ 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)
{
@@ -219,10 +272,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 +349,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
+ });
}
}
}