diff --git a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs index 8ad03e62bb..ef9862294a 100644 --- a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs +++ b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs @@ -181,7 +181,7 @@ namespace MediaBrowser.Providers.TV private async Task AddMissingEpisodes(Series series, string seriesDataPath, List existingEpisodes, IEnumerable> episodeLookup, CancellationToken cancellationToken) { var hasChanges = false; - + foreach (var tuple in episodeLookup) { if (tuple.Item1 <= 0) @@ -375,8 +375,9 @@ namespace MediaBrowser.Providers.TV var xmlPath = Path.Combine(seriesDataPath, filename); - // It appears the best way to filter out invalid entries is to only include those with valid air dates + DateTime? airDate = null; + // It appears the best way to filter out invalid entries is to only include those with valid air dates using (var streamReader = new StreamReader(xmlPath, Encoding.UTF8)) { // Use XmlReader for best performance @@ -397,6 +398,16 @@ namespace MediaBrowser.Providers.TV { switch (reader.Name) { + case "EpisodeName": + { + var val = reader.ReadElementContentAsString(); + if (string.IsNullOrWhiteSpace(val)) + { + // Not valid, ignore these + return null; + } + break; + } case "FirstAired": { var val = reader.ReadElementContentAsString(); @@ -406,7 +417,7 @@ namespace MediaBrowser.Providers.TV DateTime date; if (DateTime.TryParse(val, out date)) { - return date.ToUniversalTime(); + airDate = date.ToUniversalTime(); } } @@ -422,7 +433,7 @@ namespace MediaBrowser.Providers.TV } } - return null; + return airDate; } } }