mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
added api for external apps to report file system changes
This commit is contained in:
parent
7c5b222463
commit
40b8300e8e
@ -167,6 +167,16 @@ namespace MediaBrowser.Api.Library
|
|||||||
public bool RefreshLibrary { get; set; }
|
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>
|
||||||
|
public string Path { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class LibraryStructureService
|
/// Class LibraryStructureService
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -214,6 +224,21 @@ namespace MediaBrowser.Api.Library
|
|||||||
_logger = logger;
|
_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>
|
/// <summary>
|
||||||
/// Gets the specified request.
|
/// Gets the specified request.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.IO;
|
||||||
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
@ -72,11 +73,21 @@ namespace MediaBrowser.Server.Implementations.IO
|
|||||||
|
|
||||||
public void ReportFileSystemChangeBeginning(string path)
|
public void ReportFileSystemChangeBeginning(string path)
|
||||||
{
|
{
|
||||||
|
if (string.IsNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("path");
|
||||||
|
}
|
||||||
|
|
||||||
TemporarilyIgnore(path);
|
TemporarilyIgnore(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReportFileSystemChangeComplete(string path, bool refreshPath)
|
public void ReportFileSystemChangeComplete(string path, bool refreshPath)
|
||||||
{
|
{
|
||||||
|
if (string.IsNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("path");
|
||||||
|
}
|
||||||
|
|
||||||
RemoveTempIgnore(path);
|
RemoveTempIgnore(path);
|
||||||
|
|
||||||
if (refreshPath)
|
if (refreshPath)
|
||||||
@ -100,6 +111,8 @@ namespace MediaBrowser.Server.Implementations.IO
|
|||||||
private ILibraryManager LibraryManager { get; set; }
|
private ILibraryManager LibraryManager { get; set; }
|
||||||
private IServerConfigurationManager ConfigurationManager { get; set; }
|
private IServerConfigurationManager ConfigurationManager { get; set; }
|
||||||
|
|
||||||
|
private IFileSystem _fileSystem;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="LibraryMonitor" /> class.
|
/// Initializes a new instance of the <see cref="LibraryMonitor" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -350,6 +363,11 @@ namespace MediaBrowser.Server.Implementations.IO
|
|||||||
|
|
||||||
public void ReportFileSystemChanged(string path)
|
public void ReportFileSystemChanged(string path)
|
||||||
{
|
{
|
||||||
|
if (string.IsNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("path");
|
||||||
|
}
|
||||||
|
|
||||||
var filename = Path.GetFileName(path);
|
var filename = Path.GetFileName(path);
|
||||||
|
|
||||||
// Ignore certain files
|
// Ignore certain files
|
||||||
@ -369,17 +387,23 @@ namespace MediaBrowser.Server.Implementations.IO
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go up a level
|
if (_fileSystem.ContainsSubPath(i, path))
|
||||||
var parent = Path.GetDirectoryName(i);
|
|
||||||
if (string.Equals(parent, path, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
{
|
||||||
Logger.Debug("Ignoring change to {0}", path);
|
Logger.Debug("Ignoring change to {0}", path);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go up another level
|
// Go up a level
|
||||||
|
var parent = Path.GetDirectoryName(i);
|
||||||
if (!string.IsNullOrEmpty(parent))
|
if (!string.IsNullOrEmpty(parent))
|
||||||
{
|
{
|
||||||
|
if (string.Equals(parent, path, StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
Logger.Debug("Ignoring change to {0}", path);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Go up another level
|
||||||
parent = Path.GetDirectoryName(i);
|
parent = Path.GetDirectoryName(i);
|
||||||
if (string.Equals(parent, path, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(parent, path, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
@ -388,13 +412,6 @@ namespace MediaBrowser.Server.Implementations.IO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i.StartsWith(path, StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
path.StartsWith(i, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
|
||||||
Logger.Debug("Ignoring change to {0}", path);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}))
|
}))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user