diff options
| author | Shadowghost <Shadowghost@users.noreply.github.com> | 2024-05-17 13:51:42 -0400 |
|---|---|---|
| committer | Joshua M. Boniface <joshua@boniface.me> | 2024-05-17 13:51:42 -0400 |
| commit | b063dfd2e3925b85bbc9461c272a10d7c8931767 (patch) | |
| tree | 43ed6848eb91cfe656023c8909d4a726c7151776 /Emby.Naming | |
| parent | 29a293f9e78e61d464e18b6d74ba32152eaa01ce (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.cs | 44 |
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; + } +} |
