[epgd Plugin] Neues Plugin für epgd: epgd-plugin-xmltv

  • Manchmal muss man nur sauber durchstarten. Nachdem ich die DB bereinigt und das xml um diverse "Missing definitions" erleichtert habe,
    lässt sich die Datei sauber importieren und ich habe wieder Daten im epgd! :bounce5

    Zabrimus
    falls du die Kategorien im Plugin ausnehmen möchtest: bei mir waren es unter channel <icon> sowie unter programme <star-rating>, <new> und <live>.
    Momentan filtere ich die mit einem Skript aus der Quelldatei, eingebunden via xmltv.getdata.

    Danke & cheers,

    Ole

    Neugierig?

    VDR: yaVDR_ansible@focal/VDR 2.4.1, OrigenAE S10V, PicoPSU, Asus H97M-Plus, Core i3 4150, 4GB RAM, Asus GT1030 passiv, KINGSTON SM2280S M.2 SATA SSD,
    Aufnahmen auf 17TB Openmediavault (NFS), 1x DD Cine S2 V6.5, 1x OctopusNET SATIP (4xDVBS2), 12" HDMI-LCD, Panasonic TX-L55ETW60, Logitech Harmony 300

    Edited once, last by OleS (May 23, 2025 at 8:09 AM).

  • falls du die Kategorien im Plugin ausnehmen möchtest: bei mir waren es unter channel <icon> sowie unter programme <star-rating>, <new> und <live>.

    Das xsl Script wurde entsprechend angepasst, die genannten Elemente werden jetzt auch entfernt. Danke für den Hinweis.

  • Moin, und danke für das neue epg-plugin.

    Habs eingerichtet und klappt soweit.

    Serien werden auch gescrapt, allerdings keine Filme. In der Tabelle "events" werden Serien im Feld category mit "Serie" geklariert. In allen anderen Zeilen steht bei mir im Feld category null. Dann findet der Scraper für Filme natürlich nichts.

    Kann man das noch irgendwie anpassen?

  • In allen anderen Zeilen steht bei mir im Feld category null. Dann findet der Scraper für Filme natürlich nichts.

    Kann man das noch irgendwie anpassen?

    Wie werden denn Filme identifiziert? Im XML habe ich soweit kein eindeutiges Merkmal gefunden, wobei auch bei Serien gibt es da nichts wirklich sinnvolles. Es gibt eine 'Category', aber für Werte wie Drama oder Krimi kann man keine wirkliche Zuordnung zu Serie/Film treffen.
    Es sieht wohl so aus, als ob für Serien wesentlich mehr Information (auch Bilder) vorhanden sind, als für Filme. Aber wie der epg Daemon da arbeitet, weiß ich nicht.

  • Code
     select count(*), category from events where scrmovieid is not null group by category ;

    in category sollte auf der events Tabelle "Spielfilm" stehen damit der scraper losläuft

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 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 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 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 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5


  • Wirklich zuverlässig wird das wohl mit den vorhandenen XML-Daten nichts werden :(


    Aber man könnte ja evtl. eine Kombination (mit Gewichtung?) aus folgenden Prüfungen durchführen:

    • nicht als "Serie" erkannt (zB kein S3 E1 oder E143) - das dürfte zB bei magentatv schon sehr gut treffen
    • Laufzeit > 55 min
    • nicht Kategorie "Sitcom", "Dokumentation", "Nachrichten", etc.

    Ist sicher noch verbesserungswürdig, aber könnte das ein Ansatz sein?

    Oder gibts für den Scraper ohnehin nur "Serie" und "Spielfilm"? Dann könnte man ja einfach statt null/leer (siehe #23 ) immer hart "Spielfilm" reinschreiben. Aber dann muss die Serienerkennung 99%ig sein ;)

    MyVDR: yaVDR-Ansible (Ubuntu 20, VDR 2.4.8) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr (tvm) - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 21 - xstream
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Hiho,

    ich bastle derzeit an einem tvs-scraper bei dem ich versucht habe mich an die XMLTV-Vorgaben zu halten.

    Die erstellte tvs_xmltv.zip ist valide (laut 'tv_validate_file') aber das epgd-plugin-xmltv ignoriert den Inhalt komplett:

    Code
    XML File 'ARD.tvs-2025-05-31-' processed, updated 0 events

    In der 'channelmap.conf' habe ich, unter anderem:

    Code
    xmltv:ARD.tvs:1			=	S19.2E-1-1019-10301			//	Das Erste HD

    Bis jetzt habe ich versucht die IDs alle in Großschreibung anzugeben und die start/stop zeiten in GMT+2 umzurechnen, beides ohne Erfolg.

    Hat noch wer ne Idee wo der Fehler in der XMLTV Datei sein könnte?

    Server: HP ProLiant MicroServer Gen8 G1610T (16GB Ram, DD Octopus Duo CI PCIe, 2x DD DuoFlex S2) @ OpenMediaVault + VDR Docker
    Client 1-3: Chromecast mit Google TV (Kodi - VNSI)

  • Das Plugin durchläuft alle <programme>und prüft, ob das Attribut channel="XXX"in der channelmap.conf konfiguriert wurde. Bei dir müsste es 'ARD.tvs' (im XML ist es aber ard.tvs) sein.

    Wenn ich meine channelmap.conf entsprechend anpasse, dann erhalte ich

    Code
    xmltv:ard.tvs:2 = C-1-1051-10301
    
    XML File 'ard.tvs-2025-05-31-' processed, updated 1 events

    Ich habe nur eines deiner Events in mein xml eingefügt.

  • Das Plugin durchläuft alle <programme>und prüft, ob das Attribut channel="XXX"in der channelmap.conf konfiguriert wurde. Bei dir müsste es 'ARD.tvs' (im XML ist es aber ard.tvs) sein.

    Wenn ich meine channelmap.conf entsprechend anpasse, dann erhalte ich

    Code
    xmltv:ard.tvs:2 = C-1-1051-10301
    
    XML File 'ard.tvs-2025-05-31-' processed, updated 1 events

    Ich habe nur eines deiner Events in mein xml eingefügt.

    Ich musste die epgd Tabellen "events" und "fileref" von allem was mit xmltv Plugin zu tun hat befreien und jetzt läuft es soweit :thumbup:

    Scheinbar wurde da der wechsel zwischen Groß- und Kleinschreibung ignoriert.


    Aktuell scheint es bei mir noch Unstimmigkeiten zu geben was die Zeitzone anbelangt. Da muss ich aber noch ein bissen rumprobieren.

    Server: HP ProLiant MicroServer Gen8 G1610T (16GB Ram, DD Octopus Duo CI PCIe, 2x DD DuoFlex S2) @ OpenMediaVault + VDR Docker
    Client 1-3: Chromecast mit Google TV (Kodi - VNSI)

  • Hallo lapicidae,

    ich habe Dein Script getestet. Super Arbeit!

    Konntest Du das Problem mit der Zeitzone schon lösen.?

    Aktuell trägt er bei mir die events mit Zeitzone UTC ein.

    Also das Event beginnt eigentlich um 14 Uhr (steht so in der xml Datei vom Scraper), dann wird es in der Tabelle events mit 12 Uhr eingetragen.

    Gruß

  • Hi mamomoz,

    danke für das Lob :)

    Es sind überarbeitete Versionen des tvs-scraper Skripts sowie, falls benötigt, des run-scraper Wrappers verfügbar. Hier sollte alles ausreichend erläutert sein.

    Für die Nutzung mit epgd-plugin-xmltv ist es allerdings äußerst sinnvoll, die xmltv.xsl im epgd config Verzeichnis durch meine zu ersetzen (optional auch noch die xmltv-category.xml).

    Evtl müssen die Tabellen "events" und "fileref" bereinigt werden, damit die neuen Daten dann auch passen (ich habe letztendlich die ganze epg2vdr Datenbank gelöscht)


    Aktuell lagert noch alles in meinem Repository des vdr-epg-daemon Docker Containers. Bei Bedarf kann ich auch ein eigenes Repository für den Scraper erstellen.

    Server: HP ProLiant MicroServer Gen8 G1610T (16GB Ram, DD Octopus Duo CI PCIe, 2x DD DuoFlex S2) @ OpenMediaVault + VDR Docker
    Client 1-3: Chromecast mit Google TV (Kodi - VNSI)

  • das problem ist hier noch existent. wie mamomoz schrieb, erfolgen die eintraege in utc.

    Das verstehe ich nicht ganz. Die Einträge werden von UTC nach Unix Epoch gewandelt und in der Datenbank gespeichert. Die Zeitstempel von VDR und dem Plugin sind identisch:

    Code
    select source, starttime, from_unixtime(starttime), title, shorttext 
    from events
    where channelid = 'C-1-1051-10301'
    and starttime = 1750356900;
    
    vdr,1750356900,2025-06-19 20:15:00,Der Bozen-Krimi: Mein ist die Rache,Spielfilm Deutschland 2024
    xmltv,1750356900,2025-06-19 20:15:00,Der Bozen-Krimi: Mein ist die Rache,

    Die Frage wäre, mit welcher Zeitzone die Datenbank arbeitet. Bei mir ist die System TZ z.B. Berlin/Europe (GMT+2).

    SQL
    SELECT @@global.time_zone, @@session.time_zone, @@system_time_zone;
    
    SYSTEM,SYSTEM,CEST

    Ich habe einmal den Fehler gemacht, die Zeitzone zu ändern, nachdem mariadb gestartet wurde und damit habe ich dann die Events Tabelle frittiert, da mariadb die TZ wohl nur einmal bei Start einliest und dann auf immer verwendet. Eingetragen als GMT+1, ausgelesen als GMT+2 und das ging nicht gut (mit der Umwandlung nach Unix Epoch wohlgemerkt).

  • die zeitzone der datenbank sieht bei mir genau so aus wie bei dir

    hab zwei beispiele herausgesucht, die nicht passen, beide auf zdf_neo:

    Code
    | vdr    | 1750696500 | 2025-06-23 18:35:00   | Duell der Gartenprofis    | NULL
    | xmltv  | 1750703700 | 2025-06-23 20:35:00   | Duell der Gartenprofis    | NULL
    timestamp in der xml-datei: 1750696500
    
    | vdr    | 1750699200 | 2025-06-23 19:20:00   | Bares für Rares           | Die Trödel mit
    | xmltv  | 1750706400 | 2025-06-23 21:20:00   | Bares für Rares           | NULL
    timestamp in der xml-datei: 1750699200


    bei beiden sendungen ist der timestamp richtig, der eintrag fuer xmltv
    mittels run-scraper in die datenbank allerdings ist +2 stunden spaeter

  • Hmm. Hast du die letzte Version des Plugins. Im letzten Commit musste ich tatsächlich etwas an der Zeitumwandlung/Berechnung ändern: bugfix: wrong calculation of starttime (mktime vs. timegm).

    Edit:
    Ich konnte die Datenbank bereinigen, indem ich epgd mit einer leeren (oder nur mit einem Eintrag) channelmap.conf gestartet hatte. Danach evt. auch noch useevents von den Einträgen mit source = 'xmltv' befreien: delete from useevents where cnt_source = 'xmltv. channelmap.conf wieder hergestellt und epgd neu gestartet. Die Scraper sind dann zwar wieder aktiv, aber zumindest alle Suchtimer und dergleichen blieben erhalten.

    Edited once, last by Zabrimus (June 20, 2025 at 9:07 AM).

  • Hmm. Hast du die letzte Version des Plugins. Im letzten Commit musste ich tatsächlich etwas an der Zeitumwandlung/Berechnung ändern: bugfix: wrong calculation of starttime (mktime vs. timegm).

    ja, hab den aktuellen git-master. nochmals komplett neu gebaut und die datenbank
    komplett ins nirvana geschickt und neu angelegt.

    das verhalten aendert sich aber nicht. immer noch zwei stunden hinterher.
    werd mal versuchen, die zeitzone fuer den tvs-scraper zu aendern

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!