diff options
Diffstat (limited to 'MediaBrowser.Controller/Entities/TV/Episode.cs')
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Episode.cs | 574 |
1 files changed, 287 insertions, 287 deletions
diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs index e963ab184e..45b4de1b3b 100644 --- a/MediaBrowser.Controller/Entities/TV/Episode.cs +++ b/MediaBrowser.Controller/Entities/TV/Episode.cs @@ -1,19 +1,19 @@ -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Configuration; -using MediaBrowser.Model.Entities; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using MediaBrowser.Model.IO; -using MediaBrowser.Model.Serialization; - -namespace MediaBrowser.Controller.Entities.TV -{ - /// <summary> - /// Class Episode - /// </summary> - public class Episode : Video, IHasTrailers, IHasLookupInfo<EpisodeInfo>, IHasSeries +using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Serialization;
+
+namespace MediaBrowser.Controller.Entities.TV
+{
+ /// <summary>
+ /// Class Episode
+ /// </summary>
+ public class Episode : Video, IHasTrailers, IHasLookupInfo<EpisodeInfo>, IHasSeries
{
public Episode()
{
@@ -26,35 +26,35 @@ namespace MediaBrowser.Controller.Entities.TV public List<Guid> RemoteTrailerIds { get; set; }
public List<MediaUrl> RemoteTrailers { get; set; }
- /// <summary> - /// Gets the season in which it aired. - /// </summary> - /// <value>The aired season.</value> - public int? AirsBeforeSeasonNumber { get; set; } - public int? AirsAfterSeasonNumber { get; set; } - public int? AirsBeforeEpisodeNumber { get; set; } - - /// <summary> - /// Gets or sets the DVD season number. - /// </summary> - /// <value>The DVD season number.</value> - public int? DvdSeasonNumber { get; set; } - /// <summary> - /// Gets or sets the DVD episode number. - /// </summary> - /// <value>The DVD episode number.</value> - public float? DvdEpisodeNumber { get; set; } - - /// <summary> - /// Gets or sets the absolute episode number. - /// </summary> - /// <value>The absolute episode number.</value> - public int? AbsoluteEpisodeNumber { get; set; } - - /// <summary> - /// This is the ending episode number for double episodes. - /// </summary> - /// <value>The index number.</value> + /// <summary>
+ /// Gets the season in which it aired.
+ /// </summary>
+ /// <value>The aired season.</value>
+ public int? AirsBeforeSeasonNumber { get; set; }
+ public int? AirsAfterSeasonNumber { get; set; }
+ public int? AirsBeforeEpisodeNumber { get; set; }
+
+ /// <summary>
+ /// Gets or sets the DVD season number.
+ /// </summary>
+ /// <value>The DVD season number.</value>
+ public int? DvdSeasonNumber { get; set; }
+ /// <summary>
+ /// Gets or sets the DVD episode number.
+ /// </summary>
+ /// <value>The DVD episode number.</value>
+ public float? DvdEpisodeNumber { get; set; }
+
+ /// <summary>
+ /// Gets or sets the absolute episode number.
+ /// </summary>
+ /// <value>The absolute episode number.</value>
+ public int? AbsoluteEpisodeNumber { get; set; }
+
+ /// <summary>
+ /// This is the ending episode number for double episodes.
+ /// </summary>
+ /// <value>The index number.</value>
public int? IndexNumberEnd { get; set; }
public string FindSeriesSortName()
@@ -62,56 +62,56 @@ namespace MediaBrowser.Controller.Entities.TV var series = Series;
return series == null ? SeriesName : series.SortName;
}
- - [IgnoreDataMember] - protected override bool SupportsOwnedItems - { - get - { - return IsStacked || MediaSourceCount > 1; - } +
+ [IgnoreDataMember]
+ protected override bool SupportsOwnedItems
+ {
+ get
+ {
+ return IsStacked || MediaSourceCount > 1;
+ }
}
[IgnoreDataMember]
public override bool SupportsInheritedParentImages
{
get { return true; }
- } - - [IgnoreDataMember] - public int? AiredSeasonNumber - { - get - { - return AirsAfterSeasonNumber ?? AirsBeforeSeasonNumber ?? ParentIndexNumber; - } - } - - [IgnoreDataMember] - public override Folder LatestItemsIndexContainer - { - get - { - return Series; - } - } - - [IgnoreDataMember] - public override Guid? DisplayParentId - { - get - { - return SeasonId; - } - } - - [IgnoreDataMember] - protected override bool EnableDefaultVideoUserDataKeys - { - get - { - return false; - } + }
+
+ [IgnoreDataMember]
+ public int? AiredSeasonNumber
+ {
+ get
+ {
+ return AirsAfterSeasonNumber ?? AirsBeforeSeasonNumber ?? ParentIndexNumber;
+ }
+ }
+
+ [IgnoreDataMember]
+ public override Folder LatestItemsIndexContainer
+ {
+ get
+ {
+ return Series;
+ }
+ }
+
+ [IgnoreDataMember]
+ public override Guid? DisplayParentId
+ {
+ get
+ {
+ return SeasonId;
+ }
+ }
+
+ [IgnoreDataMember]
+ protected override bool EnableDefaultVideoUserDataKeys
+ {
+ get
+ {
+ return false;
+ }
}
public override double? GetDefaultPrimaryImageAspectRatio()
@@ -120,64 +120,64 @@ namespace MediaBrowser.Controller.Entities.TV value /= 9;
return value;
- } - - public override List<string> GetUserDataKeys() - { - var list = base.GetUserDataKeys(); - - var series = Series; - if (series != null && ParentIndexNumber.HasValue && IndexNumber.HasValue) - { - var seriesUserDataKeys = series.GetUserDataKeys(); - var take = seriesUserDataKeys.Count; - if (seriesUserDataKeys.Count > 1) - { - take--; - } - list.InsertRange(0, seriesUserDataKeys.Take(take).Select(i => i + ParentIndexNumber.Value.ToString("000") + IndexNumber.Value.ToString("000"))); - } - - return list; - } - - /// <summary> - /// This Episode's Series Instance - /// </summary> - /// <value>The series.</value> - [IgnoreDataMember] - public Series Series - { - get - { + }
+
+ public override List<string> GetUserDataKeys()
+ {
+ var list = base.GetUserDataKeys();
+
+ var series = Series;
+ if (series != null && ParentIndexNumber.HasValue && IndexNumber.HasValue)
+ {
+ var seriesUserDataKeys = series.GetUserDataKeys();
+ var take = seriesUserDataKeys.Count;
+ if (seriesUserDataKeys.Count > 1)
+ {
+ take--;
+ }
+ list.InsertRange(0, seriesUserDataKeys.Take(take).Select(i => i + ParentIndexNumber.Value.ToString("000") + IndexNumber.Value.ToString("000")));
+ }
+
+ return list;
+ }
+
+ /// <summary>
+ /// This Episode's Series Instance
+ /// </summary>
+ /// <value>The series.</value>
+ [IgnoreDataMember]
+ public Series Series
+ {
+ get
+ {
var seriesId = SeriesId ?? FindSeriesId();
- return seriesId.HasValue ? (LibraryManager.GetItemById(seriesId.Value) as Series) : null; - } - } - - [IgnoreDataMember] - public Season Season - { - get - { + return seriesId.HasValue ? (LibraryManager.GetItemById(seriesId.Value) as Series) : null;
+ }
+ }
+
+ [IgnoreDataMember]
+ public Season Season
+ {
+ get
+ {
var seasonId = SeasonId ?? FindSeasonId();
- return seasonId.HasValue ? (LibraryManager.GetItemById(seasonId.Value) as Season) : null; - } - } - - [IgnoreDataMember] - public bool IsInSeasonFolder - { - get - { - return FindParent<Season>() != null; - } + return seasonId.HasValue ? (LibraryManager.GetItemById(seasonId.Value) as Season) : null;
+ }
+ }
+
+ [IgnoreDataMember]
+ public bool IsInSeasonFolder
+ {
+ get
+ {
+ return FindParent<Season>() != null;
+ }
}
[IgnoreDataMember]
public string SeriesPresentationUniqueKey { get; set; }
- - [IgnoreDataMember] +
+ [IgnoreDataMember]
public string SeriesName { get; set; }
[IgnoreDataMember]
@@ -187,17 +187,17 @@ namespace MediaBrowser.Controller.Entities.TV {
var series = Series;
return series == null ? null : series.PresentationUniqueKey;
- } - - public string FindSeasonName() + }
+
+ public string FindSeasonName()
{
- var season = Season; - - if (season == null) - { - if (ParentIndexNumber.HasValue) - { - return "Season " + ParentIndexNumber.Value.ToString(CultureInfo.InvariantCulture); + var season = Season;
+
+ if (season == null)
+ {
+ if (ParentIndexNumber.HasValue)
+ {
+ return "Season " + ParentIndexNumber.Value.ToString(CultureInfo.InvariantCulture);
}
return "Season Unknown";
}
@@ -231,92 +231,92 @@ namespace MediaBrowser.Controller.Entities.TV }
return season == null ? (Guid?)null : season.Id;
- } - - /// <summary> - /// Creates the name of the sort. - /// </summary> - /// <returns>System.String.</returns> - protected override string CreateSortNameInternal() - { - return (ParentIndexNumber != null ? ParentIndexNumber.Value.ToString("000 - ") : "") - + (IndexNumber != null ? IndexNumber.Value.ToString("0000 - ") : "") + Name; - } - - /// <summary> - /// Determines whether [contains episode number] [the specified number]. - /// </summary> - /// <param name="number">The number.</param> - /// <returns><c>true</c> if [contains episode number] [the specified number]; otherwise, <c>false</c>.</returns> - public bool ContainsEpisodeNumber(int number) - { - if (IndexNumber.HasValue) - { - if (IndexNumberEnd.HasValue) - { - return number >= IndexNumber.Value && number <= IndexNumberEnd.Value; - } - - return IndexNumber.Value == number; - } - - return false; - } - - [IgnoreDataMember] - public override bool SupportsRemoteImageDownloading - { - get - { - if (IsMissingEpisode) - { - return false; - } - - return true; - } - } - - [IgnoreDataMember] - public bool IsMissingEpisode - { - get - { - return LocationType == LocationType.Virtual && !IsUnaired; - } - } - - [IgnoreDataMember] - public bool IsVirtualUnaired - { - get { return LocationType == LocationType.Virtual && IsUnaired; } - } - - [IgnoreDataMember] + }
+
+ /// <summary>
+ /// Creates the name of the sort.
+ /// </summary>
+ /// <returns>System.String.</returns>
+ protected override string CreateSortName()
+ {
+ return (ParentIndexNumber != null ? ParentIndexNumber.Value.ToString("000 - ") : "")
+ + (IndexNumber != null ? IndexNumber.Value.ToString("0000 - ") : "") + Name;
+ }
+
+ /// <summary>
+ /// Determines whether [contains episode number] [the specified number].
+ /// </summary>
+ /// <param name="number">The number.</param>
+ /// <returns><c>true</c> if [contains episode number] [the specified number]; otherwise, <c>false</c>.</returns>
+ public bool ContainsEpisodeNumber(int number)
+ {
+ if (IndexNumber.HasValue)
+ {
+ if (IndexNumberEnd.HasValue)
+ {
+ return number >= IndexNumber.Value && number <= IndexNumberEnd.Value;
+ }
+
+ return IndexNumber.Value == number;
+ }
+
+ return false;
+ }
+
+ [IgnoreDataMember]
+ public override bool SupportsRemoteImageDownloading
+ {
+ get
+ {
+ if (IsMissingEpisode)
+ {
+ return false;
+ }
+
+ return true;
+ }
+ }
+
+ [IgnoreDataMember]
+ public bool IsMissingEpisode
+ {
+ get
+ {
+ return LocationType == LocationType.Virtual && !IsUnaired;
+ }
+ }
+
+ [IgnoreDataMember]
+ public bool IsVirtualUnaired
+ {
+ get { return LocationType == LocationType.Virtual && IsUnaired; }
+ }
+
+ [IgnoreDataMember]
public Guid? SeasonId { get; set; }
[IgnoreDataMember]
public Guid? SeriesId { get; set; }
public Guid? FindSeriesId()
{
- var series = FindParent<Series>(); + var series = FindParent<Series>();
return series == null ? (Guid?)null : series.Id;
- } - - public override IEnumerable<Guid> GetAncestorIds() - { - var list = base.GetAncestorIds().ToList(); - - var seasonId = SeasonId; - - if (seasonId.HasValue && !list.Contains(seasonId.Value)) - { - list.Add(seasonId.Value); - } - - return list; - } - + }
+
+ public override IEnumerable<Guid> GetAncestorIds()
+ {
+ var list = base.GetAncestorIds().ToList();
+
+ var seasonId = SeasonId;
+
+ if (seasonId.HasValue && !list.Contains(seasonId.Value))
+ {
+ list.Add(seasonId.Value);
+ }
+
+ return list;
+ }
+
public override IEnumerable<FileSystemMetadata> GetDeletePaths()
{
return new[] {
@@ -327,60 +327,60 @@ namespace MediaBrowser.Controller.Entities.TV }
}.Concat(GetLocalMetadataFilesToDelete());
}
- - public override UnratedItem GetBlockUnratedType() - { - return UnratedItem.Series; - } - - public EpisodeInfo GetLookupInfo() - { - var id = GetItemLookupInfo<EpisodeInfo>(); - - var series = Series; - - if (series != null) - { - id.SeriesProviderIds = series.ProviderIds; - } - - id.IsMissingEpisode = IsMissingEpisode; - id.IndexNumberEnd = IndexNumberEnd; - id.IsVirtualUnaired = IsVirtualUnaired; - - return id; - } - - public override bool BeforeMetadataRefresh() - { - var hasChanges = base.BeforeMetadataRefresh(); - - try - { - if (LibraryManager.FillMissingEpisodeNumbersFromPath(this)) - { - hasChanges = true; - } - } - catch (Exception ex) - { - Logger.ErrorException("Error in FillMissingEpisodeNumbersFromPath. Episode: {0}", ex, Path ?? Name ?? Id.ToString()); - } - - if (!ParentIndexNumber.HasValue) - { - var season = Season; - if (season != null) - { - if (season.ParentIndexNumber.HasValue) - { - ParentIndexNumber = season.ParentIndexNumber; - hasChanges = true; - } - } - } - - return hasChanges; - } - } -} +
+ public override UnratedItem GetBlockUnratedType()
+ {
+ return UnratedItem.Series;
+ }
+
+ public EpisodeInfo GetLookupInfo()
+ {
+ var id = GetItemLookupInfo<EpisodeInfo>();
+
+ var series = Series;
+
+ if (series != null)
+ {
+ id.SeriesProviderIds = series.ProviderIds;
+ }
+
+ id.IsMissingEpisode = IsMissingEpisode;
+ id.IndexNumberEnd = IndexNumberEnd;
+ id.IsVirtualUnaired = IsVirtualUnaired;
+
+ return id;
+ }
+
+ public override bool BeforeMetadataRefresh()
+ {
+ var hasChanges = base.BeforeMetadataRefresh();
+
+ try
+ {
+ if (LibraryManager.FillMissingEpisodeNumbersFromPath(this))
+ {
+ hasChanges = true;
+ }
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error in FillMissingEpisodeNumbersFromPath. Episode: {0}", ex, Path ?? Name ?? Id.ToString());
+ }
+
+ if (!ParentIndexNumber.HasValue)
+ {
+ var season = Season;
+ if (season != null)
+ {
+ if (season.ParentIndexNumber.HasValue)
+ {
+ ParentIndexNumber = season.ParentIndexNumber;
+ hasChanges = true;
+ }
+ }
+ }
+
+ return hasChanges;
+ }
+ }
+}
|
