diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs
index 9fc4bb3d04..a244b71df5 100644
--- a/MediaBrowser.Api/ItemUpdateService.cs
+++ b/MediaBrowser.Api/ItemUpdateService.cs
@@ -271,6 +271,16 @@ namespace MediaBrowser.Api
item.Overview = request.Overview;
item.Genres = request.Genres;
+ var episode = item as Episode;
+ if (episode != null)
+ {
+ episode.DvdSeasonNumber = request.DvdSeasonNumber;
+ episode.DvdEpisodeNumber = request.DvdEpisodeNumber;
+ episode.AirsAfterSeasonNumber = request.AirsAfterSeasonNumber;
+ episode.AirsBeforeEpisodeNumber = request.AirsBeforeEpisodeNumber;
+ episode.AirsBeforeSeasonNumber = request.AirsBeforeSeasonNumber;
+ }
+
var hasTags = item as IHasTags;
if (hasTags != null)
{
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index 20f60586c1..08d8df21f6 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -30,11 +30,20 @@ namespace MediaBrowser.Model.Dto
/// The date created.
public DateTime? DateCreated { get; set; }
+ public int? AirsBeforeSeasonNumber { get; set; }
+ 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 special season number.
+ /// Gets or sets the DVD episode number.
///
- /// The special season number.
- public int? SpecialSeasonNumber { get; set; }
+ /// The DVD episode number.
+ public int? DvdEpisodeNumber { get; set; }
///
/// Gets or sets the name of the sort.
diff --git a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs
index b6ad6b11c4..b17ef6ebb8 100644
--- a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs
+++ b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Controller.Entities.TV;
+using System;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Logging;
@@ -40,7 +41,7 @@ namespace MediaBrowser.Providers.TV
}
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
-
+
///
/// Fetches the data from XML node.
///
@@ -148,11 +149,11 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrWhiteSpace(number))
{
- int num;
+ float num;
- if (int.TryParse(number, out num))
+ if (float.TryParse(number, NumberStyles.Any, UsCulture, out num))
{
- item.DvdEpisodeNumber = num;
+ item.DvdEpisodeNumber = Convert.ToInt32(num);
}
}
break;
@@ -164,11 +165,11 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrWhiteSpace(number))
{
- int num;
+ float num;
- if (int.TryParse(number, out num))
+ if (float.TryParse(number, NumberStyles.Any, UsCulture, out num))
{
- item.DvdSeasonNumber = num;
+ item.DvdSeasonNumber = Convert.ToInt32(num);
}
}
break;
diff --git a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
index 56b06f4906..74d54a3914 100644
--- a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
+++ b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
@@ -225,7 +225,7 @@ namespace MediaBrowser.Providers.TV
foreach (var tuple in episodeLookup)
{
- if (tuple.Item1 <= 0)
+ if (tuple.Item1 < 0)
{
// Ignore season zeros
continue;
diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
index d80985fe1a..4cf7c79da9 100644
--- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
@@ -410,12 +410,11 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrWhiteSpace(val))
{
- int rval;
+ float num;
- // int.TryParse is local aware, so it can be probamatic, force us culture
- if (int.TryParse(val, NumberStyles.Integer, _usCulture, out rval))
+ if (float.TryParse(val, NumberStyles.Any, _usCulture, out num))
{
- item.DvdEpisodeNumber = rval;
+ item.DvdEpisodeNumber = Convert.ToInt32(num);
}
}
@@ -428,12 +427,11 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrWhiteSpace(val))
{
- int rval;
+ float num;
- // int.TryParse is local aware, so it can be probamatic, force us culture
- if (int.TryParse(val, NumberStyles.Integer, _usCulture, out rval))
+ if (float.TryParse(val, NumberStyles.Any, _usCulture, out num))
{
- item.DvdSeasonNumber = rval;
+ item.DvdSeasonNumber = Convert.ToInt32(num);
}
}
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index ba9dd170df..6e8c9d3ebe 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1061,7 +1061,12 @@ namespace MediaBrowser.Server.Implementations.Dto
if (episode != null)
{
dto.IndexNumberEnd = episode.IndexNumberEnd;
- dto.SpecialSeasonNumber = episode.AirsAfterSeasonNumber ?? episode.AirsBeforeSeasonNumber;
+
+ dto.DvdSeasonNumber = episode.DvdSeasonNumber;
+ dto.DvdEpisodeNumber = episode.DvdEpisodeNumber;
+ dto.AirsAfterSeasonNumber = episode.AirsAfterSeasonNumber;
+ dto.AirsBeforeEpisodeNumber = episode.AirsBeforeEpisodeNumber;
+ dto.AirsBeforeSeasonNumber = episode.AirsBeforeSeasonNumber;
var seasonId = episode.SeasonId;
if (seasonId.HasValue)