diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-07-12 15:56:40 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-07-12 15:56:40 -0400 |
| commit | dab5003d6bba57c27f4111653b36d39862b5b6fd (patch) | |
| tree | bdf7462c3718eb729f71b1245c3f651b016e8412 /MediaBrowser.Server.Implementations/Library/Resolvers | |
| parent | 3370fb072e71ad93c540d50d859d6cbe85552735 (diff) | |
added collection type
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/Resolvers')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/Resolvers/FolderResolver.cs | 16 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs | 29 |
2 files changed, 34 insertions, 11 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/FolderResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/FolderResolver.cs index ebe36c16e..2b498f32f 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/FolderResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/FolderResolver.cs @@ -1,6 +1,9 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; +using System; +using System.IO; +using System.Linq; namespace MediaBrowser.Server.Implementations.Library.Resolvers { @@ -37,7 +40,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers } if (args.IsVf) { - return new CollectionFolder(); + return new CollectionFolder + { + CollectionType = GetCollectionType(args) + }; } return new Folder(); @@ -45,6 +51,14 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers return null; } + + private string GetCollectionType(ItemResolveArgs args) + { + return args.FileSystemChildren + .Where(i => (i.Attributes & FileAttributes.Directory) != FileAttributes.Directory && string.Equals(".collection", i.Extension, StringComparison.OrdinalIgnoreCase)) + .Select(i => Path.GetFileNameWithoutExtension(i.FullName)) + .FirstOrDefault(); + } } /// <summary> diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index f65e2a39a..278805069 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -18,10 +18,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies public class MovieResolver : BaseVideoResolver<Video> { private IServerApplicationPaths ApplicationPaths { get; set; } + private readonly ILibraryManager _libraryManager; - public MovieResolver(IServerApplicationPaths appPaths) + public MovieResolver(IServerApplicationPaths appPaths, ILibraryManager libraryManager) { ApplicationPaths = appPaths; + _libraryManager = libraryManager; } /// <summary> @@ -73,19 +75,27 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies return null; } - // A shortcut to help us resolve faster in some cases - var isKnownMovie = args.ContainsMetaFileByName("movie.xml"); + var collectionType = args.Parent == null ? null : _libraryManager.FindCollectionType(args.Parent); - if (args.Path.IndexOf("[trailers]", StringComparison.OrdinalIgnoreCase) != -1) + if (args.Path.IndexOf("[trailers]", StringComparison.OrdinalIgnoreCase) != -1 || + string.Equals(collectionType, CollectionType.Trailers, StringComparison.OrdinalIgnoreCase)) { - return FindMovie<Trailer>(args.Path, args.FileSystemChildren, isKnownMovie); + return FindMovie<Trailer>(args.Path, args.FileSystemChildren); } - if (args.Path.IndexOf("[musicvideos]", StringComparison.OrdinalIgnoreCase) != -1) + + if (args.Path.IndexOf("[musicvideos]", StringComparison.OrdinalIgnoreCase) != -1 || + string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase)) { - return FindMovie<MusicVideo>(args.Path, args.FileSystemChildren, isKnownMovie); + return FindMovie<MusicVideo>(args.Path, args.FileSystemChildren); + } + + if (!string.IsNullOrEmpty(collectionType) && + !string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase)) + { + return null; } - return FindMovie<Movie>(args.Path, args.FileSystemChildren, isKnownMovie); + return FindMovie<Movie>(args.Path, args.FileSystemChildren); } return null; @@ -126,9 +136,8 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies /// <typeparam name="T"></typeparam> /// <param name="path">The path.</param> /// <param name="fileSystemEntries">The file system entries.</param> - /// <param name="isKnownMovie">if set to <c>true</c> [is known movie].</param> /// <returns>Movie.</returns> - private T FindMovie<T>(string path, IEnumerable<FileSystemInfo> fileSystemEntries, bool isKnownMovie) + private T FindMovie<T>(string path, IEnumerable<FileSystemInfo> fileSystemEntries) where T : Video, new() { var movies = new List<T>(); |
