[epgd, epg2vdr] VDR-EPG mittels eventsview.sql "bearbeiten"

  • Folgendes "Problem":

    Bei Sendern, wo es keine ID bei TVSP oder TVM gibt, möchte ich aus dem DVB-EPG die Staffel und Episodennummer extrahieren und in das EPG einfügen.


    Ich weiß aber nicht wie ich das bewerkstelligen kann. Es müsste doch über eine angepasste eventsview.sql gehen?


    Bei dem entsprechenden EPG wären die Informationen am Anfang der Beschreibung:

    Code
    2. Staffel, Folge 7: Die Beschreibung der jeweiligen Folge...

    Meine eventsview: https://www.dropbox.com/s/kcfj…tt/eventsview-MV.sql?dl=0

    Und die plain: https://www.dropbox.com/s/u2sq…/eventsviewplain.sql?dl=0

  • Das müsste doch mit

    REGEXP_SUBSTR() machbar sein?

    https://dev.mysql.com/doc/refm…ml#function_regexp-substr

  • Bin nicht am VDR und kann das nich testen. Mit online Syntax-Checker getestet:


    Code
    case when epi_season is Null then 
          case when cnt_longdescription is Null then '' else 
            case when locate('. Staffel, Folge', cnt_longdescription) = 0 then '' else 
              concat('|', 'Staffel: ', substr_index(cnt_longdescription, '.', 1)) end end
        else 
          concat('|', 'Staffel: ', cast(epi_season as char)) end,

    Das müsste doch funktionieren? Kann da ein Experte mal schauen?

  • Scheint nicht zu funktionieren. Da kommt ne Fehlermeldung,

    Code
    Apr 20 11:38:54 vdr01 epgd[478]: SQL-Error in 'CREATE VIEW eventsview as select cnt_useid useid, ...    case when epi_season is Null then$      case when cnt_longdescription is Null then '' else$        case when locate('. Staffel, Folge', cnt_longdescription) = 0 then '' else$          concat('|', 'Staffel: ', substr_index(cnt_longdescription, '.', 1)) end end$    else$      concat('|', 'Staffel: ', cast(epi_season as char)) end,$    case when epi_part is Null then '' else concat('|','Episode: ',cast(epi_part as char)) end,$    case when epi_parts is Null then '' else concat('|','Staffelfolgen: ',cast(epi_parts as char)) end,$    case when epi_number is Null then '' else concat('|','Folge: ',cast(epi_number as char)) end,$    case when cnt_source <> sub_source then concat('||','EPG: ',upper(replace(cnt_source,'vdr','dvb')),'/',upper(sub_source)) else concat('||','EPG: ',upper(replace(cnt_source,'vdr','dvb'))) end$  )$)$,'|', '$') as description$from$ useevents;$' - FUNCTION epg2vdr.substr_index does not exist (1305)

    Kann man das alles auch irgendwie vorab testen?


    Edit: Dummer Fehler; muss SUBSTRING_INDEX() sein...

  • Das mit der Staffel funktioniert jetzt schon mal. Musste den Kanal noch in die channelmap.conf aufnehmen mit vdr:000

    Code
    Brooklyn Nine-Nine
    Wir sind "zinkenlos"
    
    
    4. Staffel, Folge 22: Teil 2 der Doppelfolge: Jake und Rosa setzen mit Hawkins die Ermittlungen zu einem Bankraub fort. Bald glauben sie, dass Hawkins etwas verheimlicht. Boyle mag den neuen Freund von Gina nicht.
    USA 2016. 21 Min. Von Daniel J. Goor, mit Andy Samberg, André Braugher, Terry Crews.
    
    Staffel: 4
    
    EPG: DVB
  • So, habe es hin bekommen. Sieht jetzt so aus, bei Kanälen, die keine EPGID haben:

  • Hier meine eventsview-MV.sql
    https://www.dropbox.com/s/kcfj…tt/eventsview-MV.sql?dl=0


    Dei originalen Zeilen habe ich als Kommentar zum Vergleich drin gelassen

  • nutzt dir aber natürlich nur was in Verbindung mit epgsearch, ich überleg grad wie man das generischer machen könnte.


    Geh ich recht in der Annahme, dass es sich um die vdr:000 Einträge handelt?

    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



  • ja, 000 und wenn es keine epg id gibt... Habe jetzt festgestellt, dass die Serien Infos auch ohne epg id gefunden werden

  • Muss den Thread noch mal aufwärmen.


    Ich möchte das Feld Kurzname nur anzeigen lassen, wenn es sich vom Feld Serie unterscheidet.

    Mein Versuch das zu bewerkstelligen ist leider nicht gelungen. Keine EPG-Daten mit meiner Änderung. Hier ein Auszug der entsprechenden Stelle:

    Code
        case when epi_episodename is Null then '' else concat('||Serie: ', epi_episodename) end,
    
        case when epi_shortname is Null then '' else concat('|Kurzname: ', epi_shortname) end,
        /* case when epi_shortname is Null then ''
          else
            case when epi_shortname <> epi_episodename then concat('|Kurzname: ', epi_shortname)
            else
              '' end end, */

    Meine Änderung ist auskommentiert. Die Zeile davor zeigt das Feld Kurzname an


    Mit dem SQL stehe ich auf Kriegsfuß. Habe einen Online Syntax Checker verwendet. Geht trotzdem nicht. Vielleicht hat jemand der Experten hier noch eine Idee?

  • Ich bin auch alles andere als mit dieser Syntax vertraut, aber was auffällt, ist, dass nicht alle "cases" auf gleicher Ebene mit "end" geschlossen sind, oder?
    Also die zwei "end end" schauen einfach komisch aus.
    Viel Erfolg!

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    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

  • Müsste eigentlich gehen weiter unten hab ich das und es klappt:

    Code
        /*case when epi_season is Null then '' else concat('|Staffel: ', cast(epi_season as char)) end,*/
        case when epi_season is Null then
          case when cnt_longdescription is Null then '' 
          else
            case when locate('. Staffel, Folge', cnt_longdescription) = 0 then '' 
            else
              concat('||Staffel: ', substring_index(cnt_longdescription, '.', 1)) end end
        else
          concat('|Staffel: ', cast(epi_season as char)) end,

    Ist blöd zu formatieren

  • Hab es mal durch eine Online Formatiere geschickt:

  • Ok schaut jetzt gut aus. Sorry für die falsche Fährte!

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    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

  • Hänge mich noch mal an den Thread dran. Ich möchte nun die Infos zur Staffel und Episode auch aus dem Kurztext holen, wenn vorhanden und der Kanal keine Id hat


    Beispiel:


    Ich würde gerne hier ersetzen, da die S*y Kanäle ja schon lange kein Thema mehr sind

  • Mit dem Syntax checker bekomme ich Fehler:

    Edit: Noch eine Frage: Gibt es auch ein cnt_shorttext oder ist sub_shorttext gleich cnt_shorttext bei vom VDR verwalteten ID (vdr:000)?

  • Hier mal meine eventsview. Vielleicht hilft Dir das weiter.


    Ich nutze übrigens auch Tiles im Namen mit "Serienname~Staffel_xx~Exx-Folge" um bei der Aufnahme gleich die Folgen nach Staffel/Episode abzulegen.

  • Danke,aber das entspricht in etwa dem, was ich aktuell schon habe. Gerade die Erkennung von Staffel und Episode... Ich will die umstellen wie oben beschrieben.


    Wie kann ich das Testen,ohne am VDR alles zu zerschießen?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!