From 76dbab939ccc87b3656e9813bfd036aa5d640aad Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Mon, 11 Mar 2013 21:46:46 -0400 Subject: fixes #15 - SortRemoveWords config change not working --- MediaBrowser.Controller/Entities/Audio/Audio.cs | 10 +++++ .../Entities/Audio/MusicAlbum.cs | 9 ++++ MediaBrowser.Controller/Entities/BaseItem.cs | 51 +++++++++++++++++++++- MediaBrowser.Controller/Entities/IndexFolder.cs | 4 +- MediaBrowser.Controller/Entities/TV/Episode.cs | 9 ++++ MediaBrowser.Controller/Entities/TV/Season.cs | 9 ++++ 6 files changed, 88 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.Controller/Entities') diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 511b589e5..d629ec4d7 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -74,5 +74,15 @@ namespace MediaBrowser.Controller.Entities.Audio return Model.Entities.MediaType.Audio; } } + + /// + /// Creates the name of the sort. + /// + /// System.String. + protected override string CreateSortName() + { + return (ProductionYear != null ? ProductionYear.Value.ToString("000-") : "") + + (IndexNumber != null ? IndexNumber.Value.ToString("0000 - ") : "") + Name; + } } } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index 9e4e3c542..e9f222016 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -129,5 +129,14 @@ namespace MediaBrowser.Controller.Entities.Audio base.Studios = value; } } + + /// + /// Creates the name of the sort. + /// + /// System.String. + protected override string CreateSortName() + { + return ProductionYear != null ? ProductionYear.Value.ToString("0000") : Name; + } } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index a69b423ac..4f34f2b67 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -370,11 +370,58 @@ namespace MediaBrowser.Controller.Entities } } + /// + /// Gets or sets the name of the forced sort. + /// + /// The name of the forced sort. + public string ForcedSortName { get; set; } + + private string _sortName; /// /// Gets or sets the name of the sort. /// /// The name of the sort. - public string SortName { get; set; } + [IgnoreDataMember] + public string SortName + { + get + { + return ForcedSortName ?? _sortName ?? (_sortName = CreateSortName()); + } + } + + /// + /// Creates the name of the sort. + /// + /// System.String. + protected virtual string CreateSortName() + { + if (Name == null) return null; //some items may not have name filled in properly + + var sortable = Name.Trim().ToLower(); + sortable = ConfigurationManager.Configuration.SortRemoveCharacters.Aggregate(sortable, (current, search) => current.Replace(search.ToLower(), string.Empty)); + + sortable = ConfigurationManager.Configuration.SortReplaceCharacters.Aggregate(sortable, (current, search) => current.Replace(search.ToLower(), " ")); + + foreach (var search in ConfigurationManager.Configuration.SortRemoveWords) + { + var searchLower = search.ToLower(); + // Remove from beginning if a space follows + if (sortable.StartsWith(searchLower + " ")) + { + sortable = sortable.Remove(0, searchLower.Length + 1); + } + // Remove from middle if surrounded by spaces + sortable = sortable.Replace(" " + searchLower + " ", " "); + + // Remove from end if followed by a space + if (sortable.EndsWith(" " + searchLower)) + { + sortable = sortable.Remove(sortable.Length - (searchLower.Length + 1)); + } + } + return sortable; + } /// /// Gets or sets the parent. @@ -686,7 +733,7 @@ namespace MediaBrowser.Controller.Entities public virtual void ClearMetaValues() { Images = null; - SortName = null; + ForcedSortName = null; PremiereDate = null; BackdropImagePaths = null; OfficialRating = null; diff --git a/MediaBrowser.Controller/Entities/IndexFolder.cs b/MediaBrowser.Controller/Entities/IndexFolder.cs index 013db4853..637c4195a 100644 --- a/MediaBrowser.Controller/Entities/IndexFolder.cs +++ b/MediaBrowser.Controller/Entities/IndexFolder.cs @@ -28,7 +28,7 @@ namespace MediaBrowser.Controller.Entities GroupContents = groupContents; if (shadow == null) { - Name = SortName = ""; + Name = ForcedSortName = ""; } else { @@ -167,7 +167,7 @@ namespace MediaBrowser.Controller.Entities if (ShadowItem != null) { Name = ShadowItem.Name; - SortName = ShadowItem.SortName; + ForcedSortName = ShadowItem.SortName; Genres = ShadowItem.Genres; Studios = ShadowItem.Studios; OfficialRating = ShadowItem.OfficialRating; diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs index 854b9d018..1ec3e97a9 100644 --- a/MediaBrowser.Controller/Entities/TV/Episode.cs +++ b/MediaBrowser.Controller/Entities/TV/Episode.cs @@ -159,5 +159,14 @@ namespace MediaBrowser.Controller.Entities.TV get { return _season ?? (_season = FindParent()); } } + /// + /// Creates the name of the sort. + /// + /// System.String. + protected override string CreateSortName() + { + return (ParentIndexNumber != null ? ParentIndexNumber.Value.ToString("000-") : "") + + (IndexNumber != null ? IndexNumber.Value.ToString("0000 - ") : "") + Name; + } } } diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index f0a696df1..20c2ee1fe 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -138,5 +138,14 @@ namespace MediaBrowser.Controller.Entities.TV return args; } + + /// + /// Creates the name of the sort. + /// + /// System.String. + protected override string CreateSortName() + { + return IndexNumber != null ? IndexNumber.Value.ToString("0000") : Name; + } } } -- cgit v1.2.3