using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Users;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Runtime.Serialization;
using MediaBrowser.Controller.Entities.Movies;
namespace MediaBrowser.Controller.Entities
{
///
/// Class Trailer
///
public class Trailer : Video, IHasCriticRating, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTaglines, IHasMetascore, IHasLookupInfo
{
public List ProductionLocations { get; set; }
public Trailer()
{
RemoteTrailers = new List();
Taglines = new List();
Keywords = new List();
ProductionLocations = new List();
TrailerTypes = new List();
}
public List TrailerTypes { get; set; }
public float? Metascore { get; set; }
public List RemoteTrailers { get; set; }
public List Keywords { get; set; }
///
/// Gets or sets the taglines.
///
/// The taglines.
public List Taglines { get; set; }
///
/// Gets or sets the budget.
///
/// The budget.
public double? Budget { get; set; }
///
/// Gets or sets the revenue.
///
/// The revenue.
public double? Revenue { get; set; }
///
/// Gets or sets the critic rating.
///
/// The critic rating.
public float? CriticRating { get; set; }
///
/// Gets or sets the critic rating summary.
///
/// The critic rating summary.
public string CriticRatingSummary { get; set; }
protected override string CreateUserDataKey()
{
var key = Movie.GetMovieUserDataKey(this);
if (!string.IsNullOrWhiteSpace(key))
{
key = key + "-trailer";
// Make sure different trailers have their own data.
if (RunTimeTicks.HasValue)
{
key += "-" + RunTimeTicks.Value.ToString(CultureInfo.InvariantCulture);
}
return key;
}
return base.CreateUserDataKey();
}
public override UnratedItem GetBlockUnratedType()
{
return UnratedItem.Trailer;
}
public TrailerInfo GetLookupInfo()
{
var info = GetItemLookupInfo();
info.IsLocalTrailer = TrailerTypes.Contains(TrailerType.LocalTrailer);
if (!IsInMixedFolder)
{
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;
}
}
}