|
|
|
@ -181,7 +181,7 @@ namespace MediaBrowser.Providers.TV
|
|
|
|
|
private async Task<bool> AddMissingEpisodes(Series series, string seriesDataPath, List<Episode> existingEpisodes, IEnumerable<Tuple<int, int>> 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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|