From e76974a0b3d83ee2117b126ac5dc8de6b4d86654 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 13 Aug 2023 00:26:37 -0700 Subject: [PATCH] New: Auto tag series based on Original Language (cherry picked from commit 2a7964bc16fa32bc0000bb7326795d02cc41bfed) --- .../OriginalLanguageSpecification.cs | 37 +++++++++++++++++++ .../OriginalLanguageFieldConverter.cs | 18 +++++++++ 2 files changed, 55 insertions(+) create mode 100644 src/NzbDrone.Core/AutoTagging/Specifications/OriginalLanguageSpecification.cs create mode 100644 src/NzbDrone.Core/Languages/OriginalLanguageFieldConverter.cs diff --git a/src/NzbDrone.Core/AutoTagging/Specifications/OriginalLanguageSpecification.cs b/src/NzbDrone.Core/AutoTagging/Specifications/OriginalLanguageSpecification.cs new file mode 100644 index 000000000..7d725f3a6 --- /dev/null +++ b/src/NzbDrone.Core/AutoTagging/Specifications/OriginalLanguageSpecification.cs @@ -0,0 +1,37 @@ +using FluentValidation; +using NzbDrone.Core.Annotations; +using NzbDrone.Core.Languages; +using NzbDrone.Core.Tv; +using NzbDrone.Core.Validation; + +namespace NzbDrone.Core.AutoTagging.Specifications +{ + public class OriginalLanguageSpecificationValidator : AbstractValidator + { + public OriginalLanguageSpecificationValidator() + { + RuleFor(c => c.Value).GreaterThanOrEqualTo(0); + } + } + + public class OriginalLanguageSpecification : AutoTaggingSpecificationBase + { + private static readonly OriginalLanguageSpecificationValidator Validator = new (); + + public override int Order => 1; + public override string ImplementationName => "Original Language"; + + [FieldDefinition(1, Label = "Language", Type = FieldType.Select, SelectOptions = typeof(OriginalLanguageFieldConverter))] + public int Value { get; set; } + + protected override bool IsSatisfiedByWithoutNegate(Series series) + { + return Value == series.OriginalLanguage.Id; + } + + public override NzbDroneValidationResult Validate() + { + return new NzbDroneValidationResult(Validator.Validate(this)); + } + } +} diff --git a/src/NzbDrone.Core/Languages/OriginalLanguageFieldConverter.cs b/src/NzbDrone.Core/Languages/OriginalLanguageFieldConverter.cs new file mode 100644 index 000000000..52783a827 --- /dev/null +++ b/src/NzbDrone.Core/Languages/OriginalLanguageFieldConverter.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.Linq; +using NzbDrone.Core.Annotations; + +namespace NzbDrone.Core.Languages +{ + public class OriginalLanguageFieldConverter : ISelectOptionsConverter + { + public List GetSelectOptions() + { + return Language.All + .Where(l => l.Id >= 0) + .OrderBy(l => l.Id > 0).ThenBy(l => l.Name) + .ToList() + .ConvertAll(v => new SelectOption { Value = v.Id, Name = v.Name }); + } + } +}