diff options
| author | Michalis Adamidis <gsnerf@gsnerf.de> | 2014-08-30 02:05:33 +0200 |
|---|---|---|
| committer | Michalis Adamidis <gsnerf@gsnerf.de> | 2014-08-30 02:05:33 +0200 |
| commit | 7c5613fc51738cb3af1ce3e7ada9eb19a54b3aed (patch) | |
| tree | dfd23a717d87e1da776a74f9952a5fae8f215b4a /MediaBrowser.Server.Implementations/Library | |
| parent | 5740a4c22d676d0050e875b0bd5455f5a303f5bd (diff) | |
| parent | 6a9dbf6ae85b4e7abcf06f7f29ef9d8b0b890876 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
3 files changed, 55 insertions, 25 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs index 7f533d416..1f9dc56f9 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs @@ -114,11 +114,11 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio /// <param name="logger">The logger.</param> /// <param name="fileSystem">The file system.</param> /// <returns><c>true</c> if the specified list contains music; otherwise, <c>false</c>.</returns> - private static bool ContainsMusic(IEnumerable<FileSystemInfo> list, + private static bool ContainsMusic(IEnumerable<FileSystemInfo> list, bool isMusicMediaFolder, - bool allowSubfolders, - IDirectoryService directoryService, - ILogger logger, + bool allowSubfolders, + IDirectoryService directoryService, + ILogger logger, IFileSystem fileSystem) { // If list contains at least 2 audio files or at least one and no video files consider it to contain music @@ -154,7 +154,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio } else if (EntityResolutionHelper.IsVideoFile(fullName)) return false; else if (EntityResolutionHelper.IsVideoPlaceHolder(fullName)) return false; - + if (foundAudio >= 2) { return true; @@ -179,10 +179,9 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio return false; } - private static bool IsMultiDiscFolder(string path) + public static bool IsMultiDiscFolder(string path) { - return false; - //return EntityResolutionHelper.IsMultiPartFolder(path); + return EntityResolutionHelper.IsMultiDiscAlbumFolder(path); } private static bool IsAdditionalSubfolderAllowed(FileSystemInfo directory) diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs new file mode 100644 index 000000000..2fcfd7086 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs @@ -0,0 +1,39 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; +using System; +using System.IO; +using System.Linq; + +namespace MediaBrowser.Server.Implementations.Library.Resolvers +{ + public class PhotoAlbumResolver : FolderResolver<PhotoAlbum> + { + /// <summary> + /// Resolves the specified args. + /// </summary> + /// <param name="args">The args.</param> + /// <returns>Trailer.</returns> + protected override PhotoAlbum Resolve(ItemResolveArgs args) + { + // Must be an image file within a photo collection + if (!args.IsRoot && args.IsDirectory && string.Equals(args.GetCollectionType(), CollectionType.Photos, StringComparison.OrdinalIgnoreCase)) + { + if (HasPhotos(args)) + { + return new PhotoAlbum + { + Path = args.Path + }; + } + } + + return null; + } + + private static bool HasPhotos(ItemResolveArgs args) + { + return args.FileSystemChildren.Any(i => ((i.Attributes & FileAttributes.Directory) != FileAttributes.Directory) && PhotoResolver.IsImageFile(i.FullName)); + } + } +} diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs index cba7aba9a..60e7edfdd 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs @@ -1,24 +1,14 @@ -using MediaBrowser.Controller; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; using System; +using System.IO; using System.Linq; namespace MediaBrowser.Server.Implementations.Library.Resolvers { public class PhotoResolver : ItemResolver<Photo> { - private readonly IServerApplicationPaths _applicationPaths; - - /// <summary> - /// Initializes a new instance of the <see cref="PhotoResolver" /> class. - /// </summary> - /// <param name="applicationPaths">The application paths.</param> - public PhotoResolver(IServerApplicationPaths applicationPaths) - { - _applicationPaths = applicationPaths; - } - /// <summary> /// Resolves the specified args. /// </summary> @@ -27,7 +17,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers protected override Photo Resolve(ItemResolveArgs args) { // Must be an image file within a photo collection - if (!args.IsDirectory && IsImageFile(args.Path) && string.Equals(args.GetCollectionType(), "photos", StringComparison.OrdinalIgnoreCase)) + if (!args.IsDirectory && IsImageFile(args.Path) && string.Equals(args.GetCollectionType(), CollectionType.Photos, StringComparison.OrdinalIgnoreCase)) { return new Photo { @@ -39,10 +29,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers } protected static string[] ImageExtensions = { ".tiff", ".jpeg", ".jpg", ".png", ".aiff" }; - protected bool IsImageFile(string path) + internal static bool IsImageFile(string path) { - return !path.EndsWith("folder.jpg", StringComparison.OrdinalIgnoreCase) - && ImageExtensions.Any(p => path.EndsWith(p, StringComparison.OrdinalIgnoreCase)); + var filename = Path.GetFileName(path); + + return !string.Equals(filename, "folder.jpg", StringComparison.OrdinalIgnoreCase) + && ImageExtensions.Contains(Path.GetExtension(path) ?? string.Empty, StringComparer.OrdinalIgnoreCase); } } |
