aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikal Stordal <mikalstordal@gmail.com>2024-03-24 01:11:45 +0100
committerMikal Stordal <mikalstordal@gmail.com>2024-06-11 02:01:15 +0200
commit0cf8b376acb9bb59be93865c566735df39490d0d (patch)
tree6662dfc7a87918a0d8859a7b3260ff741dda44c9
parent8c76900470911a784b7bcbcf0d0bea24f3c6a65a (diff)
Don't expect `BaseItem` to be a movie/video file.
This fix is mainly so I can mass-add series _and_ movie entries using a `IMultiItemResolver` without having to resort to complicated logic using _both_ a `IItemResolver` and a `IMultiItemResolver` by splitting up what gets added where. I've also added three new interface methods to the `IDirectoryService`, one of which is used in the modified `ResolverHelper.SetInitialItemValues(…)` to get the file system entry info for the item regardless of which type the file system entry is. In my local testing so far I haven't found any issues introduced by this change.
-rw-r--r--Emby.Server.Implementations/Library/ResolverHelper.cs2
-rw-r--r--MediaBrowser.Controller/Providers/DirectoryService.cs14
-rw-r--r--MediaBrowser.Controller/Providers/IDirectoryService.cs4
3 files changed, 18 insertions, 2 deletions
diff --git a/Emby.Server.Implementations/Library/ResolverHelper.cs b/Emby.Server.Implementations/Library/ResolverHelper.cs
index 52be76217..c9e3a4daf 100644
--- a/Emby.Server.Implementations/Library/ResolverHelper.cs
+++ b/Emby.Server.Implementations/Library/ResolverHelper.cs
@@ -39,7 +39,7 @@ namespace Emby.Server.Implementations.Library
item.GetParents().Any(i => i.IsLocked);
// Make sure DateCreated and DateModified have values
- var fileInfo = directoryService.GetFile(item.Path);
+ var fileInfo = directoryService.GetFileSystemEntry(item.Path);
if (fileInfo is null)
{
return false;
diff --git a/MediaBrowser.Controller/Providers/DirectoryService.cs b/MediaBrowser.Controller/Providers/DirectoryService.cs
index 56b07ebae..5ab1e2798 100644
--- a/MediaBrowser.Controller/Providers/DirectoryService.cs
+++ b/MediaBrowser.Controller/Providers/DirectoryService.cs
@@ -62,9 +62,21 @@ namespace MediaBrowser.Controller.Providers
public FileSystemMetadata? GetFile(string path)
{
+ var entry = GetFileSystemEntry(path);
+ return entry != null && !entry.IsDirectory ? entry : null;
+ }
+
+ public FileSystemMetadata? GetDirectory(string path)
+ {
+ var entry = GetFileSystemEntry(path);
+ return entry != null && entry.IsDirectory ? entry : null;
+ }
+
+ public FileSystemMetadata? GetFileSystemEntry(string path)
+ {
if (!_fileCache.TryGetValue(path, out var result))
{
- var file = _fileSystem.GetFileInfo(path);
+ var file = _fileSystem.GetFileSystemInfo(path);
if (file.Exists)
{
result = file;
diff --git a/MediaBrowser.Controller/Providers/IDirectoryService.cs b/MediaBrowser.Controller/Providers/IDirectoryService.cs
index a3c06cde5..1babf73af 100644
--- a/MediaBrowser.Controller/Providers/IDirectoryService.cs
+++ b/MediaBrowser.Controller/Providers/IDirectoryService.cs
@@ -15,6 +15,10 @@ namespace MediaBrowser.Controller.Providers
FileSystemMetadata? GetFile(string path);
+ FileSystemMetadata? GetDirectory(string path);
+
+ FileSystemMetadata? GetFileSystemEntry(string path);
+
IReadOnlyList<string> GetFilePaths(string path);
IReadOnlyList<string> GetFilePaths(string path, bool clearCache, bool sort = false);