aboutsummaryrefslogtreecommitdiff
path: root/Emby.Naming
diff options
context:
space:
mode:
authorShadowghost <Shadowghost@users.noreply.github.com>2024-05-17 13:51:42 -0400
committerJoshua M. Boniface <joshua@boniface.me>2024-05-17 13:51:42 -0400
commitb063dfd2e3925b85bbc9461c272a10d7c8931767 (patch)
tree43ed6848eb91cfe656023c8909d4a726c7151776 /Emby.Naming
parent29a293f9e78e61d464e18b6d74ba32152eaa01ce (diff)
Backport pull request #11648 from jellyfin/release-10.9.z
Fix series status parsing Original-merge: c6c48a2b474012f6e4464b743a937c522f15e04d Merged-by: nielsvanvelzen <nielsvanvelzen@users.noreply.github.com> Backported-by: Joshua M. Boniface <joshua@boniface.me>
Diffstat (limited to 'Emby.Naming')
-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;
+ }
+}