aboutsummaryrefslogtreecommitdiff
path: root/Emby.Naming/TV/TvParserHelpers.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Naming/TV/TvParserHelpers.cs')
-rw-r--r--Emby.Naming/TV/TvParserHelpers.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/Emby.Naming/TV/TvParserHelpers.cs b/Emby.Naming/TV/TvParserHelpers.cs
new file mode 100644
index 000000000..2eca389da
--- /dev/null
+++ b/Emby.Naming/TV/TvParserHelpers.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Linq;
+using MediaBrowser.Model.Entities;
+
+namespace Emby.Naming.TV;
+
+/// <summary>
+/// Helper class for TV metadata parsing.
+/// </summary>
+public static class TvParserHelpers
+{
+ private static readonly string[] _continuingState = ["Pilot", "Returning Series", "Returning"];
+ private static readonly string[] _endedState = ["Cancelled"];
+
+ /// <summary>
+ /// Tries to parse a string into <see cref="SeriesStatus"/>.
+ /// </summary>
+ /// <param name="status">The status string.</param>
+ /// <param name="enumValue">The <see cref="SeriesStatus"/>.</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;
+ }
+
+ if (_continuingState.Contains(status, StringComparer.OrdinalIgnoreCase))
+ {
+ enumValue = SeriesStatus.Continuing;
+ return true;
+ }
+
+ if (_endedState.Contains(status, StringComparer.OrdinalIgnoreCase))
+ {
+ enumValue = SeriesStatus.Ended;
+ return true;
+ }
+
+ enumValue = null;
+ return false;
+ }
+}