Skript zum Parsen von fernsehserien.de

  • Hallo,


    ich möchte hier mein Skript fernsehserien2episodelist zur Verfügung stellen, mit dem sich die Episoden-Listen für den VDRSeriesTimer von der Fernsehserien.de-Webseite erzeugen und speichern lassen:


    Es parst den Episodenguide auf der Seite und erzeugt daraus eine Liste im passenden Format für den VDRSeriesTimer. Dazu kann man den Seriennamen aus der fernsehserien.de-URL als Argument übergeben oder in einer Konfigurationsdatei vorgeben.


    Beispiel "The Flash":
    Eine Suche nach "The Flash" auf http://www.fernsehserien.de und folgendes durchhangeln zum Episodenguide führt zu folgender URL: http://www.fernsehserien.de/the-flash/episodenguide. Daraus ergibt sich der Serienname "the-flash", den das Skript als Argument erwartet und gibt beim Aufruf damit folgendes aus:


    Man kann das Ganze auch automatisieren, in dem man eine Konfigurationsdatei (bei mir unter /etc/vdr/fernsehserien.conf) anlegt, die wie folgt aussieht:


    Das Skript schreibt dabei die Episodendatei dabei jedesmal neu.

    Server:  (K)VM on Proxmox 4.x-Host, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) auf Debian 8 (Jessie), 1x Digital Devices Cine S2 (V6) + DuoFlex S2
    Clients: Raspberry Pi 2/3 mit Raspbian, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) als Streamdev-Clients

  • nett - ich habs gestern mal ausprobiert um das .epsiodes -File für eplists zu generieren für "Fortitude" - ich musste jedoch fortitude schreiben - es würde Sinn machen, wenn du beim "finden" etwas großzügiger wärst (Groß/Kleinschreibung etc)

  • Was für ein Zufall... Ich habe vor ein paar Wochen auch ein Skript gebastelt. Leider mit der Holzhammermethode ;)


    Als Parameter übergebe ich den Seriennamen (The Flash), welcher vom Skript in the-flash gewandelt wird:

    Code
    1. DLURL="$@" ; DLURL="${DLURL// /-}" # Parameter mit Leerzeichen (" " durch "-" ersetzen)
    2. DLURL="${DLURL,,}" # Kleinbuschstaben für die URL
    3. EPFILE="/tmp/$@.episodes" # Ausgabedatei

    Meien Skript verwendet kein sed oder sonstige externe Programme. Nur wget...
    Die ausgabe ist ohne die Kommentare. Die Datei wird aber bei canstabel akzeptiert.

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von MegaV0lt ()

  • sehr nett.
    Cool wäre es wenn Ihr die Listen dann gleich in die DB vom SerienTimer Plugin eintragt.
    So habe ich es bis jetzt immer per Hand gemacht.


    http://eplists.constabel.net/


  • Das geht nur per Hand. Oder gibt es eine Möglichkeit das zu automatisieren?

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • es würde Sinn machen, wenn du beim "finden" etwas großzügiger wärst (Groß/Kleinschreibung etc)

    Das habe ich bewußt nicht gemacht, da ich mir eh einmal die Daten in die Konfigurationsdatei gepackt habe. Und vom Aufwand her das recht überschaubar war. Eine intelligentere Lösung hat ja MegaV0lt vorgestellt. Allerdings hat auch die so ihre Probleme, z.B. mit Navi CIS: L.A., welches zu navy-cis-l-a umgesetzt werden muss. Meins war halt nur ein Schnellschuß. :)

    Server:  (K)VM on Proxmox 4.x-Host, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) auf Debian 8 (Jessie), 1x Digital Devices Cine S2 (V6) + DuoFlex S2
    Clients: Raspberry Pi 2/3 mit Raspbian, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) als Streamdev-Clients

  • Mit den Sonderzeichen wird mein Skript wohl nicht funktionieren... Bei den Serien, die ich bis jetzt abgefragt habe, hatte es aber immer funktioniert...

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • Hab mal auf die schnelle angepasst:

    Code
    1. DLURL="$@" ; DLURL="${DLURL// /-}" # Parameter mit Leerzeichen (" " durch "-" ersetzen)
    2. DLURL="${DLURL//\:/}" # ":" löschen
    3. DLURL="${DLURL//./-}" # "." durch "-" ersetzen
    4. [ "${DLURL: -1}" == "-" ] && DLURL=${DLURL:0: -1} # Letztes Zeichen ist ein "-" und muss entfernt werden
    5. DLURL="${DLURL,,}" # Kleinbuchstaben für die URL


    gibt:


    PS: Ich verwende außerdem ein Skript, dass ein mal am Tag das Syslog nach fehlenden eplists-Einträgen durchsucht und mir eine freundliche eMail schickt ;)

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • Mit den Sonderzeichen wird mein Skript wohl nicht funktionieren...


    Wenn du die Zeile 24 in deinem Skript durch folgende Zeilen ersetzt, sollte das auch bei dir funktionieren:


    Nun sollte auch es auch mit "Bones - Die Knochenjägerin" funktionieren. :)

    Server:  (K)VM on Proxmox 4.x-Host, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) auf Debian 8 (Jessie), 1x Digital Devices Cine S2 (V6) + DuoFlex S2
    Clients: Raspberry Pi 2/3 mit Raspbian, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) als Streamdev-Clients

  • Es führen ja viele Wege nach Rom ;) Ich habe nun eine Schleife draus gemacht... Falls noch mehr Zeichen ersetzt werden müssen:


    Durch das DLURL="$@" werden bereits alle doppelten und oder führenden Leerzeichen entfernt.

    Code
    1. [~] # mk_episodes.sh 123 456 555
    2. mk_episodes.sh - Version 150211
    3. $@: "123 456 555"

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • Durch das DLURL="$@" werden bereits alle doppelten und oder führenden Leerzeichen entfernt.

    Es sei denn, man ruft das Script wie folgt auf:

    Code
    1. mk_episodes.sh " Navy CIS: L.A."

    Oder?


    PS: Ich verwende außerdem ein Skript, dass ein mal am Tag das Syslog nach fehlenden eplists-Einträgen durchsucht und mir eine freundliche eMail schickt ;)

    Das ist 'ne gute Idee! Daran hätte ich Interesse - nicht an dem kompletten Skript - aber an dem Suchmuster und der Serienerkennung dahinter, also dem Mechanismus. :)

    Server:  (K)VM on Proxmox 4.x-Host, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) auf Debian 8 (Jessie), 1x Digital Devices Cine S2 (V6) + DuoFlex S2
    Clients: Raspberry Pi 2/3 mit Raspbian, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) als Streamdev-Clients

  • Das $@ verwende ich ja gerade um die " nicht verwenden zu müssen. Wenn man den Parameter in " übergibt. dann klappt das nicht mehr. Dann wäre so was einzubauen:

    Code
    1. trimmed=$([[ "$@" =~ [[:space:]]*([^[:space:]]|[^[:space:]].*[^[:space:]])[[:space:]]* ]]; echo -n "${BASH_REMATCH[1]}")


    Das Mailskript habe ich mal so gebastelt:

    Auf dem VDR ist ssmtp zum versenden von Mails installiert...


    PS: Habe ich verlinkt nach /etc/cron.daily

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • Das Mailskript habe ich mal so gebastelt:

    Danke. Das sieht interessant aus. Da ich aber xmltv2vdr nicht verwende, muss ich mal schauen, wie ich so etwas bei mir finde. Aber interessant finde ich, die Idee, dass beim Nicht-Finden einer Serie die Episoden-Listen dafür einfach heruntergeladen werden. Da braucht man sich dann um nix mehr kümmern. Einfach in EPGSearch eintragen und vergessen... ähm... fertig! :D

    Server:  (K)VM on Proxmox 4.x-Host, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) auf Debian 8 (Jessie), 1x Digital Devices Cine S2 (V6) + DuoFlex S2
    Clients: Raspberry Pi 2/3 mit Raspbian, VDR 2.2.0 (selbstgebaut vom yaVDR unstable Repo) als Streamdev-Clients

  • Du musst nur herausfinden, was geloggt wird und das dann Parsen... Der Rest bleibt gleich...


    Automatisiert habe ich das nicht. Ich lade täglich die eplists.Datei von constabel via Skript. Falls ich in der Mail was finde, das ich auch benötige, dann rufe ich das mk_episodes manuell auf und trage das Ergebnis bei constabel ein...

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • Habe das Skript noch ein wenig überarbeitet und auch die Kommentare, die ja eigentlich nicht benötigt werde mit eingebaut

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von MegaV0lt () aus folgendem Grund: Skript entfernt

  • Ich habe das Skript noch ein wenig erweitert, um auch Zeichen wie !, ?, &, ... zu erkennen und zu ersetzten

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von MegaV0lt ()

  • Das Skript schreibt dabei die Episodendatei dabei jedesmal neu.


    mal eine kleine Anmerkung:


    man sollte diese Skripte - erstmal egal von wem - nur für neue Serien die noch nicht auf eplists verfügbar sind nutzen. Einige Listen werden mit sehr viel Herzblut geführt, Daten werden auf mehreren Websites zusammengesucht, da geht es natürlich überhaupt gar nicht wenn jemand sein Skript anwirft und das Ergebnis von fernsehserien.de nach eplist hochlädt und vorhandenes ungesehen webügelt.


    ich finde es geht auch gar nicht das man Listen direkt aus xml2vdr direkt nach eplists updaten kann, ohne das vorab in irgendwiner Art geprüft wird ob die zugrundeliegende Liste der aktuellsten auf dem Server liegenden Version entspricht.


    Würde es nach mir gehen könnte man die Listen nur im Web editieren, Ist aber nur meine Meinung natürlich...


    Christian

     CKone: yavdr 0.6.1/2.3.8 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 700, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr 0.6.1/2.3.8 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 700, atric USB
    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.3.8 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, Digital Devices MaxS8, Samsung 840 EVO 120GB, 3x WD Red WD30EFRX 3TB in SW Raid5

  • Ich wüsste nicht wie das gehen soll, die Listen automatisch hochzuladen...


    Alle Dateien werden lokal erzeugt und müssen von Hand bei Constabel eingepflegt werden; Auch neue Listen!
    Das einzige was automatisch funktionieren würde, ist die Listen am VDR automatisiert zu aktualisieren.

    „Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten“ [Albert Einstein]

    Gen2VDR V6 Update 9; VDR 2.2.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i3-3220, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]


  • Es werden auch die alternativen (Originaltitel) ausgegeben.
    Außerdem sollten Folen ohne Namen ein "n.n." alt Titel bekommen


    Kannst Du bitte das mit den Originaltiiteln als Alternativen entfernen?
    Das müllt die episoden-Datei bei vielen Staffeln zu und ist NICHT dafür gedacht!
    Anderssprachige Titel kommen in eine seperate episoden-Datei, bei den Originaltiteln dann mit .en gekennzeichnet.
    Es macht echt Mühe, den #alternative Kram (wenn es die Originaltitel sind) händische wieder rauszulöschen, damit es übersichtlich bleibt.


    Markus

  • Ja ich hab das auch offline mit Mike Constabel besprochen: es ist in keinem Fall gewüscht hier automatisch ungeprüft Content hochzuladen was den Gemeinwohl der Gemeinschafft stört, er behält sich vor diese Useraccounts zu sperren. Es ist ja auch nicht so das fernsehserien.de die allgemeingültige Wahrheit darstellt, oft findet man die wenn man zwei oder drei webseiten querlist. Da ist es schon beschämend wenn jemand mit roher Gewalt diesen Kontent eigennützig wegbügelt.


    Das mit den en Dateien ist genauso korrekt wie von ofenheizer beschrieben.


    Christian

     CKone: yavdr 0.6.1/2.3.8 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 700, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr 0.6.1/2.3.8 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 700, atric USB
    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.3.8 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, Digital Devices MaxS8, Samsung 840 EVO 120GB, 3x WD Red WD30EFRX 3TB in SW Raid5