tvmovie2vdr mit UTF-8

  • Hi,


    das Problem bei einem UTF-8-System ist bei tvmovie2vdr ja, dass die Umlaute kaputt sind.
    Das Problem ist, dass die XML-Dateien als iso8859-1 geliefert werden.
    Als Hotfix habe ich nun einen recode-Aufruf in das Script eingebaut der von iso8859-1 nach utf8 umwandelt (recode iso8859-1..utf-8 dateiname).



    ACHTUNG:
    Dieses ist ein Hotfix und eine echt unschöne Lösung, aber bei mir geht sie :)
    Wichtig ist auch noch, dass der recodebefehl, wenn er 2mal auf die Datei ausgeführt wird, Probleme macht. Also vorher das downloadverzeichnis aufräumen.
    Der Eintrag ist bisher nur im tvmovie drin, also ggf. auch in andere einsetzen wenn gewünscht.

  • Hat erstmal funktioniert,
    aber, das über ein externes Programm die Texte konvertiert werden, hat mich ein wenig gestört, also hab ich mich kurz mal an eine Integrierte Perl Lösung gemacht:


    bei Zeile 20 folgendes einfügen

    Code
    use Encode;


    und ab Zeile 208 den Code so ändern

  • Ist nicht auf meinem Mist gewachsen, aber nach einem Thread hier um Forum, habe ich das Use Encode in die erste Zeile von tvmoviefetch gepackt, dann nach der Zeile 169 (die ursprüngliche Zeile 167, +2 wegen dem Use Encode und einer Leerzeile):


    Code
    my $tmpwertung=$wertung=$flags=$kurztext=$darsteller=$regie=$tmpdata= "";
                    my $summary=$audio=$format=$rate=$infotext=$type="";
                    my $imagecounter=0;
    
    
    =>              Encode::from_to($event, "iso-8859-1", "utf8");
    
    
                    $event_id = $1%65536            if $event =~ m|<SendungID>(.*?)</SendungID>|;


    Läuft bei mir problemlos.

  • Hallo,
    gibts auch eine Loesung fuer die tvinfofetch wegen der Umlaute im epg ?
    Gerade getestet mit premiere.start


    mfg

  • Quote

    Original von Ramirez
    Ist nicht auf meinem Mist gewachsen, aber nach einem Thread hier um Forum, habe ich das Use Encode in die erste Zeile von tvmoviefetch gepackt, dann nach der Zeile 169 (die ursprüngliche Zeile 167, +2 wegen dem Use Encode und einer Leerzeile):


    Code
    my $tmpwertung=$wertung=$flags=$kurztext=$darsteller=$regie=$tmpdata= "";
                    my $summary=$audio=$format=$rate=$infotext=$type="";
                    my $imagecounter=0;
    
    
    =>              Encode::from_to($event, "iso-8859-1", "utf8");
    
    
                    $event_id = $1%65536            if $event =~ m|<SendungID>(.*?)</SendungID>|;


    Läuft bei mir problemlos.


    Funktioniert bei mir auch. Doch seit dem krieg ich bei enigmang keine epgimages
    mehr angezeigt. Der Bilderordner ist aber voll. Ob das an der Zeichenkodierung
    liegen kann, weiss ich noch nich.

  • Moin, Moin


    bin kein Programmierer habe sicher beim Patchen einen Fehler gemacht.


    1. Habe mir tvmovie2vdr-0.5.14 runtergeladen und entpackt
    2. In das Verzeichnis ~/tvmovie2vdr-0.5.14/inc gewechselt und den Patch als utf8.diff gespeichert.


    3. Ein patch < utf8.diff ergabe ein


    Code
    patching file tvmoviefetch
    Hunk #1 FAILED at 338.
    1 out of 1 hunk FAILED -- saving rejects to file tvmoviefetch.rej


    Quote


    Hat erstmal funktioniert,
    aber, das über ein externes Programm die Texte konvertiert werden, hat mich ein wenig gestört, also hab ich mich kurz mal an eine Integrierte Perl Lösung gemacht:


    Externes Programm bezieht sich das nur auf TK/TCL???



    Viele Grüße Frank

  • Quote


    Funktioniert bei mir auch. Doch seit dem krieg ich bei enigmang keine epgimages
    mehr angezeigt. Der Bilderordner ist aber voll. Ob das an der Zeichenkodierung
    liegen kann, weiss ich noch nich.


    Hallo,


    nutze hier tvmovie2vdr aus dem e-tobi-repository (also 0.5.14). Verwende debian lenny (d.h. perl 5.10.0). Vdr läuft wie das ganze System auf utf-8.
    Ich habe den Patch genauso eingebaut (Encode::from_to($event, "iso-8859-1", "utf8");) und er funktioniert manchmal, meistens aber nicht.
    Ich kann das weder an bestimmten Sendern oder Umlauten noch an irgendwas anderem festmachen.
    Beispiel :
    ZDF Sonntag 15.6.2008 :
    14:05 Bürger, rettet Eure Städte ! -> alle Umlaute kaputt
    20:45 Türkei-Tschechien -> Umlaut heil
    Die Detailbeschreibungen sind übrigens in beiden Fällen kaputt.
    So ist das überall (geschätzt 10-20% heil, der Rest kaputt).


    Kann das irgendjemand bestätigen bzw. nachvollziehen ?
    Welche Info braucht es noch ? (In den Logs kann ich nichts Böses feststellen.)


    Tschuess..
    Michael

  • Ja hab mit dem Encode::from_to($event, "iso-8859-1", "utf8") das gleiche Problem.
    Hab mir ne andere Lösung gebastelt, die das recode von Torsten/WarEagle und das Encode::from_to verwendet. Ist aber noch nicht perfekt gibt noch immer falsche Umlaute.

  • Moin allerseits,


    ich habe an dem Problem letzte Nacht auch mal ein wenig rumgeforscht.


    Und zwar hatte ich das Problem, dass die Description Ordnung war, aber im Title und im Subtitle immer Kästchen statt Umlauten oder SZ zu sehn waren.


    Irgendwie scheint es so zu sein, dass die Title-Daten doppelt codiert sind bzw in den Quelldaten irgendwas mit der codierung nicht ganz korrekt zu sein scheint, denn wenn man sie doppelt nach utf8 umwandelt (encode("utf8", $data);) dann klappt es mit den *meisten* Daten. Vereinzelte Umlaute sind dann keine Kästechen mehr, sonder sehen so aus als wenn man UTF8 Daten mit einem latin1-Locale anschaut (oder wars umgekehrt? ;))


    Also entweder ist da irgendwo ein Bug im Perlcode, der nur speziell den $title/$subtitle betrifft - hab da aber nix gefunden wo das anders behandelt wird als die anderen Daten - oder es muss wirklich noch ein check irgendwo eingebaut werden, der die Daten aus den XML-Files reparieren kann.


    Mein "fix" sieht jetzt z.Z so aus, dass ich also den $title und $subtitle doppelt encode und die $description einfach.


    Da dies aber m.E. nach kein 100% richtiger Fix sein kann, will ich mir jetzt auch grad nicht die Mühe machen und einen vernünfigen Patch dafür bauen (was bedeutet dass ich auch meine ganzen Test-prints etc rauskicken und aufräumen muss... ;))


    Deshalb nur kurze Beschreibung, was ich jetzt, wo geändert hab sodass die EPG Daten ertragbar sind:


    Datei "/usr/bin/tvm2vdr"
    Dort nach den 6 Zeilen WriteEPG() suchen und oben drüber die codierung der Daten einbauen. Das sieht dann, wenns fertig ist in etwa so aus:



    Wollte den zwischen stanbd nur mal hier abladen, vielleicht kommt damit ja jemand anders wieder ein Stück weiter...

  • Hallo,


    Ich habe das Ganze jetzt noch mal genauer untersucht, und herausgefunden, dass die
    Umlaute in den download-Dateien heil sind, wenn ich den Patch von Torsten/Warhammer
    verwende. Danach gehen sie aber irgendwo wieder kaputt !


    Ich konnte den Effekt dann auf die Methode makeEPGevent in der Datei helperfunc
    eingegrenzen und durch Ändern von Zeilen wie
    - my $title = pack "U0C*", unpack "C*", shift; -
    in
    - my $title = shift; -
    (und analog alle anderen Parameter) erfolgreich korrigieren.
    Jedenfalls sind jetzt alle Umlaute heil :)


    Ich kenne mich aber nicht genug in perl aus, um beurteilen zu können, was mit
    pack/unpack eigentlich genau bezweckt wurde und somit auch, ob sich evtl.
    negative Seiteneffekte durch meine Änderungen ergeben könnten.


    Ein Vergleichssystem mit Debian etch statt lenny und somit perl 5.8 statt 5.10
    zeigt dieses Verhalten nicht (gleiche Version vdr und tvmovie2vdr, ebenfalls System
    und vdr auf utf-8 eingestellt). Dort funktioniert der Patch auch ohne meine
    Anpassungen.


    Nochmal mangelndes Wissen meinerseits : Ob das Problem debianspezifisch ist oder
    generell perl 5.10 betrifft, weiss ich nicht !


    Randbermerkungen :


    Wenn man cron-gesteuert das Skript aufruft, sollte man unbedingt auch crongesteuert
    den Ordner downloadfiles komplett leeren, da ein erneutes Anwenden von recode die
    Daten zerstört.


    Der Recode-Patch verträgt sich m.E. nicht mit der Option $useupdate, da die Dateien
    im Ordner downloadupdatefiles nicht recodet werden und deshalb defekt bleiben.
    Das ergibt dann in der Folge schwer reproduzierbare Effekte.


    Tschuess..
    Michael

  • Hallo,


    was das pack / unpack genau machen soll, hab ich mich auch schon gefragt. Und es einfach mal rauszunehmen war ne sehr gute Idee, ALT255!


    Ich habe jetzt diese pack/unpack Klamotten auch mal komplett entfernt, die Dateien selbst nach UTF8 konvertiert und einen recode Aufruf für $event eingebaut.


    Klappt bei mir auf Debian etch mit e-tobi Paketen (1.6.0) und vdr-addon-tvmovie2vdr 0.5.14-1 jetzt perfekt!


    Gruß
    -Marc

  • bei mir geht es nur wenn ich diese zeile:
    $event = encode("UTF8", $event);
    aus tvmoviefetch auskommentiere!


    ich würde es begrüßen wenn tvmovie2vdr, direkt in den vdr wandert - vorteil: schneller, keine svdrp probleme.


    danke, gruss, onur

  • Hallo ALT255,


    ok dann danke an panik105, hab mich da wohl vertan ;)


    Die XML Files *dürfen* nicht vorher konvertiert werden sonst ist das konvertieren doppelt und man hat wieder Müll statt Umlauten. Also wirklich nur diese drei Diff's auf die Original Dateien anwenden und sonst *nichts* ändern bzw anderes einbauen.


    Gruß
    -mschiff

  • Mit den 3 Patches von mschiff sehen die "normalen" Sonderzeichen (äöüß) gut in Titel, Episode und Description gut aus.


    Allerdings geht dies Sache beim Apostroph (' über #, kein Accent-irgendwas) zumindest bei Pro7 schief (eg. Grey's Anaotmy, What's up Dad), dort wird aus dem Apostroph im VDR die Zeichenfolge "â(Pfeil gegen den Urzeigersinn)(Kästchen)", während bei RTL "Doctor's Diary" richtig angezeigt wird.

    VDR-User #992
    Server: Asrock N3700-ITX mit Cine S2 6.5 headless
    System: Ubuntu 22.04.LTS
    VDR: VDR 2.2.0 mit epgsearch, live, vnsiserver
    Client: Raspberry Pi v4 mit LibreElec

    Edited once, last by Sledge Hammer ().

  • hm, seltsam. Bei mir sehen auch diese Sendungen sauber aus. Hast du evtl an einer anderen Stelle noch einen "alten" Hack vergessen zu entfernen oder so etwas?


    Komisch daran ist, dass doch das apostroph garkein sonderzeichen ist. Zumindest das normale ' ist ascii 0x27 (bzw ascii 39 (dec) oder 047 (oct))


    Was an an meinen patches noch fehlt, ist eien Abfrage, ob das System überhaupt auf UTF-8 läuft und das recode wegzulassen wenn dies nicht der Fall ist, dann könnten die patches auch upstream aufgenommen werden.


    Sledge Hammer: Aber das wird nicht dein Problem sein , denke ich.

Participate now!

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