Die hier erklärten Beispiele habe ich mittlerweile in ein Tool gepackt
Zu finden ->LazyTools
Ziel:
Autotimer so zu programmieren, dass bestimmte Filme automatisch aufgenommen werden, wenn sie nicht bereits in der Sammlung sind. Dazu sollten Daten von IMDB genutzt werden.
Ansätze:
Unterschiedliche Filter um Filme automatisiert aufzunehmen:
- Top250 Filme
- nach Erscheinungsjahr (z.B. ab 1980 o.ä.)
- nach Schauspieler (für Fans)
- nach Genre
- nach Bewertung (z.B. alles ab einer Bewertung von 7)
- nach Filmpreise (z.B. Oscar, Golden Globe)
- nach Land
- HD, oder SD Aufnahme
- beliebige Kombination aus verschiedene Filter
- Erkennung anhand der eindeutigen ID ttxxxxxx
- Komplette Filmreihen programmieren
Beispiel: Total Recall aufnehmen, aber nur das Original aus 1990 und dann noch in HD, oder alle Filme der Reihe "Fluch der Karibik"
Leider stoße ich bei IMDB & Co. auf Nutzungsbedingungen, die mir nicht ganz koscher sind. Deshalb möchte ich Euch zeigen, wie Ihr die meisten o.g. Ansätze mit Autotimer realisieren könnt.
Dazu nutzen wir RegEx, was von Autotimer unterstützt wird und komplexe Regeln ermöglicht
TIPP:
IMDB: Top 250 Filme http://www.imdb.com/chart/top?ref_=nv_ch_250_4
themoviedb.org: Best bewertet https://www.themoviedb.org/movie/top-rated?page=1
Damit habt Ihr schon mal eine (RIESIGE) Auswahl an Futter für Autotimer
Weitere Tipps findet Ihr im Beitrag "Trick 17"
Da Autotimer anscheinend im Standard Suchfeld kein RegEx unterstützt, nutzen wir einen kleinen Trick um nicht von einem Titel abhängig zu sein.
Grundgerüst, Autotimer-Eintrag:
1. Autotimereintrag erstellen
2. Im "Finde in Titel" ein EIN LEERZEICHEN eintragen.
3. Suchtyp: Übereinstimmung in der Beschreibung. Wir gehen einfach mal davon aus, dass in der Beschreibung mindestens ein Leerzeichen vorhanden ist
Ab hier könnt Ihr diese Beispiele nutzen
ACHTUNG! Je nach Anzahl der Sender, EPG Daten und Treffer, kann die Verarbeitung recht lange dauern und Eure Kiste in die Knie zwingen. Zum Testen solltet Ihr also die Sender begrenzen
Beispiel 1, Alle Filme mit einem bestimmten Schauspieler aufnehmen (Bruce Willis):
1. Autotimer-Eintrag erstellen, wie oben angegeben.
2. Filter hinzufügen, Einschließen, in der Beschreibung
3. Bruce Willis eintragen
Treffer am heutigen Tag: Last Man Standing und Tödliche Nähe
Jetzt noch ORF als Sender austragen und fertig.
Ok das war easy und hätte auch mit einer normalen Suche in der Beschreibung geklappt, es wird aber anspruchsvoller, versprochen!
Beispiel 2, einen bestimmten Film, aber mit Angabe des Erscheinungjahres aufnehmen:
Heute laufen 2 Filme:
Last Man Standing 1996 (ORF)
Last Samurai 2003 (Sat1)
Diese Filme auseinander zu halten ist keine Herausforderung, allerdings möchte ich Euch zeigen, wie Ihr das Erscheinungsjahr für Eure Zwecke nutzen könnt.
1. Autotimer-Eintrag erstellen, wie oben angegeben.
2. Filter hinzufügen, Einschließen, im Titel
3. .*Last.* eintragen. Damit liefern alle Titel, die irgendwo "Last" drin haben, einen Treffer
Jetzt liefert Autotimer beide o.g. Filme als Treffer. Grenzen wir es ein.
4. Filter hinzufügen, einschließen, in der Kurzbeschreibung
5. \b1996 eintragen. Das Jahr steht im EPG für Last Man Standing. "\b" sorgt dafür, dass nur Treffer beachtet werden, wenn die Zahl im Text "frei" steht.
Nun Liefert Autotimer auch NUR diesen einen Film!
Das ist besonders nützlich bei Remakes, wenn man eine bestimmte Version haben möchte.
Beispiel 3, noch anspruchsvoller. ODER (OR) Verknüpfung für Treffer:
Autotimer unterstützt nur UND Verknüpfungen beim Einschließ-Filter. Möchte man jedoch eine "ODER"-Verknüpfung mit RegEx hinbekommen, kann man folgendes Beispiel nutzen.
1. Autotimer-Eintrag erstellen, wie oben angegeben.
2. Filter hinzufügen, Einschließen, im Titel
3. (?i).*Geschichte.*|.*LAST.*|.*Börse.*
Ok, eine völlig sinnlose Kombination, dient aber der Veranschaulichung
(?i) ignoriert Groß- Kleinschreibung
.* bedeutet beliebiges Zeichen, beliebig oft wiederholt
| ist das Zeichen für ODER
Ergebnis:
Last Man Standing ProSieben MAXX 6/11/2015 8:4 6/11/2015 9:18
Wirtschaft und Börse N24 6/11/2015 8:16 6/11/2015 8:37
Telebörse n-tv 6/11/2015 8:32 6/11/2015 9:8
Mythen der Geschichte - Wissen aus dem Jenseits n-tv 6/12/2015 2:57 6/12/2015 3:53
usw.
Beispiel 4, eine Epoche (Jahreszahlen) definieren, einfache Version (Einschließen-Filter auf Kurzbeschreibung):
Will man Epochen definieren, kann man eine "ODER-Verknüpfung" nutzen und die gewünschten Jahre einzutragen, wenn es nicht zu viele sind. Eine andere Möglichkeit findet Ihr im Beispiel 8 und Beitrag "Trick17".
\b(1987|1988|1989|1990) Findet alle Jahre zwischen 1987-1990
Beispiel 5, Genre definieren (ODER-Verknüpft, Einschließen-Filter auf Kurzbeschreibung):
Nach dem gleichen Prinzip kann man Genres definieren. Sicherheitshalber sorgen wir dafür, dass Groß- Kleinschreibung ignoriert wird. Man kann natürlich auch nur einen Eintrag nutzen.
(?i)(Komödie|Zeichentrickserie|Spielfilm|Sitcom)
Beispiel 6, Genre mit Jahreszahl kombinieren (einfache Version, Einschließen-Filter auf Kurzbeschreibung)):
Jahreszahlen tauchen im EPG nach Genre auf.
Als Beispiel: Der Club der Teufelinnen Komödie, USA 1996
Der Filter (?i)Komödie.*\b1996 würde dann einen Treffer erzeugen Logik: "Genre Komödie gefolgt von Zahl 1996"
Beispiel 7, Produktionsland ( Einschließen-Filter auf Kurzbeschreibung):
Wieder als Beispiel: Der Club der Teufelinnen Komödie, USA 1996
(?i)\bUSA\b würde dann einen Treffer erzeugen. Sicherheitshalber sorgen wir wieder dafür, dass Groß- Kleinschreibung ignoriert wird. Außerdem sorgen wir mit \b dafür, dass nur "USA" einen Treffer erzeugt und kein anderes Wort, dass zufällig diese Buchstaben beinhaltet
Beispiel 8, Filter auf aktuelle Filme (Einschließen-Filter auf Kurzbeschreibung)):
\b(20[1-9][1-9]) Erlaubt nur Jahreszahlen 2011-2099. Das ergibt sich aus den ersten beiden Ziffern 20, dann die Ziffer 1-9 (Zahl 201-209), dann Ziffer 1-9 ( Zahl 2011-2099).
Beispiel 9, Filter kombinieren:
Wenn man einen weiteren Einschließen-Filter im Autotimer anlegt, dann sind sie UND verknüpft. D.h beide Filter müssen einen Treffer erzeugen.
Filter 1, Einschließen-Filter auf Kurzbeschreibung: (?i)(Komödie|Zeichentrickserie|Spielfilm|Sitcom)
Filter 2, Einschließen-Filter auf Kurzbeschreibung: \b(1987|1988|1989|1990)
Diese Kombination findet alle Angegebenen Genre, die in den angegebenen Jahren erschienen sind. Dabei sind die Filter selbst ODER und zueinander UND verknüpft.
Das Ganze funktioniert natürlich auch als Ausschluß-Filter. Allerdings sind Ausschluß-Filter seitens Autotimer ODER verknüpft. Wenn also auch nur ein Filter einen Treffer meldet, ist die Bedingung bereits erfüllt.
Jetzt kommt der Knaller:
Ob diese Kombi einen sinnvollen Treffer erzeugt, sei mal dahin gestellt, aber wir können es tun, also tun wir es auch!!
Filter 1, Einschließen-Filter auf Kurzbeschreibung: (?i)(Komödie|Spielfilm|Action Film)
Filter 2, Einschließen-Filter auf Kurzbeschreibung: (?i)\bUSA\b
Filter 3, Einschließen-Filter auf Beschreibung: (?i)bruce willis
Filter 4, Einschließen-Filter auf Kurzbeschreibung: \b(20[0-9][0-9])
Filter 5, Ausschluß-Filter auf Beschreibung: (?i)Schauspieler XY
Wenn alles gut läuft und EPG-Daten geliefert werden, sollten wir folgendes erhalten:
- Alle Filme mit Bruce Willis
- aus den Genres "Spielfilm, Komödie, Action Film"
- die zwischen Jahr 2000 - 2099 produziert wurden/werden
- und zwar in USA
- und in denen der Schauspieler XY NICHT mitspielt
IST DAS NICHT COOL?
Gute Anlaufstellen um RegEx zu lernen/testen:
http://www.regular-expressions.info/
https://regex101.com/
Herzlichen Dank an betonme, der mich auf die Idee gebracht hat mit RegEx zu experimentieren!