diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-05-27 21:59:26 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-05-27 21:59:26 -0400 |
| commit | 657097ee1511824960ca39c3b8c6c23bda5a840f (patch) | |
| tree | b738d23436faf03d975041364b00b62605b5ce7e /MediaBrowser.Server.Implementations/Library | |
| parent | 1f1eab209a289a0ad8ba37f49caf272a6fd9c104 (diff) | |
fixes #296 - Prevent non-movie videos from appearing in Movies view
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 33071080d..ab5b6a58a 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies /// <summary> /// Class MovieResolver /// </summary> - public class MovieResolver : BaseVideoResolver<Movie> + public class MovieResolver : BaseVideoResolver<Video> { private IServerApplicationPaths ApplicationPaths { get; set; } @@ -43,10 +43,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies /// Resolves the specified args. /// </summary> /// <param name="args">The args.</param> - /// <returns>Movie.</returns> - protected override Movie Resolve(ItemResolveArgs args) + /// <returns>Video.</returns> + protected override Video Resolve(ItemResolveArgs args) { - // Must be a directory and under a 'Movies' VF + // Must be a directory if (args.IsDirectory) { // Avoid expensive tests against VF's and all their children by not allowing this @@ -70,8 +70,22 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies return null; } - // The movie must be a video file - return FindMovie(args); + // Since the looping is expensive, this is an optimization to help us avoid it + if (args.ContainsMetaFileByName("series.xml") || args.Path.IndexOf("[tvdbid", StringComparison.OrdinalIgnoreCase) != -1) + { + return null; + } + + if (args.Path.IndexOf("[trailers]", StringComparison.OrdinalIgnoreCase) != -1) + { + return FindMovie<Trailer>(args); + } + if (args.Path.IndexOf("[musicvideos]", StringComparison.OrdinalIgnoreCase) != -1) + { + return FindMovie<MusicVideo>(args); + } + + return FindMovie<Movie>(args); } return null; @@ -82,7 +96,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies /// </summary> /// <param name="item">The item.</param> /// <param name="args">The args.</param> - protected override void SetInitialItemValues(Movie item, ItemResolveArgs args) + protected override void SetInitialItemValues(Video item, ItemResolveArgs args) { base.SetInitialItemValues(item, args); @@ -93,7 +107,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies /// Sets the provider id from path. /// </summary> /// <param name="item">The item.</param> - private void SetProviderIdFromPath(Movie item) + private void SetProviderIdFromPath(Video item) { //we need to only look at the name of this actual item (not parents) var justName = Path.GetFileName(item.Path); @@ -111,18 +125,13 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies /// </summary> /// <param name="args">The args.</param> /// <returns>Movie.</returns> - private Movie FindMovie(ItemResolveArgs args) + private T FindMovie<T>(ItemResolveArgs args) + where T : Video, new () { - // Since the looping is expensive, this is an optimization to help us avoid it - if (args.ContainsMetaFileByName("series.xml") || args.Path.IndexOf("[tvdbid", StringComparison.OrdinalIgnoreCase) != -1) - { - return null; - } - // Optimization to avoid having to resolve every file bool? isKnownMovie = null; - var movies = new List<Movie>(); + var movies = new List<T>(); // Loop through each child file/folder and see if we find a video foreach (var child in args.FileSystemChildren) @@ -131,7 +140,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies { if (IsDvdDirectory(child.Name)) { - return new Movie + return new T { Path = args.Path, VideoType = VideoType.Dvd @@ -139,7 +148,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies } if (IsBluRayDirectory(child.Name)) { - return new Movie + return new T { Path = args.Path, VideoType = VideoType.BluRay @@ -147,7 +156,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies } if (IsHdDvdDirectory(child.Name)) { - return new Movie + return new T { Path = args.Path, VideoType = VideoType.HdDvd @@ -169,7 +178,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies Path = child.FullName }; - var item = base.Resolve(childArgs); + var item = ResolveVideo<T>(childArgs); if (item != null) { |
