diff options
11 files changed, 87 insertions, 6 deletions
diff --git a/MediaBrowser.Controller/Entities/IHasOriginalTitle.cs b/MediaBrowser.Controller/Entities/IHasOriginalTitle.cs new file mode 100644 index 000000000..6f5cb59bc --- /dev/null +++ b/MediaBrowser.Controller/Entities/IHasOriginalTitle.cs @@ -0,0 +1,8 @@ + +namespace MediaBrowser.Controller.Entities +{ + public interface IHasOriginalTitle + { + string OriginalTitle { get; set; } + } +} diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index cfe008bd7..411004782 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -6,7 +6,6 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; @@ -15,10 +14,11 @@ namespace MediaBrowser.Controller.Entities.Movies /// <summary> /// Class Movie /// </summary> - public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasSpecialFeatures, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTrailers, IHasThemeMedia, IHasTaglines, IHasAwards, IHasMetascore, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping + public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasSpecialFeatures, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTrailers, IHasThemeMedia, IHasTaglines, IHasAwards, IHasMetascore, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping, IHasOriginalTitle { public List<Guid> SpecialFeatureIds { get; set; } + public string OriginalTitle { get; set; } public List<Guid> SoundtrackIds { get; set; } public List<Guid> ThemeSongIds { get; set; } diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 4c34460d7..2b3674e80 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -15,11 +15,12 @@ namespace MediaBrowser.Controller.Entities.TV /// <summary> /// Class Series /// </summary> - public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasDisplayOrder, IHasLookupInfo<SeriesInfo>, IHasSpecialFeatures, IMetadataContainer + public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasDisplayOrder, IHasLookupInfo<SeriesInfo>, IHasSpecialFeatures, IMetadataContainer, IHasOriginalTitle { public List<Guid> SpecialFeatureIds { get; set; } public List<Guid> SoundtrackIds { get; set; } + public string OriginalTitle { get; set; } public int SeasonCount { get; set; } public int? AnimeSeriesIndex { get; set; } diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 72b9bfe9e..314b981d5 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -139,6 +139,7 @@ <Compile Include="Entities\IHasKeywords.cs" /> <Compile Include="Entities\IHasMediaSources.cs" /> <Compile Include="Entities\IHasMetascore.cs" /> + <Compile Include="Entities\IHasOriginalTitle.cs" /> <Compile Include="Entities\IHasPreferredMetadataLanguage.cs" /> <Compile Include="Entities\IHasProductionLocations.cs" /> <Compile Include="Entities\IHasScreenshots.cs" /> diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index ddd650e3e..6facc1074 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -126,6 +126,21 @@ namespace MediaBrowser.Controller.Providers break; } + case "OriginalTitle": + { + var val = reader.ReadElementContentAsString(); + + var hasOriginalTitle = item as IHasOriginalTitle; + if (hasOriginalTitle != null) + { + if (!string.IsNullOrEmpty(hasOriginalTitle.OriginalTitle)) + { + hasOriginalTitle.OriginalTitle = val; + } + } + break; + } + case "LocalTitle": item.Name = reader.ReadElementContentAsString(); break; diff --git a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs index 981833803..c59d574bf 100644 --- a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs @@ -57,6 +57,7 @@ namespace MediaBrowser.LocalMetadata.Savers "Language", "LocalTitle", + "OriginalTitle", "LockData", "LockedFields", "Format3D", @@ -273,6 +274,15 @@ namespace MediaBrowser.LocalMetadata.Savers { builder.Append("<Overview><![CDATA[" + item.Overview + "]]></Overview>"); } + + var hasOriginalTitle = item as IHasOriginalTitle; + if (hasOriginalTitle != null) + { + if (!string.IsNullOrEmpty(hasOriginalTitle.OriginalTitle)) + { + builder.Append("<OriginalTitle>" + SecurityElement.Escape(hasOriginalTitle.OriginalTitle) + "</OriginalTitle>"); + } + } var hasShortOverview = item as IHasShortOverview; if (hasShortOverview != null) diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs index 87b229090..68cbf85e9 100644 --- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs +++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs @@ -111,7 +111,13 @@ namespace MediaBrowser.Providers.Movies /// <param name="movieData">The movie data.</param> private void ProcessMainInfo(T movie, string preferredCountryCode, MovieDbProvider.CompleteMovieData movieData) { - movie.Name = movieData.title ?? movieData.original_title ?? movieData.name ?? movie.Name; + movie.Name = movieData.GetTitle() ?? movie.Name; + + var hasOriginalTitle = movie as IHasOriginalTitle; + if (hasOriginalTitle != null) + { + hasOriginalTitle.OriginalTitle = movieData.GetOriginalTitle(); + } // Bug in Mono: WebUtility.HtmlDecode should return null if the string is null but in Mono it generate an System.ArgumentNullException. movie.Overview = movieData.overview != null ? WebUtility.HtmlDecode(movieData.overview) : null; diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index ed15a2eef..b8f9a7fa2 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -77,7 +77,7 @@ namespace MediaBrowser.Providers.Movies var remoteResult = new RemoteSearchResult { - Name = obj.title ?? obj.original_title ?? obj.name, + Name = obj.GetTitle(), SearchProviderName = Name, ImageUrl = string.IsNullOrWhiteSpace(obj.poster_path) ? null : tmdbImageUrl + obj.poster_path }; @@ -560,6 +560,7 @@ namespace MediaBrowser.Providers.Movies public int id { get; set; } public string imdb_id { get; set; } public string original_title { get; set; } + public string original_name { get; set; } public string overview { get; set; } public double popularity { get; set; } public string poster_path { get; set; } @@ -580,6 +581,16 @@ namespace MediaBrowser.Providers.Movies public Images images { get; set; } public Keywords keywords { get; set; } public Trailers trailers { get; set; } + + public string GetOriginalTitle() + { + return original_name ?? original_title; + } + + public string GetTitle() + { + return name ?? title ?? GetOriginalTitle(); + } } public int Order diff --git a/MediaBrowser.Providers/Movies/MovieDbSearch.cs b/MediaBrowser.Providers/Movies/MovieDbSearch.cs index f1a4d7bba..8a59d7a1b 100644 --- a/MediaBrowser.Providers/Movies/MovieDbSearch.cs +++ b/MediaBrowser.Providers/Movies/MovieDbSearch.cs @@ -147,7 +147,7 @@ namespace MediaBrowser.Providers.Movies var remoteResult = new RemoteSearchResult { SearchProviderName = MovieDbProvider.Current.Name, - Name = i.title ?? i.original_title ?? i.name, + Name = i.title ?? i.name ?? i.original_title, ImageUrl = string.IsNullOrWhiteSpace(i.poster_path) ? null : baseImageUrl + i.poster_path }; @@ -215,6 +215,11 @@ namespace MediaBrowser.Providers.Movies /// <value>The original_title.</value> public string original_title { get; set; } /// <summary> + /// Gets or sets the original_name. + /// </summary> + /// <value>The original_name.</value> + public string original_name { get; set; } + /// <summary> /// Gets or sets the release_date. /// </summary> /// <value>The release_date.</value> diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 66efd7c78..682175f79 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -193,6 +193,21 @@ namespace MediaBrowser.XbmcMetadata.Parsers break; } + case "originaltitle": + { + var val = reader.ReadElementContentAsString(); + + var hasOriginalTitle = item as IHasOriginalTitle; + if (hasOriginalTitle != null) + { + if (!string.IsNullOrEmpty(hasOriginalTitle.OriginalTitle)) + { + hasOriginalTitle.OriginalTitle = val; + } + } + break; + } + case "title": case "localtitle": item.Name = reader.ReadElementContentAsString(); diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 13108a486..3224f36bc 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -459,6 +459,15 @@ namespace MediaBrowser.XbmcMetadata.Savers writer.WriteElementString("title", item.Name ?? string.Empty); writer.WriteElementString("originaltitle", item.Name ?? string.Empty); + var hasOriginalTitle = item as IHasOriginalTitle; + if (hasOriginalTitle != null) + { + if (!string.IsNullOrEmpty(hasOriginalTitle.OriginalTitle)) + { + writer.WriteElementString("originaltitle", hasOriginalTitle.OriginalTitle ?? string.Empty); + } + } + var directors = item.People .Where(i => IsPersonType(i, PersonType.Director)) .Select(i => i.Name) |
