aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library
diff options
context:
space:
mode:
authorMichalis Adamidis <gsnerf@gsnerf.de>2014-08-30 02:05:33 +0200
committerMichalis Adamidis <gsnerf@gsnerf.de>2014-08-30 02:05:33 +0200
commit7c5613fc51738cb3af1ce3e7ada9eb19a54b3aed (patch)
treedfd23a717d87e1da776a74f9952a5fae8f215b4a /MediaBrowser.Server.Implementations/Library
parent5740a4c22d676d0050e875b0bd5455f5a303f5bd (diff)
parent6a9dbf6ae85b4e7abcf06f7f29ef9d8b0b890876 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs15
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs39
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs26
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);
}
}