2013-07-07 23:31:54 +00:00
using MediaBrowser.Common.Extensions ;
using MediaBrowser.Controller.Entities ;
using MediaBrowser.Controller.Entities.Movies ;
2013-02-21 01:33:05 +00:00
using MediaBrowser.Controller.Library ;
2013-09-18 02:43:34 +00:00
using MediaBrowser.Model.Entities ;
2013-02-21 01:33:05 +00:00
using System ;
using System.IO ;
2013-03-03 06:58:04 +00:00
namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
2013-02-21 01:33:05 +00:00
{
/// <summary>
/// Class BoxSetResolver
/// </summary>
2013-03-03 06:58:04 +00:00
public class BoxSetResolver : FolderResolver < BoxSet >
2013-02-21 01:33:05 +00:00
{
/// <summary>
/// Resolves the specified args.
/// </summary>
/// <param name="args">The args.</param>
/// <returns>BoxSet.</returns>
protected override BoxSet Resolve ( ItemResolveArgs args )
{
// It's a boxset if all of the following conditions are met:
// Is a Directory
// Contains [boxset] in the path
if ( args . IsDirectory )
{
var filename = Path . GetFileName ( args . Path ) ;
if ( string . IsNullOrEmpty ( filename ) )
{
return null ;
}
2014-01-21 06:10:58 +00:00
// This is a bit of a one-off but it's here to combat MCM's over-aggressive placement of collection.xml files where they don't belong, including in series folders.
if ( args . ContainsMetaFileByName ( "series.xml" ) )
{
return null ;
}
2013-06-27 14:51:40 +00:00
if ( filename . IndexOf ( "[boxset]" , StringComparison . OrdinalIgnoreCase ) ! = - 1 | | args . ContainsFileSystemEntryByName ( "collection.xml" ) )
2013-02-21 01:33:05 +00:00
{
2013-07-09 02:38:18 +00:00
return new BoxSet { Path = args . Path } ;
2013-02-21 01:33:05 +00:00
}
}
return null ;
}
2013-07-07 23:31:54 +00:00
/// <summary>
/// Sets the initial item values.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="args">The args.</param>
protected override void SetInitialItemValues ( BoxSet item , ItemResolveArgs args )
{
base . SetInitialItemValues ( item , args ) ;
SetProviderIdFromPath ( item ) ;
}
/// <summary>
/// Sets the provider id from path.
/// </summary>
/// <param name="item">The item.</param>
private void SetProviderIdFromPath ( BaseItem item )
{
//we need to only look at the name of this actual item (not parents)
var justName = Path . GetFileName ( item . Path ) ;
var id = justName . GetAttributeValue ( "tmdbid" ) ;
if ( ! string . IsNullOrEmpty ( id ) )
{
item . SetProviderId ( MetadataProviders . Tmdb , id ) ;
}
}
2013-02-21 01:33:05 +00:00
}
}