@ -207,14 +207,18 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
// Find movies with their own folders
if ( args . IsDirectory )
{
var files = args . FileSystemChildren
. Where ( i = > ! LibraryManager . IgnoreFile ( i , args . Parent ) )
. ToList ( ) ;
if ( string . Equals ( collectionType , CollectionType . MusicVideos , StringComparison . OrdinalIgnoreCase ) )
{
return null ;
return FindMovie < MusicVideo > ( args . Path , args . Parent , files , args . DirectoryService , collectionType , false ) ;
}
if ( string . Equals ( collectionType , CollectionType . HomeVideos , StringComparison . OrdinalIgnoreCase ) )
{
return null ;
return FindMovie < Video > ( args . Path , args . Parent , files , args . DirectoryService , collectionType , false ) ;
}
if ( string . IsNullOrEmpty ( collectionType ) )
@ -222,6 +226,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
// Owned items will be caught by the plain video resolver
if ( args . Parent = = null )
{
//return FindMovie<Video>(args.Path, args.Parent, files, args.DirectoryService, collectionType);
return null ;
}
@ -231,21 +236,13 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
}
{
var files = args . FileSystemChildren
. Where ( i = > ! LibraryManager . IgnoreFile ( i , args . Parent ) )
. ToList ( ) ;
return FindMovie < Movie > ( args . Path , args . Parent , files , args . DirectoryService , collectionType ) ;
return FindMovie < Movie > ( args . Path , args . Parent , files , args . DirectoryService , collectionType , true ) ;
}
}
if ( string . Equals ( collectionType , CollectionType . Movies , StringComparison . OrdinalIgnoreCase ) )
{
var files = args . FileSystemChildren
. Where ( i = > ! LibraryManager . IgnoreFile ( i , args . Parent ) )
. ToList ( ) ;
return FindMovie < Movie > ( args . Path , args . Parent , files , args . DirectoryService , collectionType ) ;
return FindMovie < Movie > ( args . Path , args . Parent , files , args . DirectoryService , collectionType , true ) ;
}
return null ;
@ -360,13 +357,8 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
/// Finds a movie based on a child file system entries
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="path">The path.</param>
/// <param name="parent">The parent.</param>
/// <param name="fileSystemEntries">The file system entries.</param>
/// <param name="directoryService">The directory service.</param>
/// <param name="collectionType">Type of the collection.</param>
/// <returns>Movie.</returns>
private T FindMovie < T > ( string path , Folder parent , List < FileSystemMetadata > fileSystemEntries , IDirectoryService directoryService , string collectionType )
private T FindMovie < T > ( string path , Folder parent , List < FileSystemMetadata > fileSystemEntries , IDirectoryService directoryService , string collectionType , bool allowFilesAsFolders )
where T : Video , new ( )
{
var multiDiscFolders = new List < FileSystemMetadata > ( ) ;
@ -413,23 +405,27 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
}
}
var supportsMultiVersion = ! string . Equals ( collectionType , CollectionType . HomeVideos ) & &
! string . Equals ( collectionType , CollectionType . Photos ) & &
! string . Equals ( collectionType , CollectionType . MusicVideos ) ;
if ( allowFilesAsFolders )
{
// TODO: Allow GetMultiDiscMovie in here
var supportsMultiVersion = ! string . Equals ( collectionType , CollectionType . HomeVideos ) & &
! string . Equals ( collectionType , CollectionType . Photos ) & &
! string . Equals ( collectionType , CollectionType . MusicVideos ) ;
var result = ResolveVideos < T > ( parent , fileSystemEntries , directoryService , supportsMultiVersion ) ;
var result = ResolveVideos < T > ( parent , fileSystemEntries , directoryService , supportsMultiVersion ) ;
if ( result . Items . Count = = 1 )
{
var movie = ( T ) result . Items [ 0 ] ;
movie . IsInMixedFolder = false ;
movie . Name = Path . GetFileName ( movie . ContainingFolderPath ) ;
return movie ;
}
if ( result . Items . Count = = 1 )
{
var movie = ( T ) result . Items [ 0 ] ;
movie . IsInMixedFolder = false ;
movie . Name = Path . GetFileName ( movie . ContainingFolderPath ) ;
return movie ;
}
if ( result . Items . Count = = 0 & & multiDiscFolders . Count > 0 )
{
return GetMultiDiscMovie < T > ( multiDiscFolders , directoryService ) ;
if ( result . Items . Count = = 0 & & multiDiscFolders . Count > 0 )
{
return GetMultiDiscMovie < T > ( multiDiscFolders , directoryService ) ;
}
}
return null ;