EPG Umlaute falsch nur bei HGTV ....

  • Wird bei mir eh auch angezeigt im syslog, ich muss nur richtig suchen :wand

    Apr 16 21:56:51 localhost vdr: [2028] override character table is '"ISO-8859-15"'


    Scheinbar ist es egal, ob mit oder ohne ersten Bindestrich oder Hochkomma. Klappt immer. Jedenfalls werden seitdem Umlaute und ß richtig dargestellt.

    Danke an alle!

    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

  • VDR verwendet die "iconv" Biblothek zur Konvertierung zwischen verschiedenen chartypes, überprüft die Schreibweise aber nicht selbst. "iconv" kommt mit den verschiedensten Varianten zurecht. Lt. iconv -l kann z.B.ISO-8859-15, ISO_8859-15, ISO8859-15 oder auch ISO885915 angegeben werden.

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Mir ist aufgefallen, dass auf einigen Transpondern die lange Beschreibung nicht richtig dagestellt wird. Der Grund ist, dass Texte die länger als 256 Byte sind auf mehrere ExtendedEventDescriptors aufgeteilt werden müssen. Manche Provider geben die CharacerTable aber nur im Text des ersten Descriptors bekannt, die weiteren Textteile werden dann fälschlicherweise mit der Default- oder Override Table decodiert.

    Ich habe dazu einen Patch, der beim Langtext sicherstellt, dass immer das Charset des 1. Descriptors als Default verwendet wird. Sozusagen ein Over-Override.

    Hier die lange Beschreibung des Senders "Bibel TV" auf 19.2E 12552Mhz ohne und mit Patch:

    Code
    vdr[2702]: [2906] ---- decode[        UTF-8] Bibel TV das Gespräch
    vdr[2702]: [2906] ---- decode[        UTF-8] Die Familien der Verschwörer
    
    --- Langtext ohne Patch
    vdr[2702]: [2906] ---- decode[        UTF-8] 20. Juli 1944. In Paris läuft der Umsturz nach Plan, doch mit dem Scheitern in ...
    vdr[2702]: [2906] ---- decode[  ISO-8859-15] rau Lotte und die beiden Àltesten Kinder ab - Sippenhaft in GefÀngnissen und ...
    
    --- Langtext mit Patch
    vdr[9380]: [9401] ---- decode[        UTF-8] 20. Juli 1944. In Paris läuft der Umsturz nach Plan, doch mit dem Scheitern in ...
    vdr[9380]: [9401] ---- decode[*       UTF-8] rau Lotte und die beiden ältesten Kinder ab - Sippenhaft in Gefängnissen und ...

    oder beim Sender "Cherie 25"

    Zusätzlich noch ein Patch der die "override character table" auf Gültigkeit prüft und anzeigt.

    Code
    Apr 20 20:29:47 gentoo64vdr vdr[13625]: [13625] codeset is 'ISO-8859-15' - known
    Apr 20 20:29:47 gentoo64vdr vdr[13625]: [13625] override character table is 'ISO-8859-15' - known

    Die beide Patches sind leider nicht ganz zu trennen und müssen daher gemeinsam verwendet werden.

    Helmut

  • Ich muss mich nochmal melden:

    Nach einem Update (via Ansible-Install-Skript) ist der override wieder verschwunden:

    In der erzeugten Datei /etc/vdr/conf.d/02-vdr-charset-override.conf steht außer dem Header nichts drin.


    Obwohl in der host_vars/localhost der Override einkommentiert ist.

    Ich hab jetzt manuell in der erzeugten Datei den Override eingetragen und schaue nach Reboot, obs wieder geht.


    Eigentlich hätte doch beim Installieren/Update in die Datei geschrieben werden müssen???
    Bzw. hätten meine manuell eingetragenen Zeilen doch gar nicht gelöscht werden???

    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

  • Obwohl in der host_vars/localhost der Override einkommentiert ist.

    Kannst du mal bitte zeigen, wie die Datei aussieht?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Kannst du mal bitte zeigen, wie die Datei aussieht?

    localhost.txt

    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

  • Ah, man kann bei neueren Ansible-Versionen nicht mehr mit einem bool Filter testen, ob ein String leer ist, sondern muss sich die Länge ansehen... Ich habe es gerade im Git gefixt: https://github.com/yavdr/yavdr…8f53693a1662b07a7e2a78b7d

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Danke, Alexander, für den schnellen Fix!

    Werde ich nahher ausprobieren.


    Was aber jetzt schon auffällt: die Zieldatei ist (bei mir) nicht leer, sondern es steht der Ansible-Header drin (und mittlerweile auch die von mir manuell hinzugefügten Zeilen für den Override).

    Funktioniert die Prüfung default("") | length > 0 dann überhaupt so, wie erwartet?

    Oder wird der Header dabei ignoriert?

    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

  • Was aber jetzt schon auffällt: die Zieldatei ist (bei mir) nicht leer, sondern es steht der Ansible-Header drin (und mittlerweile auch die von mir manuell hinzugefügten Zeilen für den Override).

    Leer sollte die Datei nie, sein, das Template https://github.com/yavdr/yavdr…-charset-override.conf.j2 wird immer expandiert (https://github.com/yavdr/yavdr…es/vdr/tasks/main.yml#L28 ff.).


    Wenn vdr.override_vdr_charset eine Länge größer null hat, werden zusätzlich die beiden Zeilen geschrieben, die der VDR beim Starten auswertet.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • :wand Ich Esel! Du fragst damit natürlich auf die Länge des Wertes in der localhost ab, nicht auf den Inhalt der Datei.

    Mein Fehler, sorry!

    Vielen Dank - wieder einmal - für die ultraschnelle Reaktion!

    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

  • kls : unbedingt notwendig ist das natürlich nicht.

    Es war nur kurz unklar, welche Schreibweise gültig ist. Und da 'convertCharacterTable'in si.c keine Fehlermeldung bei unbekannter Charactertable ausgibt, wäre vielleicht eine Überprüfung auf Sinnhaftigkeit des Override-Charsets - so wie es auch bei 'SetSystemCharacterTable' geschieht - als Feedback für den Benutzer hilfreich.

    (iconv kennt allerdings viel mehr Charsets als im DVB-Standard definiert sind, der Patch prüft aber nicht alles Machbare).

    LG Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • So wie's aussieht ist alles noch viel schlimmer!

    Auf diesem Transponder wird nicht nur die Kennung für die Character Table nur beim ersten ExtendedEventDescriptor gechickt, sie "schneiden" auch mitten durch UTF-8 Character!

    Beispiel:

    Code
    C S19.2E-1-1108-12122 Bibel TV
    E 57911 1589643840 2760 51 B
    T @Avonlea - Das Mädchen aus der Stadt
    S @Hummer am laufenden Band
    D &@In diesem Sommer läuft in Avonlea einiges anders als gewohnt: Hetty kommt das Gerücht zu Ohren, dass die alte Konservenfabrik in eine Destillerie umgewandelt werden soll. Das kann Hetty natürlich nicht zulassen. Kurzerhand kauft sie die Fabrik. &Doch die ist in einem desolaten Zustand. Gut, dass Jasper einige Ideen zur Automatisierung und Olivia zum Warenverkauf hat. Aber leider geht auch dieses Unternehmen nicht ohne Schwierigkeiten ab. Wird es Olivia und Jasper gelingen, mit der Fabrik fÃ&¼r ein regelmäÃ~_iges Einkommen zu sorgen?
    G 10
    e

    Zum Testen habe ich vor jedem ExtendedEventDescriptor ein '&' eingefügt und die Kennungen für die Character Table nicht übersprungen, sondern mit '@' überschrieben. Auch habe ich das Konvertieren der Strings abgeklemmt, damit die originalen Daten durchkommen. An der Stelle "fÃ&¼r" sieht man, dass die Trennung zwischen den Descriptoren genau mitten durch einen UTF-8 Character geht.


    HelmutB Wenn du mit deinem Patch diesen EPG-Eintrag auf einem UTF-8-System anschaust, dann müsste an dieser Stelle irgendwo ein Fragezeichen auftauchen, etwa "fÃ?r. Kannst du das bestätigen?


    Bevor wir da jetzt weitermachen stellen sich einige Fragen:

    - Kann das "Durchschneiden" von multi-byte Charactern auch bei Sendern auftreten, die für jeden ExtendedEventDescriptor eine Zeichensatz-Kennung schicken?

    - Ist es überhaupt zulässig, multi-byte Character über ExtendedEventDescriptor-Grenzen hinweg zu durchtrennen?

    - Ist es zulässig, die Zeichensatz-Kennung nur im ersten ExtendedEventDescriptor zu schicken?

    Ich weiß schon, warum ich UTF-8 nicht mag... ;)

  • Ich werde es mir diesen EPG Eintrag am Abend ansehen - es wird ziemlich sicher so zu finden sein.


    Als Lösung könnte/müsste man alle Textblöcke ohne CharSet zu dem ersten Block mit CharSet in einem Buffer zusammenführen. Falls irgendwann wieder ein Block mit CharSet auftaucht, kann der bisherige Bufferinhalt konvertiert werden und das Zwischenbuffern würde von vorne beginnen.

    Falls das Durchtrennen auch bei einer CharSet Angabe geschieht muß man wahrscheinlich damit leben (der VDR ist ja keine Texterkennungssoftware)


    Lg Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Ungefähr so hab ich mir das auch gedacht und arbeite gerade an einer entsprechenden Änderung.

    Ich glaube, es sollte OK sein, wenn man von allen Blöcken nach dem ersten eine eventuelle Kennung entfernt, alle Blöcke zusammenfügt und dann konvertiert. Dass sich der Code mittendrin ändert dürfte sehr unwahrscheinlich sein.

  • Das ist kein bißchen unwahrscheinlich.


    Die Code Tabelle darf bei DVB von Zeichen zu Zeichen wechseln. Wenn z.B. mal eben ein Zeichen benutzt werden soll, welches in der aktuell selektierten Tabelle nicht enthalten ist, darf beliebig oft in einem Text gewechselt werden.

  • Noch mit meinem Patch hier einmal das EPG von "Bibel TV" auf 12552V mit "?".

    Bei "Bibel TV HD" auf 11243H wird es richtig dargestellt, ich habe aber jetzt kein Debug-Log davon:


    Kann die CharSet-Angabe auch mitten in einem ExtendedEventDescriptor kommen?

    Da war eher der Extremfall gemeint - durchschneiden eines multi-byte character und zusätzlich die Charset-Angabe am Beginn eines Text-Blocks. So nach dem Motto: wenn schon falsch, dann aber richtig.

    Deinen Patch muß ich erst einspielen.

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Dein Patch ist noch nicht ganz perfekt :). Sieht nach Bufferüberlauf aus beim lesen und sammeln der EPG Info aus:

    Code
    May 13 00:11:01 gentoo64vdr kernel: device 2 sectio[16442]: segfault at 0 ip 00007f3d0cdc5816 sp 00007f3d09c20298 error 4 in libc-2.28.so[7f3d0cd25000+1c3000]
    May 13 00:11:01 gentoo64vdr kernel: Code: 0f 1f 40 00 66 0f ef c0 66 0f ef c9 66 0f ef d2 66 0f ef db 48 89 f8 48 89 f9 48 81 e1 ff 0f 00 00 48 81 f9 cf 0f 00 00 77 6a <f3> 0f 6f 20 66 0f 74 e0 66 0f d7 d4 85 d2 74 04 0f bc c2 c3 48 83
    May 13 00:11:01 gentoo64vdr lircd-0.10.1[2361]: Info: removed client
    May 13 00:11:01 gentoo64vdr vdrwatchdog[16524]: restarting VDR

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

Jetzt mitmachen!

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