diff --git a/UmlautAdaptarr/Models/SearchItem.cs b/UmlautAdaptarr/Models/SearchItem.cs index eea582c..1383c9b 100644 --- a/UmlautAdaptarr/Models/SearchItem.cs +++ b/UmlautAdaptarr/Models/SearchItem.cs @@ -54,6 +54,7 @@ namespace UmlautAdaptarr.Models else { TitleSearchVariations = GenerateVariations(germanTitle, mediaType).ToArray(); + var allTitleVariations = new List(TitleSearchVariations); // If aliases are not null, generate variations for each and add them to the list @@ -66,8 +67,22 @@ namespace UmlautAdaptarr.Models } } - TitleMatchVariations = allTitleVariations.Distinct().ToArray(); AuthorMatchVariations = []; + + // if a german title ends with (DE) also add a search string that replaces (DE) with GERMAN + // also add a matching title without (DE) + if (germanTitle?.EndsWith("(DE)") ?? false) + { + TitleSearchVariations = [.. TitleSearchVariations, .. + GenerateVariations( + germanTitle.Replace("(DE)", " GERMAN").RemoveExtraWhitespaces(), + mediaType)]; + + allTitleVariations.AddRange(GenerateVariations(germanTitle.Replace("(DE)", "").Trim(), mediaType)); + + } + + TitleMatchVariations = allTitleVariations.Distinct().ToArray(); } } @@ -111,7 +126,7 @@ namespace UmlautAdaptarr.Models { var cleanTitleWithoutArticle = germanTitle[3..].Trim(); baseVariations.AddRange(GenerateVariations(cleanTitleWithoutArticle, mediaType)); - } + } // Remove multiple spaces var cleanedVariations = baseVariations.Select(variation => variation.RemoveExtraWhitespaces()); diff --git a/UmlautAdaptarr/Services/TitleMatchingService.cs b/UmlautAdaptarr/Services/TitleMatchingService.cs index 3dfadd4..c797bd2 100644 --- a/UmlautAdaptarr/Services/TitleMatchingService.cs +++ b/UmlautAdaptarr/Services/TitleMatchingService.cs @@ -1,4 +1,5 @@ -using System.Text.RegularExpressions; +using Microsoft.Extensions.FileSystemGlobbing.Internal; +using System.Text.RegularExpressions; using System.Xml.Linq; using UmlautAdaptarr.Models; using UmlautAdaptarr.Utilities; @@ -174,12 +175,6 @@ namespace UmlautAdaptarr.Services // Check if the originalTitle starts with the variation (ignoring case and separators) if (Regex.IsMatch(normalizedOriginalTitle, variationMatchPattern, RegexOptions.IgnoreCase)) { - // Workaround for the rare case of e.g. "Frieren: Beyond Journey's End" that also has the alias "Frieren" - if (expectedTitle!.StartsWith(variation, StringComparison.OrdinalIgnoreCase)) - { - logger.LogWarning($"TitleMatchingService - Didn't rename: '{originalTitle}' because the expected title '{expectedTitle}' starts with the variation '{variation}'"); - continue; - } var originalTitleMatchPattern = "^" + Regex.Escape(variation).Replace("\\ ", "[._ ]"); // Find the first separator used in the original title for consistent replacement @@ -191,6 +186,19 @@ namespace UmlautAdaptarr.Services var variationLength = variation.Length; var suffix = originalTitle[Math.Min(variationLength, originalTitle.Length)..]; + // Workaround for the rare case of e.g. "Frieren: Beyond Journey's End" that also has the alias "Frieren" + if (expectedTitle!.StartsWith(variation, StringComparison.OrdinalIgnoreCase)) + { + // See if we already matched the whole title by checking if S01E01 pattern is coming next to avoid false positives + // - that won't help with movies but with tv shows + var seasonMatchingPattern = $"^{separator}S\\d{{1,2}}E\\d{{1,2}}"; + if (!Regex.IsMatch(suffix, seasonMatchingPattern)) + { + logger.LogWarning($"TitleMatchingService - Didn't rename: '{originalTitle}' because the expected title '{expectedTitle}' starts with the variation '{variation}'"); + continue; + } + } + // Clean up any leading separators from the suffix suffix = Regex.Replace(suffix, "^[._ ]+", ""); diff --git a/build_and_push_docker_image.bat b/build_and_push_docker_image.bat new file mode 100644 index 0000000..9bc3731 --- /dev/null +++ b/build_and_push_docker_image.bat @@ -0,0 +1,18 @@ +@echo off +SET IMAGE_NAME=pcjones/umlautadaptarr + +echo Enter the version number for the Docker image: +set /p VERSION="Version: " + +echo Building Docker image with version %VERSION%... +docker build -t %IMAGE_NAME%:%VERSION% . +docker tag %IMAGE_NAME%:%VERSION% %IMAGE_NAME%:latest + +echo Pushing Docker image with version %VERSION%... +docker push %IMAGE_NAME%:%VERSION% + +echo Pushing Docker image with tag latest... +docker push %IMAGE_NAME%:latest + +echo Done. +pause \ No newline at end of file