aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs47
1 files changed, 39 insertions, 8 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index e335f4ad5..589f8c9f0 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -268,7 +268,9 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
if (multiDiscFolders.Count > 0)
{
- return GetMultiDiscMovie<T>(multiDiscFolders);
+ var folders = fileSystemEntries.Where(child => (child.Attributes & FileAttributes.Directory) == FileAttributes.Directory);
+
+ return GetMultiDiscMovie<T>(multiDiscFolders, folders);
}
return null;
@@ -278,25 +280,26 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
/// Gets the multi disc movie.
/// </summary>
/// <typeparam name="T"></typeparam>
- /// <param name="folders">The folders.</param>
+ /// <param name="multiDiscFolders">The folders.</param>
+ /// <param name="allFolders">All folders.</param>
/// <returns>``0.</returns>
- private T GetMultiDiscMovie<T>(List<FileSystemInfo> folders)
+ private T GetMultiDiscMovie<T>(List<FileSystemInfo> multiDiscFolders, IEnumerable<FileSystemInfo> allFolders)
where T : Video, new()
{
- var videoType = VideoType.BluRay;
+ var videoTypes = new List<VideoType>();
- var folderPaths = folders.Select(i => i.FullName).Where(i =>
+ var folderPaths = multiDiscFolders.Select(i => i.FullName).Where(i =>
{
var subfolders = Directory.GetDirectories(i).Select(Path.GetFileName).ToList();
if (subfolders.Any(IsDvdDirectory))
{
- videoType = VideoType.Dvd;
+ videoTypes.Add(VideoType.Dvd);
return true;
}
if (subfolders.Any(IsBluRayDirectory))
{
- videoType = VideoType.BluRay;
+ videoTypes.Add(VideoType.BluRay);
return true;
}
@@ -304,18 +307,46 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
}).OrderBy(i => i).ToList();
+ // If different video types were found, don't allow this
+ if (videoTypes.Count > 0 && videoTypes.Any(i => i != videoTypes[0]))
+ {
+ return null;
+ }
+
if (folderPaths.Count == 0)
{
return null;
}
+ // If there are other folders side by side that are folder rips, don't allow it
+ // TODO: Improve this to return null if any folder is present aside from our regularly ignored folders
+ if (allFolders.Except(multiDiscFolders).Any(i =>
+ {
+ var subfolders = Directory.GetDirectories(i.FullName).Select(Path.GetFileName).ToList();
+
+ if (subfolders.Any(IsDvdDirectory))
+ {
+ return true;
+ }
+ if (subfolders.Any(IsBluRayDirectory))
+ {
+ return true;
+ }
+
+ return false;
+
+ }))
+ {
+ return null;
+ }
+
return new T
{
Path = folderPaths[0],
IsMultiPart = true,
- VideoType = videoType
+ VideoType = videoTypes[0]
};
}