mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-11-16 18:42:52 -07:00
fixed movie folders resolving incorrectly when using multi-disc naming
This commit is contained in:
parent
cd859ac2e6
commit
7881a4be0a
@ -268,7 +268,9 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|||||||
|
|
||||||
if (multiDiscFolders.Count > 0)
|
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;
|
return null;
|
||||||
@ -278,25 +280,26 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|||||||
/// Gets the multi disc movie.
|
/// Gets the multi disc movie.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
/// <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>
|
/// <returns>``0.</returns>
|
||||||
private T GetMultiDiscMovie<T>(List<FileSystemInfo> folders)
|
private T GetMultiDiscMovie<T>(List<FileSystemInfo> multiDiscFolders, IEnumerable<FileSystemInfo> allFolders)
|
||||||
where T : Video, new()
|
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();
|
var subfolders = Directory.GetDirectories(i).Select(Path.GetFileName).ToList();
|
||||||
|
|
||||||
if (subfolders.Any(IsDvdDirectory))
|
if (subfolders.Any(IsDvdDirectory))
|
||||||
{
|
{
|
||||||
videoType = VideoType.Dvd;
|
videoTypes.Add(VideoType.Dvd);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (subfolders.Any(IsBluRayDirectory))
|
if (subfolders.Any(IsBluRayDirectory))
|
||||||
{
|
{
|
||||||
videoType = VideoType.BluRay;
|
videoTypes.Add(VideoType.BluRay);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,18 +307,46 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|||||||
|
|
||||||
}).OrderBy(i => i).ToList();
|
}).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)
|
if (folderPaths.Count == 0)
|
||||||
{
|
{
|
||||||
return null;
|
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
|
return new T
|
||||||
{
|
{
|
||||||
Path = folderPaths[0],
|
Path = folderPaths[0],
|
||||||
|
|
||||||
IsMultiPart = true,
|
IsMultiPart = true,
|
||||||
|
|
||||||
VideoType = videoType
|
VideoType = videoTypes[0]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user