aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-03-19 16:23:33 -0400
committerLuke <luke.pulverenti@gmail.com>2016-03-19 16:23:33 -0400
commit3ab212d070384c0a0000e255307aa58d15cbd0ae (patch)
tree6ca899cd7be8685771b56b0074c5b3022faa789a /MediaBrowser.Server.Implementations/Library/LibraryManager.cs
parentfd0d50ad978801164728f7f6bd067430aa090c5f (diff)
parentdb1bf5b1b55c8012e9ca3393fd59b9469ee5aeaf (diff)
Merge pull request #1563 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/LibraryManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs47
1 files changed, 29 insertions, 18 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 3c56af9e6..19b66836b 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -40,8 +40,10 @@ using CommonIO;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Library;
using MediaBrowser.Model.Net;
+using MediaBrowser.Server.Implementations.Library.Resolvers;
using MoreLinq;
using SortOrder = MediaBrowser.Model.Entities.SortOrder;
+using VideoResolver = MediaBrowser.Naming.Video.VideoResolver;
namespace MediaBrowser.Server.Implementations.Library
{
@@ -347,11 +349,7 @@ namespace MediaBrowser.Server.Implementations.Library
private void RegisterItem(Guid id, BaseItem item)
{
- if (item is LiveTvProgram)
- {
- return;
- }
- if (item is IChannelItem)
+ if (item.SourceType != SourceType.Library)
{
return;
}
@@ -458,10 +456,11 @@ namespace MediaBrowser.Server.Implementations.Library
/// Resolves the item.
/// </summary>
/// <param name="args">The args.</param>
+ /// <param name="resolvers">The resolvers.</param>
/// <returns>BaseItem.</returns>
- private BaseItem ResolveItem(ItemResolveArgs args)
+ private BaseItem ResolveItem(ItemResolveArgs args, IItemResolver[] resolvers)
{
- var item = EntityResolvers.Select(r => Resolve(args, r))
+ var item = (resolvers ?? EntityResolvers).Select(r => Resolve(args, r))
.FirstOrDefault(i => i != null);
if (item != null)
@@ -560,10 +559,10 @@ namespace MediaBrowser.Server.Implementations.Library
public BaseItem ResolvePath(FileSystemMetadata fileInfo,
Folder parent = null)
{
- return ResolvePath(fileInfo, new DirectoryService(_logger, _fileSystem), parent);
+ return ResolvePath(fileInfo, new DirectoryService(_logger, _fileSystem), null, parent);
}
- private BaseItem ResolvePath(FileSystemMetadata fileInfo, IDirectoryService directoryService, Folder parent = null, string collectionType = null)
+ private BaseItem ResolvePath(FileSystemMetadata fileInfo, IDirectoryService directoryService, IItemResolver[] resolvers, Folder parent = null, string collectionType = null)
{
if (fileInfo == null)
{
@@ -619,7 +618,7 @@ namespace MediaBrowser.Server.Implementations.Library
return null;
}
- return ResolveItem(args);
+ return ResolveItem(args, resolvers);
}
public bool IgnoreFile(FileSystemMetadata file, BaseItem parent)
@@ -662,11 +661,18 @@ namespace MediaBrowser.Server.Implementations.Library
public IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemMetadata> files, IDirectoryService directoryService, Folder parent, string collectionType)
{
+ return ResolvePaths(files, directoryService, parent, collectionType, EntityResolvers);
+ }
+
+ public IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemMetadata> files, IDirectoryService directoryService, Folder parent, string collectionType, IItemResolver[] resolvers)
+ {
var fileList = files.Where(i => !IgnoreFile(i, parent)).ToList();
if (parent != null)
{
- foreach (var resolver in MultiItemResolvers)
+ var multiItemResolvers = resolvers == null ? MultiItemResolvers : resolvers.OfType<IMultiItemResolver>().ToArray();
+
+ foreach (var resolver in multiItemResolvers)
{
var result = resolver.ResolveMultiple(parent, fileList, collectionType, directoryService);
@@ -679,22 +685,22 @@ namespace MediaBrowser.Server.Implementations.Library
{
ResolverHelper.SetInitialItemValues(item, parent, _fileSystem, this, directoryService);
}
- items.AddRange(ResolveFileList(result.ExtraFiles, directoryService, parent, collectionType));
+ items.AddRange(ResolveFileList(result.ExtraFiles, directoryService, parent, collectionType, resolvers));
return items;
}
}
}
- return ResolveFileList(fileList, directoryService, parent, collectionType);
+ return ResolveFileList(fileList, directoryService, parent, collectionType, resolvers);
}
- private IEnumerable<BaseItem> ResolveFileList(IEnumerable<FileSystemMetadata> fileList, IDirectoryService directoryService, Folder parent, string collectionType)
+ private IEnumerable<BaseItem> ResolveFileList(IEnumerable<FileSystemMetadata> fileList, IDirectoryService directoryService, Folder parent, string collectionType, IItemResolver[] resolvers)
{
return fileList.Select(f =>
{
try
{
- return ResolvePath(f, directoryService, parent, collectionType);
+ return ResolvePath(f, directoryService, resolvers, parent, collectionType);
}
catch (Exception ex)
{
@@ -2310,12 +2316,17 @@ namespace MediaBrowser.Server.Implementations.Library
files.AddRange(currentVideo.Extras.Where(i => string.Equals(i.ExtraType, "trailer", StringComparison.OrdinalIgnoreCase)).Select(i => _fileSystem.GetFileInfo(i.Path)));
}
- return ResolvePaths(files, directoryService, null, null)
- .OfType<Video>()
+ var resolvers = new IItemResolver[]
+ {
+ new GenericVideoResolver<Trailer>(this)
+ };
+
+ return ResolvePaths(files, directoryService, null, null, resolvers)
+ .OfType<Trailer>()
.Select(video =>
{
// Try to retrieve it from the db. If we don't find it, use the resolved version
- var dbItem = GetItemById(video.Id) as Video;
+ var dbItem = GetItemById(video.Id) as Trailer;
if (dbItem != null)
{