aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/Images/ImageService.cs9
-rw-r--r--MediaBrowser.Api/Images/RemoteImageService.cs22
-rw-r--r--MediaBrowser.Api/ItemRefreshService.cs49
-rw-r--r--MediaBrowser.Api/Library/LibraryStructureService.cs63
4 files changed, 99 insertions, 44 deletions
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index d7b59c920..c4981a7fa 100644
--- a/MediaBrowser.Api/Images/ImageService.cs
+++ b/MediaBrowser.Api/Images/ImageService.cs
@@ -66,7 +66,7 @@ namespace MediaBrowser.Api.Images
[ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Id { get; set; }
}
-
+
/// <summary>
/// Class UpdateItemImageIndex
/// </summary>
@@ -799,7 +799,12 @@ namespace MediaBrowser.Api.Images
await _providerManager.SaveImage(entity, memoryStream, mimeType, imageType, null, null, CancellationToken.None).ConfigureAwait(false);
- await entity.RefreshMetadata(CancellationToken.None, forceRefresh: true, forceSave: true, allowSlowProviders: false).ConfigureAwait(false);
+ await entity.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ImageRefreshMode = MetadataRefreshMode.None,
+ ForceSave = true
+
+ }, CancellationToken.None).ConfigureAwait(false);
}
}
}
diff --git a/MediaBrowser.Api/Images/RemoteImageService.cs b/MediaBrowser.Api/Images/RemoteImageService.cs
index c18954e50..b84a8f4f7 100644
--- a/MediaBrowser.Api/Images/RemoteImageService.cs
+++ b/MediaBrowser.Api/Images/RemoteImageService.cs
@@ -9,13 +9,13 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
using ServiceStack;
+using ServiceStack.Text.Controller;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using ServiceStack.Text.Controller;
namespace MediaBrowser.Api.Images
{
@@ -193,12 +193,7 @@ namespace MediaBrowser.Api.Images
private List<ImageProviderInfo> GetImageProviders(BaseItem item)
{
- return _providerManager.GetImageProviders(item).Select(i => new ImageProviderInfo
- {
- Name = i.Name,
- Priority = i.Priority
-
- }).ToList();
+ return _providerManager.GetImageProviderInfo(item).ToList();
}
public object Get(GetRemoteImages request)
@@ -229,7 +224,9 @@ namespace MediaBrowser.Api.Images
var result = new RemoteImageResult
{
TotalRecordCount = imagesList.Count,
- Providers = _providerManager.GetImageProviders(item).Select(i => i.Name).ToList()
+ Providers = images.Select(i => i.ProviderName)
+ .Distinct(StringComparer.OrdinalIgnoreCase)
+ .ToList()
};
if (request.StartIndex.HasValue)
@@ -284,8 +281,13 @@ namespace MediaBrowser.Api.Images
{
await _providerManager.SaveImage(item, request.ImageUrl, null, request.Type, null, CancellationToken.None).ConfigureAwait(false);
- await item.RefreshMetadata(CancellationToken.None, forceSave: true, allowSlowProviders: false)
- .ConfigureAwait(false);
+ await item.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ForceSave = true,
+ ImageRefreshMode = MetadataRefreshMode.None,
+ MetadataRefreshMode = MetadataRefreshMode.None
+
+ }, CancellationToken.None).ConfigureAwait(false);
}
/// <summary>
diff --git a/MediaBrowser.Api/ItemRefreshService.cs b/MediaBrowser.Api/ItemRefreshService.cs
index 1b8b49f98..a0055f4e6 100644
--- a/MediaBrowser.Api/ItemRefreshService.cs
+++ b/MediaBrowser.Api/ItemRefreshService.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Providers;
using ServiceStack;
using System;
using System.Linq;
@@ -131,7 +132,11 @@ namespace MediaBrowser.Api
try
{
- await item.RefreshMetadata(cancellationToken, forceRefresh: request.Forced).ConfigureAwait(false);
+ await item.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ReplaceAllMetadata = request.Forced,
+
+ }, CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
@@ -152,7 +157,11 @@ namespace MediaBrowser.Api
try
{
- await item.RefreshMetadata(CancellationToken.None, forceRefresh: request.Forced).ConfigureAwait(false);
+ await item.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ReplaceAllMetadata = request.Forced,
+
+ }, CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
@@ -173,7 +182,11 @@ namespace MediaBrowser.Api
try
{
- await item.RefreshMetadata(CancellationToken.None, forceRefresh: request.Forced).ConfigureAwait(false);
+ await item.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ReplaceAllMetadata = request.Forced,
+
+ }, CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
@@ -194,7 +207,11 @@ namespace MediaBrowser.Api
try
{
- await item.RefreshMetadata(CancellationToken.None, forceRefresh: request.Forced).ConfigureAwait(false);
+ await item.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ReplaceAllMetadata = request.Forced,
+
+ }, CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
@@ -215,7 +232,11 @@ namespace MediaBrowser.Api
try
{
- await item.RefreshMetadata(CancellationToken.None, forceRefresh: request.Forced).ConfigureAwait(false);
+ await item.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ReplaceAllMetadata = request.Forced,
+
+ }, CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
@@ -236,7 +257,11 @@ namespace MediaBrowser.Api
try
{
- await item.RefreshMetadata(CancellationToken.None, forceRefresh: request.Forced).ConfigureAwait(false);
+ await item.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ReplaceAllMetadata = request.Forced,
+
+ }, CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
@@ -266,7 +291,11 @@ namespace MediaBrowser.Api
try
{
- await item.RefreshMetadata(CancellationToken.None, forceRefresh: request.Forced).ConfigureAwait(false);
+ await item.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ReplaceAllMetadata = request.Forced,
+
+ }, CancellationToken.None).ConfigureAwait(false);
if (item.IsFolder)
{
@@ -301,7 +330,11 @@ namespace MediaBrowser.Api
{
foreach (var child in collectionFolder.Children.ToList())
{
- await child.RefreshMetadata(CancellationToken.None, forceRefresh: request.Forced).ConfigureAwait(false);
+ await child.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ReplaceAllMetadata = request.Forced,
+
+ }, CancellationToken.None).ConfigureAwait(false);
if (child.IsFolder)
{
diff --git a/MediaBrowser.Api/Library/LibraryStructureService.cs b/MediaBrowser.Api/Library/LibraryStructureService.cs
index 775907379..8ea472da3 100644
--- a/MediaBrowser.Api/Library/LibraryStructureService.cs
+++ b/MediaBrowser.Api/Library/LibraryStructureService.cs
@@ -167,6 +167,17 @@ namespace MediaBrowser.Api.Library
public bool RefreshLibrary { get; set; }
}
+ [Route("/Library/Changes/Path", "POST")]
+ public class ReportChangedPath : IReturnVoid
+ {
+ /// <summary>
+ /// Gets or sets the name.
+ /// </summary>
+ /// <value>The name.</value>
+ [ApiMember(Name = "Path", Description = "The path that was changed.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
+ public string Path { get; set; }
+ }
+
/// <summary>
/// Class LibraryStructureService
/// </summary>
@@ -187,7 +198,7 @@ namespace MediaBrowser.Api.Library
/// </summary>
private readonly ILibraryManager _libraryManager;
- private readonly IDirectoryWatchers _directoryWatchers;
+ private readonly ILibraryMonitor _libraryMonitor;
private readonly IFileSystem _fileSystem;
private readonly ILogger _logger;
@@ -199,7 +210,7 @@ namespace MediaBrowser.Api.Library
/// <param name="userManager">The user manager.</param>
/// <param name="libraryManager">The library manager.</param>
/// <exception cref="System.ArgumentNullException">appPaths</exception>
- public LibraryStructureService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IDirectoryWatchers directoryWatchers, IFileSystem fileSystem, ILogger logger)
+ public LibraryStructureService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, ILibraryMonitor libraryMonitor, IFileSystem fileSystem, ILogger logger)
{
if (appPaths == null)
{
@@ -209,12 +220,27 @@ namespace MediaBrowser.Api.Library
_userManager = userManager;
_appPaths = appPaths;
_libraryManager = libraryManager;
- _directoryWatchers = directoryWatchers;
+ _libraryMonitor = libraryMonitor;
_fileSystem = fileSystem;
_logger = logger;
}
/// <summary>
+ /// Posts the specified request.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ /// <exception cref="System.ArgumentException">Please supply a Path</exception>
+ public void Post(ReportChangedPath request)
+ {
+ if (string.IsNullOrEmpty(request.Path))
+ {
+ throw new ArgumentException("Please supply a Path");
+ }
+
+ _libraryMonitor.ReportFileSystemChanged(request.Path);
+ }
+
+ /// <summary>
/// Gets the specified request.
/// </summary>
/// <param name="request">The request.</param>
@@ -270,8 +296,7 @@ namespace MediaBrowser.Api.Library
throw new ArgumentException("There is already a media collection with the name " + name + ".");
}
- _directoryWatchers.Stop();
- _directoryWatchers.TemporarilyIgnore(virtualFolderPath);
+ _libraryMonitor.Stop();
try
{
@@ -294,10 +319,8 @@ namespace MediaBrowser.Api.Library
// No need to start if scanning the library because it will handle it
if (!request.RefreshLibrary)
{
- _directoryWatchers.Start();
+ _libraryMonitor.Start();
}
-
- _directoryWatchers.RemoveTempIgnore(virtualFolderPath);
}
if (request.RefreshLibrary)
@@ -348,9 +371,7 @@ namespace MediaBrowser.Api.Library
throw new ArgumentException("There is already a media collection with the name " + newPath + ".");
}
- _directoryWatchers.Stop();
- _directoryWatchers.TemporarilyIgnore(currentPath);
- _directoryWatchers.TemporarilyIgnore(newPath);
+ _libraryMonitor.Stop();
try
{
@@ -376,11 +397,8 @@ namespace MediaBrowser.Api.Library
// No need to start if scanning the library because it will handle it
if (!request.RefreshLibrary)
{
- _directoryWatchers.Start();
+ _libraryMonitor.Start();
}
-
- _directoryWatchers.RemoveTempIgnore(currentPath);
- _directoryWatchers.RemoveTempIgnore(newPath);
}
if (request.RefreshLibrary)
@@ -420,8 +438,7 @@ namespace MediaBrowser.Api.Library
throw new DirectoryNotFoundException("The media folder does not exist");
}
- _directoryWatchers.Stop();
- _directoryWatchers.TemporarilyIgnore(path);
+ _libraryMonitor.Stop();
try
{
@@ -437,10 +454,8 @@ namespace MediaBrowser.Api.Library
// No need to start if scanning the library because it will handle it
if (!request.RefreshLibrary)
{
- _directoryWatchers.Start();
+ _libraryMonitor.Start();
}
-
- _directoryWatchers.RemoveTempIgnore(path);
}
if (request.RefreshLibrary)
@@ -460,7 +475,7 @@ namespace MediaBrowser.Api.Library
throw new ArgumentNullException("request");
}
- _directoryWatchers.Stop();
+ _libraryMonitor.Stop();
try
{
@@ -485,7 +500,7 @@ namespace MediaBrowser.Api.Library
// No need to start if scanning the library because it will handle it
if (!request.RefreshLibrary)
{
- _directoryWatchers.Start();
+ _libraryMonitor.Start();
}
}
@@ -506,7 +521,7 @@ namespace MediaBrowser.Api.Library
throw new ArgumentNullException("request");
}
- _directoryWatchers.Stop();
+ _libraryMonitor.Stop();
try
{
@@ -531,7 +546,7 @@ namespace MediaBrowser.Api.Library
// No need to start if scanning the library because it will handle it
if (!request.RefreshLibrary)
{
- _directoryWatchers.Start();
+ _libraryMonitor.Start();
}
}