From 28b0ff1e75a937d16e8c8cd09fb3369e0961d0d2 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 28 Dec 2013 11:58:13 -0500 Subject: allow custom language per item --- MediaBrowser.Controller/Entities/AdultVideo.cs | 6 ++++ MediaBrowser.Controller/Entities/Audio/Audio.cs | 8 +---- MediaBrowser.Controller/Entities/BaseItem.cs | 39 +++++++++++++++++++++- MediaBrowser.Controller/Entities/Book.cs | 6 ++++ MediaBrowser.Controller/Entities/Game.cs | 14 ++++---- MediaBrowser.Controller/Entities/IHasLanguage.cs | 15 --------- .../Entities/IHasPreferredMetadataLanguage.cs | 6 ++++ MediaBrowser.Controller/Entities/Movies/BoxSet.cs | 6 ++++ MediaBrowser.Controller/Entities/Movies/Movie.cs | 6 ++++ MediaBrowser.Controller/Entities/TV/Series.cs | 6 ++++ MediaBrowser.Controller/Entities/Trailer.cs | 6 ++++ .../MediaBrowser.Controller.csproj | 1 - .../Providers/BaseItemXmlParser.cs | 4 +-- 13 files changed, 90 insertions(+), 33 deletions(-) delete mode 100644 MediaBrowser.Controller/Entities/IHasLanguage.cs (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Entities/AdultVideo.cs b/MediaBrowser.Controller/Entities/AdultVideo.cs index 9d19b5d92..f81cfa1f6 100644 --- a/MediaBrowser.Controller/Entities/AdultVideo.cs +++ b/MediaBrowser.Controller/Entities/AdultVideo.cs @@ -4,5 +4,11 @@ namespace MediaBrowser.Controller.Entities public class AdultVideo : Video, IHasPreferredMetadataLanguage { public string PreferredMetadataLanguage { get; set; } + + /// + /// Gets or sets the preferred metadata country code. + /// + /// The preferred metadata country code. + public string PreferredMetadataCountryCode { get; set; } } } diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 9651a4f04..028fc964d 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -9,19 +9,13 @@ namespace MediaBrowser.Controller.Entities.Audio /// /// Class Audio /// - public class Audio : BaseItem, IHasMediaStreams, IHasAlbumArtist, IHasArtist, IHasMusicGenres, IHasLanguage + public class Audio : BaseItem, IHasMediaStreams, IHasAlbumArtist, IHasArtist, IHasMusicGenres { public Audio() { Artists = new List(); } - /// - /// Gets or sets the language. - /// - /// The language. - public string Language { get; set; } - /// /// Gets or sets a value indicating whether this instance has embedded image. /// diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 6e5024a45..a02369b2c 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -960,7 +960,7 @@ namespace MediaBrowser.Controller.Entities /// Gets the preferred metadata language. /// /// System.String. - public virtual string GetPreferredMetadataLanguage() + public string GetPreferredMetadataLanguage() { string lang = null; @@ -971,6 +971,13 @@ namespace MediaBrowser.Controller.Entities lang = hasLang.PreferredMetadataLanguage; } + if (string.IsNullOrEmpty(lang)) + { + lang = Parents.OfType() + .Select(i => i.PreferredMetadataLanguage) + .FirstOrDefault(i => !string.IsNullOrEmpty(i)); + } + if (string.IsNullOrEmpty(lang)) { lang = ConfigurationManager.Configuration.PreferredMetadataLanguage; @@ -979,6 +986,36 @@ namespace MediaBrowser.Controller.Entities return lang; } + /// + /// Gets the preferred metadata language. + /// + /// System.String. + public string GetPreferredMetadataCountryCode() + { + string lang = null; + + var hasLang = this as IHasPreferredMetadataLanguage; + + if (hasLang != null) + { + lang = hasLang.PreferredMetadataCountryCode; + } + + if (string.IsNullOrEmpty(lang)) + { + lang = Parents.OfType() + .Select(i => i.PreferredMetadataCountryCode) + .FirstOrDefault(i => !string.IsNullOrEmpty(i)); + } + + if (string.IsNullOrEmpty(lang)) + { + lang = ConfigurationManager.Configuration.MetadataCountryCode; + } + + return lang; + } + /// /// Determines if a given user has access to this item /// diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs index e4e1ab39c..298941378 100644 --- a/MediaBrowser.Controller/Entities/Book.cs +++ b/MediaBrowser.Controller/Entities/Book.cs @@ -23,6 +23,12 @@ namespace MediaBrowser.Controller.Entities public string PreferredMetadataLanguage { get; set; } + /// + /// Gets or sets the preferred metadata country code. + /// + /// The preferred metadata country code. + public string PreferredMetadataCountryCode { get; set; } + /// /// /// diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs index ce5f720ef..da95b7c44 100644 --- a/MediaBrowser.Controller/Entities/Game.cs +++ b/MediaBrowser.Controller/Entities/Game.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; namespace MediaBrowser.Controller.Entities { - public class Game : BaseItem, IHasSoundtracks, IHasTrailers, IHasThemeMedia, IHasTags, IHasLanguage, IHasScreenshots, IHasPreferredMetadataLanguage + public class Game : BaseItem, IHasSoundtracks, IHasTrailers, IHasThemeMedia, IHasTags, IHasScreenshots, IHasPreferredMetadataLanguage { public List SoundtrackIds { get; set; } @@ -14,6 +14,12 @@ namespace MediaBrowser.Controller.Entities public string PreferredMetadataLanguage { get; set; } + /// + /// Gets or sets the preferred metadata country code. + /// + /// The preferred metadata country code. + public string PreferredMetadataCountryCode { get; set; } + public Game() { MultiPartGameFiles = new List(); @@ -26,12 +32,6 @@ namespace MediaBrowser.Controller.Entities ScreenshotImagePaths = new List(); } - /// - /// Gets or sets the language. - /// - /// The language. - public string Language { get; set; } - public List LocalTrailerIds { get; set; } /// diff --git a/MediaBrowser.Controller/Entities/IHasLanguage.cs b/MediaBrowser.Controller/Entities/IHasLanguage.cs deleted file mode 100644 index a1bb80098..000000000 --- a/MediaBrowser.Controller/Entities/IHasLanguage.cs +++ /dev/null @@ -1,15 +0,0 @@ - -namespace MediaBrowser.Controller.Entities -{ - /// - /// Interface IHasLanguage - /// - public interface IHasLanguage - { - /// - /// Gets or sets the language. - /// - /// The language. - string Language { get; set; } - } -} diff --git a/MediaBrowser.Controller/Entities/IHasPreferredMetadataLanguage.cs b/MediaBrowser.Controller/Entities/IHasPreferredMetadataLanguage.cs index facf71829..e3a233e49 100644 --- a/MediaBrowser.Controller/Entities/IHasPreferredMetadataLanguage.cs +++ b/MediaBrowser.Controller/Entities/IHasPreferredMetadataLanguage.cs @@ -11,5 +11,11 @@ namespace MediaBrowser.Controller.Entities /// /// The preferred metadata language. string PreferredMetadataLanguage { get; set; } + + /// + /// Gets or sets the preferred metadata country code. + /// + /// The preferred metadata country code. + string PreferredMetadataCountryCode { get; set; } } } diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index 755f687ff..6144bdd71 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -33,6 +33,12 @@ namespace MediaBrowser.Controller.Entities.Movies public string PreferredMetadataLanguage { get; set; } + /// + /// Gets or sets the preferred metadata country code. + /// + /// The preferred metadata country code. + public string PreferredMetadataCountryCode { get; set; } + protected override bool GetBlockUnratedValue(UserConfiguration config) { return config.BlockUnratedMovies; diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 34845c3c3..f9d3f845c 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -21,6 +21,12 @@ namespace MediaBrowser.Controller.Entities.Movies public List ThemeSongIds { get; set; } public List ThemeVideoIds { get; set; } + /// + /// Gets or sets the preferred metadata country code. + /// + /// The preferred metadata country code. + public string PreferredMetadataCountryCode { get; set; } + public string PreferredMetadataLanguage { get; set; } public Movie() diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 8338f76db..f7e78ccd4 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -21,6 +21,12 @@ namespace MediaBrowser.Controller.Entities.TV public int SeasonCount { get; set; } + /// + /// Gets or sets the preferred metadata country code. + /// + /// The preferred metadata country code. + public string PreferredMetadataCountryCode { get; set; } + public Series() { AirDays = new List(); diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index f746ae630..7000d04d3 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -14,6 +14,12 @@ namespace MediaBrowser.Controller.Entities public List SoundtrackIds { get; set; } public string PreferredMetadataLanguage { get; set; } + + /// + /// Gets or sets the preferred metadata country code. + /// + /// The preferred metadata country code. + public string PreferredMetadataCountryCode { get; set; } public Trailer() { diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index f0c7d3149..0c5c0a5cd 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -86,7 +86,6 @@ - diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index c9f57a927..799f339f1 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -269,10 +269,10 @@ namespace MediaBrowser.Controller.Providers { var val = reader.ReadElementContentAsString(); - var hasLanguage = item as IHasLanguage; + var hasLanguage = item as IHasPreferredMetadataLanguage; if (hasLanguage != null) { - hasLanguage.Language = val; + hasLanguage.PreferredMetadataLanguage = val; } break; -- cgit v1.2.3