aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/Images/RemoteImageService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/Images/RemoteImageService.cs')
-rw-r--r--MediaBrowser.Api/Images/RemoteImageService.cs47
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);
}
}
}