aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs28
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs8
-rw-r--r--MediaBrowser.Controller/Library/ILibraryManager.cs10
-rw-r--r--MediaBrowser.Controller/Resolvers/IItemResolver.cs23
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>();
+ }
+ }
}