diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-06-03 03:37:25 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-03 03:37:25 -0400 |
| commit | 69f00aef741b27b352eab94b5a059f5fd92a6160 (patch) | |
| tree | acbd6cee9beb5f38a4c21e8cdd485cee2a5f6f7c /MediaBrowser.Controller | |
| parent | b54b7871e39e197d4af19a6c502938fa6178c4fa (diff) | |
| parent | 7fbea5d96d9df7b5e487c534ad5c37d54d2105ea (diff) | |
Merge pull request #2687 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Controller')
22 files changed, 343 insertions, 418 deletions
diff --git a/MediaBrowser.Controller/Channels/Channel.cs b/MediaBrowser.Controller/Channels/Channel.cs index 35c2ea1aa..862c8e5ac 100644 --- a/MediaBrowser.Controller/Channels/Channel.cs +++ b/MediaBrowser.Controller/Channels/Channel.cs @@ -35,7 +35,6 @@ namespace MediaBrowser.Controller.Channels public override SourceType SourceType { get { return SourceType.Channel; } - set { } } protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query) diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs index fe8ac0919..e8ebbdb70 100644 --- a/MediaBrowser.Controller/Entities/AggregateFolder.cs +++ b/MediaBrowser.Controller/Entities/AggregateFolder.cs @@ -87,7 +87,7 @@ namespace MediaBrowser.Controller.Entities private List<Guid> _childrenIds = null; private readonly object _childIdsLock = new object(); - protected override IEnumerable<BaseItem> LoadChildren() + protected override List<BaseItem> LoadChildren() { lock (_childIdsLock) { diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 4d35531cb..873ac3104 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -131,7 +131,7 @@ namespace MediaBrowser.Controller.Entities.Audio /// Creates the name of the sort. /// </summary> /// <returns>System.String.</returns> - protected override string CreateSortNameInternal() + protected override string CreateSortName() { return (ParentIndexNumber != null ? ParentIndexNumber.Value.ToString("0000 - ") : "") + (IndexNumber != null ? IndexNumber.Value.ToString("0000 - ") : "") + Name; diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index b0b9493a5..4b232de49 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -90,7 +90,7 @@ namespace MediaBrowser.Controller.Entities.Audio } [IgnoreDataMember] - protected override IEnumerable<BaseItem> ActualChildren + public override IEnumerable<BaseItem> Children { get { @@ -99,7 +99,7 @@ namespace MediaBrowser.Controller.Entities.Audio return new List<BaseItem>(); } - return base.ActualChildren; + return base.Children; } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 346442f59..4efea94d8 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -54,7 +54,6 @@ namespace MediaBrowser.Controller.Entities ImageInfos = new List<ItemImageInfo>(); InheritedTags = new List<string>(); ProductionLocations = new List<string>(); - SourceType = SourceType.Library; } public static readonly char[] SlugReplaceChars = { '?', '/', '&' }; @@ -187,15 +186,10 @@ namespace MediaBrowser.Controller.Entities } set { - var isSortNameDefault = IsSortNameDefault(SortName); - _name = value; - if (isSortNameDefault) - { - // lazy load this again - SortName = null; - } + // lazy load this again + _sortName = null; } } @@ -279,7 +273,18 @@ namespace MediaBrowser.Controller.Entities public virtual string Path { get; set; } [IgnoreDataMember] - public virtual SourceType SourceType { get; set; } + public virtual SourceType SourceType + { + get + { + if (!string.IsNullOrWhiteSpace(ChannelId)) + { + return SourceType.Channel; + } + + return SourceType.Library; + } + } /// <summary> /// Returns the folder containing the item. @@ -586,6 +591,7 @@ namespace MediaBrowser.Controller.Entities } } + private string _forcedSortName; /// <summary> /// Gets or sets the name of the forced sort. /// </summary> @@ -593,42 +599,8 @@ namespace MediaBrowser.Controller.Entities [IgnoreDataMember] public string ForcedSortName { - get - { - var sortName = SortName; - - if (string.IsNullOrWhiteSpace(sortName)) - { - return null; - } - - if (string.Equals(sortName, CreateSortName(), StringComparison.OrdinalIgnoreCase)) - { - return null; - } - - return sortName; - } - set - { - if (string.IsNullOrWhiteSpace(value)) - { - SortName = null; - } - else - { - var newValue = CreateSortNameFromCustomValue(value); - - if (string.Equals(newValue, CreateSortName(), StringComparison.OrdinalIgnoreCase)) - { - SortName = null; - } - else - { - SortName = newValue; - } - } - } + get { return _forcedSortName; } + set { _forcedSortName = value; _sortName = null; } } private string _sortName; @@ -643,7 +615,15 @@ namespace MediaBrowser.Controller.Entities { if (_sortName == null) { - _sortName = CreateSortName(); + if (!string.IsNullOrWhiteSpace(ForcedSortName)) + { + // Need the ToLower because that's what CreateSortName does + _sortName = ModifySortChunks(ForcedSortName).ToLower(); + } + else + { + _sortName = CreateSortName(); + } } return _sortName; } @@ -653,31 +633,6 @@ namespace MediaBrowser.Controller.Entities } } - private string CreateSortNameFromCustomValue(string value) - { - return string.IsNullOrWhiteSpace(value) ? null : NormalizeCustomSortName(value); - } - - protected virtual string NormalizeCustomSortName(string value) - { - if (ConfigurationManager.Configuration.EnableSimpleSortNameHandling) - { - return value.RemoveDiacritics().ToLower(); - } - - return ModifySortChunks(value).ToLower(); - } - - public bool IsSortNameDefault(string value) - { - if (string.IsNullOrWhiteSpace(value)) - { - return true; - } - - return string.Equals(CreateSortNameFromCustomValue(value), CreateSortName(), StringComparison.OrdinalIgnoreCase); - } - public string GetInternalMetadataPath() { var basePath = ConfigurationManager.ApplicationPaths.InternalMetadataPath; @@ -699,22 +654,14 @@ namespace MediaBrowser.Controller.Entities return System.IO.Path.Combine(basePath, idString.Substring(0, 2), idString); } - protected string CreateSortName() - { - if (string.IsNullOrWhiteSpace(Name)) - { - return null; - } - - return CreateSortNameInternal(); - } - /// <summary> /// Creates the name of the sort. /// </summary> /// <returns>System.String.</returns> - protected virtual string CreateSortNameInternal() + protected virtual string CreateSortName() { + if (Name == null) return null; //some items may not have name filled in properly + if (!EnableAlphaNumericSorting) { return Name.TrimStart(); @@ -952,13 +899,6 @@ namespace MediaBrowser.Controller.Entities public float? CommunityRating { get; set; } /// <summary> - /// Gets or sets the community rating vote count. - /// </summary> - /// <value>The community rating vote count.</value> - [IgnoreDataMember] - public int? VoteCount { get; set; } - - /// <summary> /// Gets or sets the run time ticks. /// </summary> /// <value>The run time ticks.</value> @@ -1367,6 +1307,7 @@ namespace MediaBrowser.Controller.Entities public void AfterMetadataRefresh() { + _sortName = null; } /// <summary> @@ -2253,6 +2194,8 @@ namespace MediaBrowser.Controller.Entities /// </summary> public virtual bool BeforeMetadataRefresh() { + _sortName = null; + var hasChanges = false; if (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Path)) diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index 0a5faa727..8bc23a581 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -311,12 +311,12 @@ namespace MediaBrowser.Controller.Entities /// </summary> /// <value>The actual children.</value> [IgnoreDataMember] - protected override IEnumerable<BaseItem> ActualChildren + public override IEnumerable<BaseItem> Children { get { return GetActualChildren(); } } - private IEnumerable<BaseItem> GetActualChildren() + public IEnumerable<BaseItem> GetActualChildren() { return GetPhysicalFolders(true).SelectMany(c => c.Children); } diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 7566911a1..48c9b83aa 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -185,7 +185,7 @@ namespace MediaBrowser.Controller.Entities item.Id = LibraryManager.GetNewItemId(item.Path, item.GetType()); } - if (ActualChildren.Any(i => i.Id == item.Id)) + if (Children.Any(i => i.Id == item.Id)) { throw new ArgumentException(string.Format("A child with the Id {0} already exists.", item.Id)); } @@ -243,7 +243,7 @@ namespace MediaBrowser.Controller.Entities /// </summary> /// <value>The actual children.</value> [IgnoreDataMember] - protected virtual IEnumerable<BaseItem> ActualChildren + public virtual IEnumerable<BaseItem> Children { get { @@ -252,16 +252,6 @@ namespace MediaBrowser.Controller.Entities } /// <summary> - /// thread-safe access to the actual children of this folder - without regard to user - /// </summary> - /// <value>The children.</value> - [IgnoreDataMember] - public IEnumerable<BaseItem> Children - { - get { return ActualChildren.ToList(); } - } - - /// <summary> /// thread-safe access to all recursive children of this folder - without regard to user /// </summary> /// <value>The recursive children.</value> @@ -301,7 +291,7 @@ namespace MediaBrowser.Controller.Entities /// Loads our children. Validation will occur externally. /// We want this sychronous. /// </summary> - protected virtual IEnumerable<BaseItem> LoadChildren() + protected virtual List<BaseItem> LoadChildren() { //Logger.Debug("Loading children from {0} {1} {2}", GetType().Name, Id, Path); //just load our children from the repo - the library will be validated and maintained in other processes @@ -330,7 +320,9 @@ namespace MediaBrowser.Controller.Entities { var dictionary = new Dictionary<Guid, BaseItem>(); - foreach (var child in ActualChildren) + var childrenList = Children.ToList(); + + foreach (var child in childrenList) { var id = child.Id; if (dictionary.ContainsKey(id)) @@ -466,7 +458,7 @@ namespace MediaBrowser.Controller.Entities if (recursive) { - await ValidateSubFolders(ActualChildren.OfType<Folder>().ToList(), directoryService, progress, cancellationToken).ConfigureAwait(false); + await ValidateSubFolders(Children.ToList().OfType<Folder>().ToList(), directoryService, progress, cancellationToken).ConfigureAwait(false); } progress.Report(20); @@ -494,7 +486,7 @@ namespace MediaBrowser.Controller.Entities private async Task RefreshMetadataRecursive(MetadataRefreshOptions refreshOptions, bool recursive, IProgress<double> progress, CancellationToken cancellationToken) { - var children = ActualChildren.ToList(); + var children = Children.ToList(); var percentages = new Dictionary<Guid, double>(children.Count); var numComplete = 0; @@ -668,7 +660,7 @@ namespace MediaBrowser.Controller.Entities /// Get our children from the repo - stubbed for now /// </summary> /// <returns>IEnumerable{BaseItem}.</returns> - protected IEnumerable<BaseItem> GetCachedChildren() + protected List<BaseItem> GetCachedChildren() { return ItemRepository.GetItemList(new InternalItemsQuery { diff --git a/MediaBrowser.Controller/Entities/IHasMetadata.cs b/MediaBrowser.Controller/Entities/IHasMetadata.cs index aee58b445..62c67336c 100644 --- a/MediaBrowser.Controller/Entities/IHasMetadata.cs +++ b/MediaBrowser.Controller/Entities/IHasMetadata.cs @@ -26,7 +26,7 @@ namespace MediaBrowser.Controller.Entities /// <value>The date last saved.</value> DateTime DateLastSaved { get; set; } - SourceType SourceType { get; set; } + SourceType SourceType { get; } /// <summary> /// Gets or sets the date last refreshed. diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 743e7642e..f3caac492 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -148,8 +148,6 @@ namespace MediaBrowser.Controller.Entities } public string[] PresetViews { get; set; } - public SourceType[] SourceTypes { get; set; } - public SourceType[] ExcludeSourceTypes { get; set; } public TrailerType[] TrailerTypes { get; set; } public DayOfWeek[] AirDays { get; set; } @@ -215,8 +213,6 @@ namespace MediaBrowser.Controller.Entities ExcludeTags = new string[] { }; ExcludeInheritedTags = new string[] { }; PresetViews = new string[] { }; - SourceTypes = new SourceType[] { }; - ExcludeSourceTypes = new SourceType[] { }; TrailerTypes = new TrailerType[] { }; AirDays = new DayOfWeek[] { }; SeriesStatuses = new SeriesStatus[] { }; diff --git a/MediaBrowser.Controller/Entities/InternalPeopleQuery.cs b/MediaBrowser.Controller/Entities/InternalPeopleQuery.cs index 2ba6842ca..05d23d986 100644 --- a/MediaBrowser.Controller/Entities/InternalPeopleQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalPeopleQuery.cs @@ -11,13 +11,11 @@ namespace MediaBrowser.Controller.Entities public int? MaxListOrder { get; set; } public Guid AppearsInItemId { get; set; } public string NameContains { get; set; } - public SourceType[] SourceTypes { get; set; } public InternalPeopleQuery() { PersonTypes = new List<string>(); ExcludePersonTypes = new List<string>(); - SourceTypes = new SourceType[] { }; } } } diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index efa85f3ae..406a99f8b 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -79,7 +79,7 @@ namespace MediaBrowser.Controller.Entities.Movies return new List<BaseItem>(); } - protected override IEnumerable<BaseItem> LoadChildren() + protected override List<BaseItem> LoadChildren() { if (IsLegacyBoxSet) { diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs index e963ab184..45b4de1b3 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;
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index 4ccf6d623..17494eb08 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -145,7 +145,7 @@ namespace MediaBrowser.Controller.Entities.TV /// Creates the name of the sort. /// </summary> /// <returns>System.String.</returns> - protected override string CreateSortNameInternal() + protected override string CreateSortName() { return IndexNumber != null ? IndexNumber.Value.ToString("0000") : Name; } diff --git a/MediaBrowser.Controller/Entities/UserRootFolder.cs b/MediaBrowser.Controller/Entities/UserRootFolder.cs index c93c81401..3e4931e77 100644 --- a/MediaBrowser.Controller/Entities/UserRootFolder.cs +++ b/MediaBrowser.Controller/Entities/UserRootFolder.cs @@ -18,7 +18,7 @@ namespace MediaBrowser.Controller.Entities { private List<Guid> _childrenIds = null; private readonly object _childIdsLock = new object(); - protected override IEnumerable<BaseItem> LoadChildren() + protected override List<BaseItem> LoadChildren() { lock (_childIdsLock) { diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 3f6b5a806..5a702b4f0 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -527,6 +527,8 @@ namespace MediaBrowser.Controller.Library /// <returns>QueryResult<BaseItem>.</returns> IEnumerable<BaseItem> GetItemList(InternalItemsQuery query); + IEnumerable<BaseItem> GetItemList(InternalItemsQuery query, bool allowExternalContent); + /// <summary> /// Gets the items. /// </summary> diff --git a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs index 8501f1580..45786e795 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs @@ -43,7 +43,6 @@ namespace MediaBrowser.Controller.LiveTv public override SourceType SourceType { get { return SourceType.LiveTV; } - set { } } [IgnoreDataMember] diff --git a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs index 34a9103f8..898ea9ff4 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs @@ -55,7 +55,6 @@ namespace MediaBrowser.Controller.LiveTv public override SourceType SourceType { get { return SourceType.LiveTV; } - set { } } [IgnoreDataMember] @@ -89,7 +88,7 @@ namespace MediaBrowser.Controller.LiveTv } } - protected override string CreateSortNameInternal() + protected override string CreateSortName() { if (!string.IsNullOrEmpty(Number)) { diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs index 5919d87fd..665640dfd 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs @@ -65,7 +65,6 @@ namespace MediaBrowser.Controller.LiveTv public override SourceType SourceType { get { return SourceType.LiveTV; } - set { } } /// <summary> diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs index 18894120a..2b527c4b0 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs @@ -42,7 +42,6 @@ namespace MediaBrowser.Controller.LiveTv public override SourceType SourceType { get { return SourceType.LiveTV; } - set { } } [IgnoreDataMember] diff --git a/MediaBrowser.Controller/LiveTv/RecordingGroup.cs b/MediaBrowser.Controller/LiveTv/RecordingGroup.cs index 8093b5a76..b54ca8974 100644 --- a/MediaBrowser.Controller/LiveTv/RecordingGroup.cs +++ b/MediaBrowser.Controller/LiveTv/RecordingGroup.cs @@ -30,7 +30,6 @@ namespace MediaBrowser.Controller.LiveTv public override SourceType SourceType { get { return SourceType.LiveTV; } - set { } } } } diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index 54a361ff7..82d18a373 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -1604,7 +1604,7 @@ namespace MediaBrowser.Controller.MediaEncoding } // Only do this for video files due to sometimes unpredictable codec names coming from BDInfo - if (state.RunTimeTicks.HasValue && state.VideoType == VideoType.VideoFile && string.IsNullOrWhiteSpace(encodingOptions.HardwareAccelerationType)) + if (state.VideoType == VideoType.VideoFile && string.IsNullOrWhiteSpace(encodingOptions.HardwareAccelerationType)) { foreach (var stream in state.MediaSource.MediaStreams) { diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs index 790e8e824..854f8d7a2 100644 --- a/MediaBrowser.Controller/Playlists/Playlist.cs +++ b/MediaBrowser.Controller/Playlists/Playlist.cs @@ -74,7 +74,7 @@ namespace MediaBrowser.Controller.Playlists return true; } - protected override IEnumerable<BaseItem> LoadChildren() + protected override List<BaseItem> LoadChildren() { // Save a trip to the database return new List<BaseItem>(); |
