Fix series status parsing

pull/11648/head
Shadowghost 2 weeks ago
parent f396a95f05
commit e7fce6d99f

@ -0,0 +1,40 @@
using System;
using Emby.Naming.Common;
using MediaBrowser.Model.Entities;
namespace Emby.Naming.TV;
/// <summary>
/// Helper class for tv metadata parsing.
/// </summary>
public static class TvParserHelpers
{
/// <summary>
/// Parses a information about series from path.
/// </summary>
/// <param name="status">The status string.</param>
/// <param name="enumValue">The enum value.</param>
/// <returns>Returns true if parsing was successful.</returns>
public static bool TryParseSeriesStatus(string status, out SeriesStatus? enumValue)
{
if (Enum.TryParse(status, true, out SeriesStatus seriesStatus))
{
enumValue = seriesStatus;
return true;
}
switch (status)
{
case "Pilot":
case "Returning Series":
enumValue = SeriesStatus.Continuing;
return true;
case "Cancelled":
enumValue = SeriesStatus.Ended;
return true;
default:
enumValue = null;
return false;
}
}
}

@ -278,17 +278,12 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
series.RunTimeTicks = seriesResult.EpisodeRunTime.Select(i => TimeSpan.FromMinutes(i).Ticks).FirstOrDefault();
if (string.Equals(seriesResult.Status, "Ended", StringComparison.OrdinalIgnoreCase)
|| string.Equals(seriesResult.Status, "Canceled", StringComparison.OrdinalIgnoreCase))
if (Emby.Naming.TV.TvParserHelpers.TryParseSeriesStatus(seriesResult.Status, out var seriesStatus))
{
series.Status = SeriesStatus.Ended;
series.EndDate = seriesResult.LastAirDate;
}
else
{
series.Status = SeriesStatus.Continuing;
series.Status = seriesStatus;
}
series.EndDate = seriesResult.LastAirDate;
series.PremiereDate = seriesResult.FirstAirDate;
var ids = seriesResult.ExternalIds;

@ -1,6 +1,6 @@
using System;
using System.Globalization;
using System.Xml;
using Emby.Naming.TV;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Extensions;
@ -87,7 +87,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
if (!string.IsNullOrWhiteSpace(status))
{
if (Enum.TryParse(status, true, out SeriesStatus seriesStatus))
if (TvParserHelpers.TryParseSeriesStatus(status, out var seriesStatus))
{
item.Status = seriesStatus;
}

Loading…
Cancel
Save