diff options
Diffstat (limited to 'MediaBrowser.Api/Images/RemoteImageService.cs')
| -rw-r--r-- | MediaBrowser.Api/Images/RemoteImageService.cs | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/MediaBrowser.Api/Images/RemoteImageService.cs b/MediaBrowser.Api/Images/RemoteImageService.cs index deba146e8..36b509c74 100644 --- a/MediaBrowser.Api/Images/RemoteImageService.cs +++ b/MediaBrowser.Api/Images/RemoteImageService.cs @@ -40,6 +40,9 @@ namespace MediaBrowser.Api.Images [ApiMember(Name = "ProviderName", Description = "Optional. The image provider to use", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string ProviderName { get; set; } + + [ApiMember(Name = "IncludeAllLanguages", Description = "Optional.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool IncludeAllLanguages { get; set; } } [Route("/Items/{Id}/RemoteImages", "GET")] @@ -145,8 +148,8 @@ namespace MediaBrowser.Api.Images [Api(Description = "Gets a remote image")] public class GetRemoteImage { - [ApiMember(Name = "Url", Description = "The image url", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public string Url { get; set; } + [ApiMember(Name = "ImageUrl", Description = "The image url", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] + public string ImageUrl { get; set; } } public class RemoteImageService : BaseApiService @@ -193,7 +196,7 @@ namespace MediaBrowser.Api.Images private List<ImageProviderInfo> GetImageProviders(BaseItem item) { - return _providerManager.GetImageProviderInfo(item).ToList(); + return _providerManager.GetRemoteImageProviderInfo(item).ToList(); } public object Get(GetRemoteImages request) @@ -217,14 +220,28 @@ namespace MediaBrowser.Api.Images private RemoteImageResult GetRemoteImageResult(BaseItem item, BaseRemoteImageRequest request) { - var images = _providerManager.GetAvailableRemoteImages(item, CancellationToken.None, request.ProviderName, request.Type).Result; + var images = _providerManager.GetAvailableRemoteImages(item, new RemoteImageQuery + { + ProviderName = request.ProviderName, + IncludeAllLanguages = request.IncludeAllLanguages, + IncludeDisabledProviders = true, + ImageType = request.Type + + }, CancellationToken.None).Result; var imagesList = images.ToList(); + var allProviders = _providerManager.GetRemoteImageProviderInfo(item); + + if (request.Type.HasValue) + { + allProviders = allProviders.Where(i => i.SupportedImages.Contains(request.Type.Value)); + } + var result = new RemoteImageResult { TotalRecordCount = imagesList.Count, - Providers = images.Select(i => i.ProviderName) + Providers = allProviders.Select(i => i.Name) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList() }; @@ -281,13 +298,7 @@ namespace MediaBrowser.Api.Images { await _providerManager.SaveImage(item, request.ImageUrl, null, request.Type, null, CancellationToken.None).ConfigureAwait(false); - await item.RefreshMetadata(new MetadataRefreshOptions - { - ForceSave = true, - ImageRefreshMode = ImageRefreshMode.ValidationOnly, - MetadataRefreshMode = MetadataRefreshMode.None - - }, CancellationToken.None).ConfigureAwait(false); + await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false); } /// <summary> @@ -309,7 +320,7 @@ namespace MediaBrowser.Api.Images /// <returns>Task{System.Object}.</returns> private async Task<object> GetRemoteImage(GetRemoteImage request) { - var urlHash = request.Url.GetMD5(); + var urlHash = request.ImageUrl.GetMD5(); var pointerCachePath = GetFullCachePath(urlHash.ToString()); string contentPath; @@ -326,12 +337,16 @@ namespace MediaBrowser.Api.Images return ToStaticFileResult(contentPath); } } + catch (DirectoryNotFoundException) + { + // Means the file isn't cached yet + } catch (FileNotFoundException) { // Means the file isn't cached yet } - await DownloadImage(request.Url, urlHash, pointerCachePath).ConfigureAwait(false); + await DownloadImage(request.ImageUrl, urlHash, pointerCachePath).ConfigureAwait(false); // Read the pointer file again using (var reader = new StreamReader(pointerCachePath)) @@ -362,7 +377,6 @@ namespace MediaBrowser.Api.Images var fullCachePath = GetFullCachePath(urlHash + "." + ext); Directory.CreateDirectory(Path.GetDirectoryName(fullCachePath)); - using (var stream = result.Content) { using (var filestream = _fileSystem.GetFileStream(fullCachePath, FileMode.Create, FileAccess.Write, FileShare.Read, true)) @@ -371,6 +385,7 @@ namespace MediaBrowser.Api.Images } } + Directory.CreateDirectory(Path.GetDirectoryName(pointerCachePath)); using (var writer = new StreamWriter(pointerCachePath)) { await writer.WriteAsync(fullCachePath).ConfigureAwait(false); @@ -384,7 +399,7 @@ namespace MediaBrowser.Api.Images /// <returns>System.String.</returns> private string GetFullCachePath(string filename) { - return Path.Combine(_appPaths.DownloadedImagesDataPath, filename.Substring(0, 1), filename); + return Path.Combine(_appPaths.CachePath, "remote-images", filename.Substring(0, 1), filename); } } } |
