Fix wrong title renaming when expectedTitle startsWith variation

This commit is contained in:
pcjones
2024-02-12 04:06:39 +01:00
parent 5c87f3a0af
commit d159850f67
2 changed files with 13 additions and 4 deletions

View File

@@ -46,8 +46,9 @@ namespace UmlautAdaptarr.Services
} }
} }
var variationsOrderedByLength = titleMatchVariations!.OrderByDescending(variation => variation.Length);
// Attempt to find a variation that matches the start of the original title // Attempt to find a variation that matches the start of the original title
foreach (var variation in titleMatchVariations!) foreach (var variation in variationsOrderedByLength)
{ {
// Skip variations that are already the expectedTitle // Skip variations that are already the expectedTitle
if (variation == expectedTitle) if (variation == expectedTitle)
@@ -56,11 +57,19 @@ namespace UmlautAdaptarr.Services
} }
// Variation is already normalized at creation // Variation is already normalized at creation
var pattern = "^" + Regex.Escape(variation).Replace("\\ ", "[._ ]"); var variationMatchPattern = "^" + Regex.Escape(variation).Replace("\\ ", "[._ ]");
// Check if the originalTitle starts with the variation (ignoring case and separators) // Check if the originalTitle starts with the variation (ignoring case and separators)
if (Regex.IsMatch(normalizedOriginalTitle, pattern, RegexOptions.IgnoreCase)) 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 // Find the first separator used in the original title for consistent replacement
var separator = FindFirstSeparator(originalTitle); var separator = FindFirstSeparator(originalTitle);
// Reconstruct the expected title using the original separator // Reconstruct the expected title using the original separator

View File

@@ -48,7 +48,7 @@ namespace UmlautAdaptarr.Utilities
public static string GetCleanTitle(this string text) public static string GetCleanTitle(this string text)
{ {
return text.Replace("(", "").Replace(")", "").Replace("?","").Replace(":", ""); return text.Replace("(", "").Replace(")", "").Replace("?","").Replace(":", "").Replace("'", "");
} }
public static string ReplaceGermanUmlautsWithLatinEquivalents(this string text) public static string ReplaceGermanUmlautsWithLatinEquivalents(this string text)