Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a67d5c2d1e | ||
|
|
d1d05f8264 | ||
|
|
939b902be3 | ||
|
|
f56d071642 | ||
|
|
7513e7d227 | ||
|
|
7a791dab23 | ||
|
|
402a4deba3 | ||
|
|
d31508fef3 | ||
|
|
1c329e886d | ||
|
|
6932c4b2f8 | ||
|
|
ff051569ca |
@@ -5,7 +5,7 @@
|
||||
## Erste Testversion
|
||||
Wer möchte kann den UmlautAdaptarr jetzt gerne testen! Über Feedback würde ich mich sehr freuen!
|
||||
|
||||
Es sollte mit allen *arrs funktionieren, hat aber nur bei Sonarr und Lidarr schon Auswirkungen (abgesehen vom Caching).
|
||||
Es sollte mit allen *arrs funktionieren, hat aber nur bei Sonarr, Readarr und Lidarr schon Auswirkungen (abgesehen vom Caching).
|
||||
|
||||
Momentan ist docker dafür nötig, wer kein Docker nutzt muss sich noch etwas gedulden.
|
||||
|
||||
@@ -30,7 +30,7 @@ UmlautAdaptarr löst mehrere Probleme:
|
||||
|
||||
# Wie macht UmlautAdaptarr das?
|
||||
UmlautAdaptarr tut so, als wäre es ein Indexer. In Wahrheit schaltet sich UmlautAdaptarr aber nur zwischen die *arrs und den echten Indexer und kann somit die Suchen sowie die Ergebnisse abfangen und bearbeiten.
|
||||
Am Ende werden die gefundenen Releases immer so umbenannt, das die Arrs sie einwandfrei erkennen.
|
||||
Am Ende werden die gefundenen Releases immer so umbenannt, dass die Arrs sie einwandfrei erkennen.
|
||||
Einige Beispiele findet ihr unter Features.
|
||||
|
||||
|
||||
@@ -46,6 +46,8 @@ Einige Beispiele findet ihr unter Features.
|
||||
| Releases mit TVDB-Alias Titel werden erkannt | ✓ |
|
||||
| Korrekte Suche und Erkennung von Titel mit Umlauten | ✓ |
|
||||
| Anfragen-Caching für 5 Minuten zur Reduzierung der API-Zugriffe | ✓ |
|
||||
| Usenet (newznab) Support |✓|
|
||||
| Torrent Support | Vorerst nicht geplant |
|
||||
| Radarr Support | Geplant |
|
||||
| Prowlarr Unterstützung für "DE" SceneNZBs Kategorien | Geplant |
|
||||
| Unterstützung weiterer Sprachen neben Deutsch | Geplant |
|
||||
|
||||
@@ -43,7 +43,30 @@ namespace UmlautAdaptarr.Models
|
||||
}
|
||||
else
|
||||
{
|
||||
GenerateVariationsForTV(germanTitle, mediaType, aliases);
|
||||
// if mediatype is movie/tv and the Expected Title ends with a year but the german title doesn't then append the year to the german title and to aliases
|
||||
// example: https://thetvdb.com/series/385925-avatar-the-last-airbender -> german Title is without 2024
|
||||
var yearAtEndOfTitleMatch = YearAtEndOfTitleRegex().Match(expectedTitle);
|
||||
if (yearAtEndOfTitleMatch.Success)
|
||||
{
|
||||
string year = yearAtEndOfTitleMatch.Value[1..^1];
|
||||
if (GermanTitle != null && !GermanTitle.Contains(year))
|
||||
{
|
||||
GermanTitle = $"{germanTitle} {year}";
|
||||
}
|
||||
|
||||
if (aliases != null)
|
||||
{
|
||||
for (int i = 0; i < aliases.Length; i++)
|
||||
{
|
||||
if (!aliases[i].Contains(year))
|
||||
{
|
||||
aliases[i] = $"{aliases[i]} {year}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GenerateVariationsForTV(GermanTitle, mediaType, aliases);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +83,12 @@ namespace UmlautAdaptarr.Models
|
||||
foreach (var alias in aliases)
|
||||
{
|
||||
allTitleVariations.AddRange(GenerateVariations(alias, mediaType));
|
||||
|
||||
// If title contains ":" also match for "-"
|
||||
if (alias.Contains(':'))
|
||||
{
|
||||
allTitleVariations.Add(alias.Replace(":", " -"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +108,12 @@ namespace UmlautAdaptarr.Models
|
||||
|
||||
}
|
||||
|
||||
// If title contains ":" also match for "-"
|
||||
if (germanTitle?.Contains(':') ?? false)
|
||||
{
|
||||
allTitleVariations.Add(germanTitle.Replace(":", " -"));
|
||||
}
|
||||
|
||||
TitleMatchVariations = allTitleVariations.Distinct(StringComparer.InvariantCultureIgnoreCase).ToArray();
|
||||
}
|
||||
|
||||
@@ -123,6 +158,7 @@ namespace UmlautAdaptarr.Models
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
var cleanTitle = title.GetCleanTitle();
|
||||
|
||||
if (cleanTitle?.Length == 0)
|
||||
@@ -180,5 +216,8 @@ namespace UmlautAdaptarr.Models
|
||||
|
||||
return cleanedVariations.Distinct();
|
||||
}
|
||||
|
||||
[GeneratedRegex(@"\(\d{4}\)$")]
|
||||
private static partial Regex YearAtEndOfTitleRegex();
|
||||
}
|
||||
}
|
||||
@@ -221,7 +221,7 @@ namespace UmlautAdaptarr.Services
|
||||
*/
|
||||
|
||||
// Construct the new title with the original suffix
|
||||
var newTitle = newTitlePrefix + (string.IsNullOrEmpty(suffix) ? "" : separator + suffix);
|
||||
var newTitle = newTitlePrefix + (string.IsNullOrEmpty(suffix) ? "" : suffix.StartsWith(separator) ? suffix : $"{separator}{suffix}");
|
||||
|
||||
// Update the title element's value with the new title
|
||||
//titleElement.Value = newTitle + $"({originalTitle.Substring(0, variationLength)})";
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace UmlautAdaptarr.Utilities
|
||||
// RegEx für eine einfache URL-Validierung ohne http:// und ohne abschließenden Schrägstrich
|
||||
// Erlaubt optionale Subdomains, Domainnamen und TLDs, aber keine Pfade oder Protokolle
|
||||
var regex = UrlMatchingRegex();
|
||||
return regex.IsMatch(domain) && !domain.EndsWith("/");
|
||||
return regex.IsMatch(domain);
|
||||
}
|
||||
|
||||
public static string BuildUrl(string domain, IDictionary<string, string> queryParameters)
|
||||
|
||||
Reference in New Issue
Block a user