feat(savetv): erweitere Wunschfilm-Liste
Made-with: Cursor
This commit is contained in:
parent
196f36372e
commit
93c601dfa3
2 changed files with 96 additions and 4 deletions
|
|
@ -37,10 +37,11 @@ Automatische KI-Anreicherung von Save.TV-Filmarchiv mit Beschreibungen, Darstell
|
|||
- **Erlaubt automatisch:** internationale Kinofilme aus USA/UK/Kanada/Australien/Japan/Südkorea/Hongkong mit passendem Genre oder klar erkennbarem Kino-Titel.
|
||||
- **Konsequenz:** Unbekannte RBB/MDR/hr/WDR/BR/SWR/ZDF/ARD/arte/ONE-Titel werden nicht mehr automatisch aufgenommen oder heruntergeladen, bis sie angereichert sind oder eindeutig als Kinofilm erkannt werden.
|
||||
|
||||
### 5. Wunschfilm: Der Clou
|
||||
- **Wunschtitel:** `Der Clou` / `The Sting` (1973)
|
||||
- **Automatik:** Wird im Save.TV-Scan immer automatisch aufgenommen, wenn der Titel eindeutig `Der Clou` oder `The Sting` ist.
|
||||
- **Schutz gegen Fehlgriff:** Der einzelne Titel `Sting` wird nur akzeptiert, wenn Beschreibung/Untertitel auf Paul Newman, Robert Redford, Johnny Hooker, Gondorff, Lonnegan oder das 1930er-Setting verweisen. Dadurch wird `Sting` (2024, Spinnen-Horror) nicht erneut als `Der Clou` behandelt.
|
||||
### 5. Wunschfilm-Liste
|
||||
- **Datei:** `tools/savetv.py`, Konstante `WISHLIST_MOVIES`
|
||||
- **Ziel:** Hochwertige Klassiker und Reihen automatisch aufnehmen, auch wenn Save.TV-Score oder Qualitätsfilter sie sonst nur vorschlagen würden.
|
||||
- **Aktive Startliste:** `Der Clou`, `Déjà Vu`, `Die üblichen Verdächtigen`, `L.A. Confidential`, `Chinatown`, `French Connection`, `Bullitt`, `Serpico`, `Der Pate`, `GoodFellas`, `Casino`, `Scarface`, `Departed`, Western-Klassiker, Sci-Fi-Klassiker, starke Kriegs-/Politthriller, Gerichts-/Drama-Klassiker sowie Reihen wie `Jesse Stone`, `Columbo`, `Wallander`, `Jack Reacher`, `Bourne`, `Mission Impossible`, `Indiana Jones` und `James Bond`.
|
||||
- **Schutz gegen Fehlgriffe:** Mehrdeutige Ein-Wort-Titel laufen nur mit Kontext. `Sting` wird nur mit Paul-Newman/Robert-Redford/1930er-Hinweisen als `Der Clou` akzeptiert; `Heat` braucht De-Niro/Pacino/Mann-Kontext; `Crash` braucht Haggis/Don-Cheadle/Los-Angeles-Kontext.
|
||||
|
||||
## Erfahrungen / Gotchas
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,31 @@ DOWNLOAD_FORMAT_SD = 5
|
|||
AUTO_RECORD_SCORE = 80
|
||||
SUGGEST_SCORE = 60
|
||||
|
||||
|
||||
def _title_pattern(title):
|
||||
"""Titel exakt genug matchen, aber Leerzeichen/Interpunktion tolerant halten."""
|
||||
parts = [re.escape(p) for p in re.findall(r"\w+", title.strip().lower(), re.UNICODE)]
|
||||
return r"(?<!\w)" + r"[\W_]+".join(parts) + r"(?!\w)"
|
||||
|
||||
|
||||
def _wishlist_title(name, *aliases):
|
||||
return {
|
||||
"name": name,
|
||||
"title_patterns": [_title_pattern(a) for a in aliases],
|
||||
"ambiguous_title_patterns": [],
|
||||
"required_context_patterns": [],
|
||||
}
|
||||
|
||||
|
||||
def _wishlist_ambiguous(name, aliases, context):
|
||||
return {
|
||||
"name": name,
|
||||
"title_patterns": [],
|
||||
"ambiguous_title_patterns": [_title_pattern(a) for a in aliases],
|
||||
"required_context_patterns": context,
|
||||
}
|
||||
|
||||
|
||||
WISHLIST_MOVIES = [
|
||||
{
|
||||
"name": "Der Clou",
|
||||
|
|
@ -63,6 +88,72 @@ WISHLIST_MOVIES = [
|
|||
r"\b1930\b",
|
||||
],
|
||||
},
|
||||
_wishlist_title("Déjà Vu", "Déjà Vu - Wettlauf gegen die Zeit", "Deja Vu - Wettlauf gegen die Zeit"),
|
||||
_wishlist_title("Die üblichen Verdächtigen", "Die üblichen Verdächtigen", "The Usual Suspects"),
|
||||
_wishlist_title("L.A. Confidential", "L.A. Confidential"),
|
||||
_wishlist_title("Chinatown", "Chinatown"),
|
||||
_wishlist_title("French Connection", "French Connection", "The French Connection"),
|
||||
_wishlist_title("Bullitt", "Bullitt"),
|
||||
_wishlist_title("Serpico", "Serpico"),
|
||||
_wishlist_title("Dog Day Afternoon", "Dog Day Afternoon", "Hundstage"),
|
||||
_wishlist_title("Bonnie und Clyde", "Bonnie und Clyde", "Bonnie and Clyde"),
|
||||
_wishlist_title("Der Pate", "Der Pate", "The Godfather"),
|
||||
_wishlist_title("GoodFellas", "GoodFellas", "GoodFellas - Drei Jahrzehnte in der Mafia"),
|
||||
_wishlist_title("Casino", "Casino"),
|
||||
_wishlist_title("Scarface", "Scarface"),
|
||||
_wishlist_title("Carlito's Way", "Carlito's Way", "Carlitos Way"),
|
||||
_wishlist_title("Es war einmal in Amerika", "Es war einmal in Amerika", "Once Upon a Time in America"),
|
||||
_wishlist_title("Departed", "Departed", "Departed - Unter Feinden"),
|
||||
_wishlist_title("Spiel mir das Lied vom Tod", "Spiel mir das Lied vom Tod", "Once Upon a Time in the West"),
|
||||
_wishlist_title("Zwei glorreiche Halunken", "Zwei glorreiche Halunken", "The Good, the Bad and the Ugly"),
|
||||
_wishlist_title("Der mit dem Wolf tanzt", "Der mit dem Wolf tanzt", "Dances with Wolves"),
|
||||
_wishlist_title("Open Range", "Open Range"),
|
||||
_wishlist_title("Erbarmungslos", "Erbarmungslos", "Unforgiven"),
|
||||
_wishlist_title("True Grit", "True Grit"),
|
||||
_wishlist_title("Butch Cassidy and the Sundance Kid", "Butch Cassidy and the Sundance Kid", "Zwei Banditen"),
|
||||
_wishlist_title("Blade Runner", "Blade Runner"),
|
||||
_wishlist_title("Alien", "Alien - Das unheimliche Wesen aus einer fremden Welt"),
|
||||
_wishlist_title("Aliens", "Aliens - Die Rückkehr", "Aliens - Die Rueckkehr"),
|
||||
_wishlist_title("Terminator", "Terminator"),
|
||||
_wishlist_title("Terminator 2", "Terminator 2", "Terminator 2 - Tag der Abrechnung"),
|
||||
_wishlist_title("Matrix", "Matrix", "The Matrix"),
|
||||
_wishlist_title("12 Monkeys", "12 Monkeys", "Twelve Monkeys"),
|
||||
_wishlist_title("Children of Men", "Children of Men"),
|
||||
_wishlist_title("Gattaca", "Gattaca"),
|
||||
_wishlist_title("Minority Report", "Minority Report"),
|
||||
_wishlist_title("Apocalypse Now", "Apocalypse Now"),
|
||||
_wishlist_title("Full Metal Jacket", "Full Metal Jacket"),
|
||||
_wishlist_title("Platoon", "Platoon"),
|
||||
_wishlist_title("Der Soldat James Ryan", "Der Soldat James Ryan", "Saving Private Ryan"),
|
||||
_wishlist_title("Black Hawk Down", "Black Hawk Down"),
|
||||
_wishlist_title("Die Unbestechlichen", "Die Unbestechlichen", "All the President's Men"),
|
||||
_wishlist_title("JFK", "JFK"),
|
||||
_wishlist_title("Argo", "Argo"),
|
||||
_wishlist_title("Zeugin der Anklage", "Zeugin der Anklage", "Witness for the Prosecution"),
|
||||
_wishlist_title("Die zwölf Geschworenen", "Die zwölf Geschworenen", "12 Angry Men"),
|
||||
_wishlist_title("Einer flog über das Kuckucksnest", "Einer flog über das Kuckucksnest", "One Flew Over the Cuckoo's Nest"),
|
||||
_wishlist_title("Die Verurteilten", "Die Verurteilten", "The Shawshank Redemption"),
|
||||
_wishlist_title("Forrest Gump", "Forrest Gump"),
|
||||
_wishlist_title("Rain Man", "Rain Man"),
|
||||
_wishlist_title("Million Dollar Baby", "Million Dollar Baby"),
|
||||
_wishlist_title("Jesse Stone", "Jesse Stone"),
|
||||
_wishlist_title("Columbo", "Columbo"),
|
||||
_wishlist_title("Wallander", "Wallander"),
|
||||
_wishlist_title("Jack Reacher", "Jack Reacher", "Reacher"),
|
||||
_wishlist_title("Bourne", "Bourne"),
|
||||
_wishlist_title("Mission Impossible", "Mission Impossible", "Mission: Impossible"),
|
||||
_wishlist_title("Indiana Jones", "Indiana Jones"),
|
||||
_wishlist_title("James Bond", "James Bond 007", "007"),
|
||||
_wishlist_ambiguous(
|
||||
"Heat",
|
||||
["Heat"],
|
||||
[r"\bdeniro\b", r"\bde\s+niro\b", r"\bal\s+pacino\b", r"\bmann\b", r"\bwaingro\b"],
|
||||
),
|
||||
_wishlist_ambiguous(
|
||||
"Crash",
|
||||
["Crash"],
|
||||
[r"\bpaul\s+haggis\b", r"\bdon\s+cheadle\b", r"\bmatt\s+dillon\b", r"\blos\s+angeles\b"],
|
||||
),
|
||||
]
|
||||
|
||||
SPAM_SUBCATEGORIES = {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue