using MediaBrowser.Controller.Providers ;
using MediaBrowser.Model.Configuration ;
using MediaBrowser.Model.Entities ;
using System.Collections.Generic ;
using MediaBrowser.Model.Providers ;
using MediaBrowser.Model.Serialization ;
namespace MediaBrowser.Controller.Entities
{
/// <summary>
/// Class Trailer
/// </summary>
public class Trailer : Video , IHasLookupInfo < TrailerInfo >
{
public Trailer ( )
{
RemoteTrailers = new List < MediaUrl > ( ) ;
TrailerTypes = new List < TrailerType > { TrailerType . LocalTrailer } ;
}
public List < TrailerType > TrailerTypes { get ; set ; }
public List < MediaUrl > RemoteTrailers { get ; set ; }
[IgnoreDataMember]
public bool IsLocalTrailer
{
get { return TrailerTypes . Contains ( TrailerType . LocalTrailer ) ; }
}
public override double? GetDefaultPrimaryImageAspectRatio ( )
{
double value = 2 ;
value / = 3 ;
return value ;
}
public override UnratedItem GetBlockUnratedType ( )
{
return UnratedItem . Trailer ;
}
public TrailerInfo GetLookupInfo ( )
{
var info = GetItemLookupInfo < TrailerInfo > ( ) ;
info . IsLocalTrailer = TrailerTypes . Contains ( TrailerType . LocalTrailer ) ;
if ( ! IsInMixedFolder & & LocationType = = LocationType . FileSystem )
{
info . Name = System . IO . Path . GetFileName ( ContainingFolderPath ) ;
}
return info ;
}
public override bool BeforeMetadataRefresh ( )
{
var hasChanges = base . BeforeMetadataRefresh ( ) ;
if ( ! ProductionYear . HasValue )
{
var info = LibraryManager . ParseName ( Name ) ;
var yearInName = info . Year ;
if ( yearInName . HasValue )
{
ProductionYear = yearInName ;
hasChanges = true ;
}
else
{
// Try to get the year from the folder name
if ( ! IsInMixedFolder )
{
info = LibraryManager . ParseName ( System . IO . Path . GetFileName ( ContainingFolderPath ) ) ;
yearInName = info . Year ;
if ( yearInName . HasValue )
{
ProductionYear = yearInName ;
hasChanges = true ;
}
}
}
}
return hasChanges ;
}
public override List < ExternalUrl > GetRelatedUrls ( )
{
var list = base . GetRelatedUrls ( ) ;
var imdbId = this . GetProviderId ( MetadataProviders . Imdb ) ;
if ( ! string . IsNullOrWhiteSpace ( imdbId ) )
{
list . Add ( new ExternalUrl
{
Name = "Trakt" ,
Url = string . Format ( "https://trakt.tv/movies/{0}" , imdbId )
} ) ;
}
return list ;
}
[IgnoreDataMember]
public override bool StopRefreshIfLocalMetadataFound
{
get
{
// Need people id's from internet metadata
return false ;
}
}
}
}