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.Controller | |
| parent | 1f1eab209a289a0ad8ba37f49caf272a6fd9c104 (diff) | |
fixes #296 - Prevent non-movie videos from appearing in Movies view
Diffstat (limited to 'MediaBrowser.Controller')
11 files changed, 79 insertions, 11 deletions
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 5e068c2610..5a3fb88188 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -1,6 +1,5 @@ -using System; -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Entities; +using System; using System.Collections.Generic; using System.IO; using System.Linq; diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs new file mode 100644 index 0000000000..983ce1567c --- /dev/null +++ b/MediaBrowser.Controller/Entities/MusicVideo.cs @@ -0,0 +1,42 @@ +using MediaBrowser.Model.Entities; +using System.Runtime.Serialization; + +namespace MediaBrowser.Controller.Entities +{ + public class MusicVideo : Video + { + /// <summary> + /// Should be overridden to return the proper folder where metadata lives + /// </summary> + /// <value>The meta location.</value> + [IgnoreDataMember] + public override string MetaLocation + { + get + { + return VideoType == VideoType.VideoFile || VideoType == VideoType.Iso ? System.IO.Path.GetDirectoryName(Path) : Path; + } + } + + /// <summary> + /// Gets the user data key. + /// </summary> + /// <returns>System.String.</returns> + public override string GetUserDataKey() + { + return this.GetProviderId(MetadataProviders.Tmdb) ?? this.GetProviderId(MetadataProviders.Imdb) ?? base.GetUserDataKey(); + } + + /// <summary> + /// Needed because the resolver stops at the movie folder and we find the video inside. + /// </summary> + /// <value><c>true</c> if [use parent path to create resolve args]; otherwise, <c>false</c>.</value> + protected override bool UseParentPathToCreateResolveArgs + { + get + { + return VideoType == VideoType.VideoFile || VideoType == VideoType.Iso; + } + } + } +} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 1a97201d8a..cdcc456223 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -73,6 +73,7 @@ <Compile Include="Configuration\IServerConfigurationManager.cs" /> <Compile Include="Dto\SessionInfoDtoBuilder.cs" /> <Compile Include="Entities\Audio\MusicAlbumDisc.cs" /> + <Compile Include="Entities\MusicVideo.cs" /> <Compile Include="Library\ILibraryPostScanTask.cs" /> <Compile Include="Library\ILibraryPrescanTask.cs" /> <Compile Include="Providers\Movies\FanArtMovieUpdatesPrescanTask.cs" /> diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs index 8f55d5b47c..7ea399fe68 100644 --- a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs +++ b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs @@ -235,7 +235,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo /// <param name="video">The video.</param> private void AddExternalSubtitles(Video video) { - var useParent = (video.VideoType == VideoType.VideoFile || video.VideoType == VideoType.Iso) && !(video is Movie); + var useParent = (video.VideoType == VideoType.VideoFile || video.VideoType == VideoType.Iso) && !(video is Movie) && !(video is MusicVideo); if (useParent && video.Parent == null) { diff --git a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs index dc71a860cc..ab7f87d696 100644 --- a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs @@ -103,7 +103,7 @@ namespace MediaBrowser.Controller.Providers.Movies return !trailer.IsLocalTrailer; } - return item is Movie || item is BoxSet; + return item is Movie || item is BoxSet || item is MusicVideo; } /// <summary> diff --git a/MediaBrowser.Controller/Providers/Movies/MovieDbImagesProvider.cs b/MediaBrowser.Controller/Providers/Movies/MovieDbImagesProvider.cs index 17d284edb9..e93a936a98 100644 --- a/MediaBrowser.Controller/Providers/Movies/MovieDbImagesProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/MovieDbImagesProvider.cs @@ -82,7 +82,7 @@ namespace MediaBrowser.Controller.Providers.Movies } // Don't support local trailers - return item is Movie || item is BoxSet; + return item is Movie || item is BoxSet || item is MusicVideo; } /// <summary> diff --git a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs index 097b425874..e3e1448443 100644 --- a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs @@ -100,7 +100,7 @@ namespace MediaBrowser.Controller.Providers.Movies } // Don't support local trailers - return item is Movie || item is BoxSet; + return item is Movie || item is BoxSet || item is MusicVideo; } /// <summary> diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs index 1556658d63..3d03903845 100644 --- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs +++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs @@ -23,7 +23,14 @@ namespace MediaBrowser.Controller.Providers.Movies public override bool Supports(BaseItem item) { - return item is Movie || item is BoxSet; + var trailer = item as Trailer; + + if (trailer != null) + { + return !trailer.IsLocalTrailer; + } + + return item is Movie || item is BoxSet || item is MusicVideo; } /// <summary> diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs index 40c6feb617..25fd94138f 100644 --- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs +++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs @@ -25,7 +25,14 @@ namespace MediaBrowser.Controller.Providers.Movies /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns> public override bool Supports(BaseItem item) { - return item is Movie || item is BoxSet; + var trailer = item as Trailer; + + if (trailer != null) + { + return !trailer.IsLocalTrailer; + } + + return item is Movie || item is BoxSet || item is MusicVideo; } /// <summary> diff --git a/MediaBrowser.Controller/Providers/Movies/OpenMovieDatabaseProvider.cs b/MediaBrowser.Controller/Providers/Movies/OpenMovieDatabaseProvider.cs index ec33a17140..855e527bfd 100644 --- a/MediaBrowser.Controller/Providers/Movies/OpenMovieDatabaseProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/OpenMovieDatabaseProvider.cs @@ -87,7 +87,7 @@ namespace MediaBrowser.Controller.Providers.Movies return !trailer.IsLocalTrailer; } - return item is Movie; + return item is Movie || item is MusicVideo; } /// <summary> diff --git a/MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs b/MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs index c2536cd604..3decbc0a40 100644 --- a/MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs +++ b/MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs @@ -20,6 +20,18 @@ namespace MediaBrowser.Controller.Resolvers /// <returns>`0.</returns> protected override T Resolve(ItemResolveArgs args) { + return ResolveVideo<T>(args); + } + + /// <summary> + /// Resolves the video. + /// </summary> + /// <typeparam name="TVideoType">The type of the T video type.</typeparam> + /// <param name="args">The args.</param> + /// <returns>``0.</returns> + protected TVideoType ResolveVideo<TVideoType>(ItemResolveArgs args) + where TVideoType : Video, new() + { // If the path is a file check for a matching extensions if (!args.IsDirectory) { @@ -30,7 +42,7 @@ namespace MediaBrowser.Controller.Resolvers var type = string.Equals(extension, ".iso", StringComparison.OrdinalIgnoreCase) || string.Equals(extension, ".img", StringComparison.OrdinalIgnoreCase) ? VideoType.Iso : VideoType.VideoFile; - return new T + return new TVideoType { VideoType = type, Path = args.Path |
