diff options
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 28 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/ILibraryManager.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/IItemResolver.cs | 23 |
4 files changed, 45 insertions, 24 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 5f1d45fc8..072555986 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -53,16 +53,6 @@ namespace MediaBrowser.Controller.Entities public static string ThemeSongFilename = "theme"; public static string ThemeVideosFolderName = "backdrops"; - public static List<KeyValuePair<string, ExtraType>> ExtraSuffixes = new List<KeyValuePair<string, ExtraType>> - { - new KeyValuePair<string,ExtraType>("-trailer", ExtraType.Trailer), - new KeyValuePair<string,ExtraType>("-deleted", ExtraType.DeletedScene), - new KeyValuePair<string,ExtraType>("-behindthescenes", ExtraType.BehindTheScenes), - new KeyValuePair<string,ExtraType>("-interview", ExtraType.Interview), - new KeyValuePair<string,ExtraType>("-scene", ExtraType.Scene), - new KeyValuePair<string,ExtraType>("-sample", ExtraType.Sample) - }; - public List<ItemImageInfo> ImageInfos { get; set; } [IgnoreDataMember] @@ -618,7 +608,9 @@ namespace MediaBrowser.Controller.Entities .Where(i => string.Equals(FileSystem.GetFileNameWithoutExtension(i), ThemeSongFilename, StringComparison.OrdinalIgnoreCase)) ); - return LibraryManager.ResolvePaths<Audio.Audio>(files, directoryService, null).Select(audio => + return LibraryManager.ResolvePaths(files, directoryService, null) + .OfType<Audio.Audio>() + .Select(audio => { // Try to retrieve it from the db. If we don't find it, use the resolved version var dbItem = LibraryManager.GetItemById(audio.Id) as Audio.Audio; @@ -628,10 +620,7 @@ namespace MediaBrowser.Controller.Entities audio = dbItem; } - if (audio != null) - { - audio.ExtraType = ExtraType.ThemeSong; - } + audio.ExtraType = ExtraType.ThemeSong; return audio; @@ -649,7 +638,9 @@ namespace MediaBrowser.Controller.Entities .Where(i => string.Equals(i.Name, ThemeVideosFolderName, StringComparison.OrdinalIgnoreCase)) .SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly)); - return LibraryManager.ResolvePaths<Video>(files, directoryService, null).Select(item => + return LibraryManager.ResolvePaths(files, directoryService, null) + .OfType<Video>() + .Select(item => { // Try to retrieve it from the db. If we don't find it, use the resolved version var dbItem = LibraryManager.GetItemById(item.Id) as Video; @@ -659,10 +650,7 @@ namespace MediaBrowser.Controller.Entities item = dbItem; } - if (item != null) - { - item.ExtraType = ExtraType.ThemeVideo; - } + item.ExtraType = ExtraType.ThemeVideo; return item; diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 8afa376b3..288972d7c 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -696,7 +696,7 @@ namespace MediaBrowser.Controller.Entities { var collectionType = LibraryManager.FindCollectionType(this); - return LibraryManager.ResolvePaths<BaseItem>(GetFileSystemChildren(directoryService), directoryService, this, collectionType); + return LibraryManager.ResolvePaths(GetFileSystemChildren(directoryService), directoryService, this, collectionType); } /// <summary> @@ -741,6 +741,12 @@ namespace MediaBrowser.Controller.Entities private BaseItem RetrieveChild(BaseItem child) { + if (child.Id == Guid.Empty) + { + Logger.Error("Item found with empty Id: " + (child.Path ?? child.Name)); + return null; + } + var item = LibraryManager.GetMemoryItemById(child.Id); if (item != null) diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index d20c611ad..33dea4dca 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -24,7 +24,9 @@ namespace MediaBrowser.Controller.Library /// <param name="parent">The parent.</param> /// <param name="collectionType">Type of the collection.</param> /// <returns>BaseItem.</returns> - BaseItem ResolvePath(FileSystemInfo fileInfo, Folder parent = null, string collectionType = null); + BaseItem ResolvePath(FileSystemInfo fileInfo, + Folder parent = null, + string collectionType = null); /// <summary> /// Resolves a set of files into a list of BaseItem @@ -35,8 +37,10 @@ namespace MediaBrowser.Controller.Library /// <param name="parent">The parent.</param> /// <param name="collectionType">Type of the collection.</param> /// <returns>List{``0}.</returns> - List<T> ResolvePaths<T>(IEnumerable<FileSystemInfo> files, IDirectoryService directoryService, Folder parent, string collectionType = null) - where T : BaseItem; + IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemInfo> files, + IDirectoryService directoryService, + Folder parent, string + collectionType = null); /// <summary> /// Gets the root folder. diff --git a/MediaBrowser.Controller/Resolvers/IItemResolver.cs b/MediaBrowser.Controller/Resolvers/IItemResolver.cs index 780d5d013..fec6be55c 100644 --- a/MediaBrowser.Controller/Resolvers/IItemResolver.cs +++ b/MediaBrowser.Controller/Resolvers/IItemResolver.cs @@ -1,5 +1,8 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; +using System.Collections.Generic; +using System.IO; namespace MediaBrowser.Controller.Resolvers { @@ -20,4 +23,24 @@ namespace MediaBrowser.Controller.Resolvers /// <value>The priority.</value> ResolverPriority Priority { get; } } + + public interface IMultiItemResolver + { + MultiItemResolverResult ResolveMultiple(Folder parent, + List<FileSystemInfo> files, + string collectionType, + IDirectoryService directoryService); + } + + public class MultiItemResolverResult + { + public List<BaseItem> Items { get; set; } + public List<FileSystemInfo> ExtraFiles { get; set; } + + public MultiItemResolverResult() + { + Items = new List<BaseItem>(); + ExtraFiles = new List<FileSystemInfo>(); + } + } } |
