From fd0a7cb14020adc90cb1d89adef57884ba0d108f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 8 Dec 2013 13:07:45 -0500 Subject: [PATCH] record dvd season/episode numbers --- .../Entities/TV/Episode.cs | 11 ++++++ .../Savers/EpisodeXmlSaver.cs | 14 +++++++- MediaBrowser.Providers/TV/EpisodeXmlParser.cs | 32 +++++++++++++++++ .../TV/TvdbEpisodeProvider.cs | 36 +++++++++++++++++++ 4 files changed, 92 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs index e9f250d2a4..4e94c39428 100644 --- a/MediaBrowser.Controller/Entities/TV/Episode.cs +++ b/MediaBrowser.Controller/Entities/TV/Episode.cs @@ -40,6 +40,17 @@ namespace MediaBrowser.Controller.Entities.TV public int? AirsAfterSeasonNumber { get; set; } public int? AirsBeforeEpisodeNumber { get; set; } + /// + /// Gets or sets the DVD season number. + /// + /// The DVD season number. + public int? DvdSeasonNumber { get; set; } + /// + /// Gets or sets the DVD episode number. + /// + /// The DVD episode number. + public int? DvdEpisodeNumber { get; set; } + /// /// We want to group into series not show individually in an index /// diff --git a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs index 35dd551f13..88b3af5be0 100644 --- a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs @@ -92,6 +92,16 @@ namespace MediaBrowser.Providers.Savers builder.Append("" + SecurityElement.Escape(episode.ParentIndexNumber.Value.ToString(_usCulture)) + ""); } + if (episode.DvdEpisodeNumber.HasValue) + { + builder.Append("" + SecurityElement.Escape(episode.DvdEpisodeNumber.Value.ToString(_usCulture)) + ""); + } + + if (episode.DvdSeasonNumber.HasValue) + { + builder.Append("" + SecurityElement.Escape(episode.DvdSeasonNumber.Value.ToString(_usCulture)) + ""); + } + if (episode.PremiereDate.HasValue) { builder.Append("" + SecurityElement.Escape(episode.PremiereDate.Value.ToString("yyyy-MM-dd")) + ""); @@ -113,7 +123,9 @@ namespace MediaBrowser.Providers.Savers "EpisodeNumberEnd", "airsafter_season", "airsbefore_episode", - "airsbefore_season" + "airsbefore_season", + "DVD_episodenumber", + "DVD_season" }); } diff --git a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs index 5d970107e4..b6ad6b11c4 100644 --- a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs +++ b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs @@ -142,6 +142,38 @@ namespace MediaBrowser.Providers.TV break; } + case "DVD_episodenumber": + { + var number = reader.ReadElementContentAsString(); + + if (!string.IsNullOrWhiteSpace(number)) + { + int num; + + if (int.TryParse(number, out num)) + { + item.DvdEpisodeNumber = num; + } + } + break; + } + + case "DVD_season": + { + var number = reader.ReadElementContentAsString(); + + if (!string.IsNullOrWhiteSpace(number)) + { + int num; + + if (int.TryParse(number, out num)) + { + item.DvdSeasonNumber = num; + } + } + break; + } + case "airsbefore_episode": { var val = reader.ReadElementContentAsString(); diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs index 5d9f387fea..d80985fe1a 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs @@ -404,6 +404,42 @@ namespace MediaBrowser.Providers.TV break; } + case "DVD_episodenumber": + { + var val = reader.ReadElementContentAsString(); + + if (!string.IsNullOrWhiteSpace(val)) + { + int rval; + + // int.TryParse is local aware, so it can be probamatic, force us culture + if (int.TryParse(val, NumberStyles.Integer, _usCulture, out rval)) + { + item.DvdEpisodeNumber = rval; + } + } + + break; + } + + case "DVD_season": + { + var val = reader.ReadElementContentAsString(); + + if (!string.IsNullOrWhiteSpace(val)) + { + int rval; + + // int.TryParse is local aware, so it can be probamatic, force us culture + if (int.TryParse(val, NumberStyles.Integer, _usCulture, out rval)) + { + item.DvdSeasonNumber = rval; + } + } + + break; + } + case "airsbefore_episode": { var val = reader.ReadElementContentAsString();