@ -1,17 +1,15 @@
using MediaBrowser.Common.IO ;
using MediaBrowser.Controller.Entities.Audio ;
using MediaBrowser.Controller.Entities.TV ;
using MediaBrowser.Controller.Library ;
using MediaBrowser.Controller.Providers ;
using MediaBrowser.Controller.Resolvers ;
using MediaBrowser.Model.Entities ;
using MediaBrowser.Model.Logging ;
using MediaBrowser.Naming.Common ;
using MediaBrowser.Naming.TV ;
using System ;
using System.Collections.Generic ;
using System.IO ;
using MediaBrowser.Naming.Common ;
using MediaBrowser.Naming.IO ;
using MediaBrowser.Naming.TV ;
namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
{
@ -60,10 +58,8 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
var collectionType = args . GetCollectionType ( ) ;
var isTvShowsFolder = string . Equals ( collectionType , CollectionType . TvShows , StringComparison . OrdinalIgnoreCase ) ;
// If there's a collection type and it's not tv, it can't be a series
if ( ! isTvShowsFolder )
if ( ! string . Equals ( collectionType , CollectionType . TvShows , StringComparison . OrdinalIgnoreCase ) )
{
return null ;
}
@ -73,7 +69,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
return null ;
}
if ( IsSeriesFolder ( args . Path , collectionType, args. FileSystemChildren , args . DirectoryService , _fileSystem , _logger , _libraryManager ) )
if ( IsSeriesFolder ( args . Path , args. FileSystemChildren , args . DirectoryService , _fileSystem , _logger , _libraryManager ) )
{
return new Series
{
@ -90,14 +86,13 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
/// Determines whether [is series folder] [the specified path].
/// </summary>
/// <param name="path">The path.</param>
/// <param name="collectionType">Type of the collection.</param>
/// <param name="fileSystemChildren">The file system children.</param>
/// <param name="directoryService">The directory service.</param>
/// <param name="fileSystem">The file system.</param>
/// <param name="logger">The logger.</param>
/// <param name="libraryManager">The library manager.</param>
/// <returns><c>true</c> if [is series folder] [the specified path]; otherwise, <c>false</c>.</returns>
public static bool IsSeriesFolder ( string path , string collectionType , IEnumerable < FileSystemInfo > fileSystemChildren , IDirectoryService directoryService , IFileSystem fileSystem , ILogger logger , ILibraryManager libraryManager )
public static bool IsSeriesFolder ( string path , IEnumerable < FileSystemInfo > fileSystemChildren , IDirectoryService directoryService , IFileSystem fileSystem , ILogger logger , ILibraryManager libraryManager )
{
foreach ( var child in fileSystemChildren )
{
@ -118,7 +113,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
if ( ( attributes & FileAttributes . Directory ) = = FileAttributes . Directory )
{
if ( IsSeasonFolder ( child . FullName , collectionType ))
if ( IsSeasonFolder ( child . FullName ))
{
//logger.Debug("{0} is a series because of season folder {1}.", path, child.FullName);
return true ;
@ -130,22 +125,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
if ( libraryManager . IsVideoFile ( fullName ) | | IsVideoPlaceHolder ( fullName ) )
{
var isTvShowsFolder = string . Equals ( collectionType , CollectionType . TvShows , StringComparison . OrdinalIgnoreCase ) ;
// We can fast track this for known tv folders
if ( isTvShowsFolder )
{
return true ;
}
var resolver = new Naming . TV . EpisodeResolver ( new ExtendedNamingOptions ( ) , new Naming . Logging . NullLogger ( ) ) ;
var episodeInfo = resolver . Resolve ( fullName , FileInfoType . File , isTvShowsFolder , false ) ;
if ( episodeInfo ! = null & & ( episodeInfo . EpisodeNumber . HasValue | | episodeInfo . IsByDate ) )
{
return true ;
}
return true ;
}
}
}
@ -176,12 +156,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
/// Determines whether [is season folder] [the specified path].
/// </summary>
/// <param name="path">The path.</param>
/// <param name="collectionType">Type of the collection.</param>
/// <returns><c>true</c> if [is season folder] [the specified path]; otherwise, <c>false</c>.</returns>
private static bool IsSeasonFolder ( string path , string collectionType )
private static bool IsSeasonFolder ( string path )
{
var isTvFolder = string . Equals ( collectionType , CollectionType . TvShows , StringComparison . OrdinalIgnoreCase ) ;
var seasonNumber = new SeasonPathParser ( new ExtendedNamingOptions ( ) , new RegexProvider ( ) ) . Parse ( path , isTvFolder ) . SeasonNumber ;
var seasonNumber = new SeasonPathParser ( new ExtendedNamingOptions ( ) , new RegexProvider ( ) ) . Parse ( path , true ) . SeasonNumber ;
return seasonNumber . HasValue ;
}