edEIT - EIT Editor

  • > Kennst Du edEITcli?


    Jetzt schon :smiling_face: - Danke für den Hinweis.
    Ich mag zwar JSON nicht besonders und es ist nicht mit Bordmitteln unter VBSCRIPT zu parsen (was bei XML der Fall ist),
    aber das bekomme ich irgendwie hin.

    DM 920 uHD, 4.3.1.r25-2018-02-10 Experimental, 1x DVB-S2 FBC Tuner

  • Müsste auch ohne Erweiterungen gehen, siehe hier.


    Ansonsten ist auch dieses hier evtl. interessant für dich.


    Falls du für edEITcli zusätzliche Infos aus der .eit brauchst, wäre ich nicht abgeneigt zu helfen. Bitte aber dazu alles Weitere im anderen Thread.

    Grüße
    ...jp

  • Hallo Juanito,


    ich habe gerade meine ganzen .TRP Daten von einem Vantage 8000s auf eine Vu+Duo² ins TS-Format konvertiert und umgezogen, dort werden sie auch einwandfrei wiedergegeben, jedoch ohne die Programminfo.
    Es handelt sich um ca 850 aufegzeichnete Filme wovon ich gerne die Programminfos übertragen sprich in EIT.Daten konvertieren möchte, dies jedoch nicht manuell mit copy und paste, sondern via Programm, wozu haben wir denn Computer.


    Die Daten aus meiner Vantage habe ich in einer MS-Access.mdb abgelegt, bin auch ganz gut darin mit VBA die EIT Daten zu erzeugen, blos habe ich bisher nichts gefunden wie die EIT-Datein genau aufgebaut sind.


    Und jetzt die Frage an dich: nach dem du ja den edEIT geschrieben hast, könntest du mir bitte den Aufbau der EIT-Dateien zukommen lassen?


    Danke im voraus
    Joergl

  • Die Daten aus meiner Vantage habe ich in einer MS-Access.mdb abgelegt, bin auch ganz gut darin mit VBA die EIT Daten zu erzeugen, blos habe ich bisher nichts gefunden wie die EIT-Datein genau aufgebaut sind.



    Und jetzt die Frage an dich: nach dem du ja den edEIT geschrieben hast, könntest du mir bitte den Aufbau der EIT-Dateien zukommen lassen?

    Hallo Joergl,


    Mit VBA kann ich nicht dienen, und mit schreiben von EIT Dateien auch nicht. Aber ich hab im April mir einen eigenen parser geschrieben um EIT Dateien zumindest auszulesen. Ist zwar C++ und Qt, aber vielleicht hilft es Dir zusammen mit der Dokumentation Deine EIT Dateien mit VBA zu erstellen. Ich hab das ganze mal hier online gestellt: parseEIT
    (Rückfragen eventuell auch besser nur dort, das wäre hier etwas Offtopic, hier geht es um edEIT)


    Viel Erfolg und willkommen in der Welt von Enigma2.

  • Hallo Juanito,


    erst einmal vielen Dank für dieses tolle Programm. Nutze es schon seit geraumer Zeit und bin sehr zufrieden.


    Vor einigen Monaten fiel mir dann aber auf, dass die Sendungsdaten "Datum" und "Uhrzeit" aus der .eit und der ts.meta nicht mehr verarbeitet werden. Ich habe eine DM7080 mit aktuellem Newnigma2-Image. Da wird sich wahrscheinlich irgendwann irgend etwas geändert haben. Mich stört es deshalb, weil ich seit Jahren Aufnahmen mit dem TS-Doctor geschnitten und unter neuem Dateinamen (ohne Datums- und Uhrzeitangabe) gespeichert habe. Lässt sich da was in edEIT machen?


    Gruß Dietmar

  • Hi,


    Ich glaube nicht, dass dieses Problem etwas mit edEIT zu tun hat.
    Das Format, wie Datum und Zeit in den .eit und in den .ts.metas gespeichert werden, ist fest vorgegeben.


    Für mich klingt das eher danach, dass bei deiner Box etwas nicht mehr stimmt.


    Hast Du mal bei Newnigma2 nachgefragt, ob andere das Problem auch haben?
    Gibt es irgendwas, womit man das Problem eingrenzen kann?
    Tritt es auch mit .eit/.ts.metas auf, wenn Du die Dateien nicht umbenennst?


    Mach doch mal ein Vollbackup von deiner Installation und teste mit einem sauberen DreamOS Image ohne weitere Plugins gegen.


    Ansonsten kann ich dir nur anbieten, dass du hier .eit/.ts.metas hinterlegst, die bei dir Probleme machen.
    Die kann ich mir gerne anschauen, ob sie ok (=standard-konform) sind. Wenn aber edEIT die Dateien ohne Murren öffnet, dann kannst Du davon ausgehen, dass sie OK sind.

    Grüße
    ...jp

  • EMC deinstalliert - Problem behoben
    EMC neu installiert - Problem wieder da
    Lesen aus .ts.meta in EMC abgeschaltet - Problem behoben


    Gruß Dietmar

  • Erstmal ein großes DANKESCHÖN für dieses wundervolle Programm.
    Hatte bis jetzt EITitor verwendet, aber wenn ich den als Standard (unter Windows 7) nehme, zeigt er mir beim Öffnen nach Anklicken im Windows-Explorer keine Daten an. Ausserdem wenn ich eine eit händisch über EITitor öffne, komme viele Sonderzeichen.
    Das alles funktioniert wunderbar mit Deinem Programm, danke, danke, danke :grinning_squinting_face:


    Nachdem EITitor nicht funktionierte, habe ich versucht, in Visual Basic 6 eine eit auszulesen, weil ich einfach nur Titel, Episode und Beschreibung sehen wollte.
    Leider bin ich kläglich gescheitert. Was aber relativ egal ist, denn Dein Programm macht eh alles, was ich haben will.
    Trotzdem, rein interessenshalber:
    Wie liest Du die einzelnen Sachen (Titel, Genre, Beschreibung) aus?
    Mir ist schon klar, dass Du jede Menge Zeit dafür investiert hast, aber könntest Du mir diesen einen Code-Schnipsel (nur das Auslesen der 3 Sachen) zukommen lassen? Weil mich hat ein wenig der Ehrgeiz gepackt :winking_face:
    Kann es verstehen, wenn Du das nicht möchtest, aber Du würdest mir eine große Freude bereiten, wenn Du mir das per Email zukommen liesest.

  • Hi,


    ein paar Codezeilen reichen leider nicht. Um alles auszulesen braucht es schon eine ganze Menge Code. Die .eits haben ein (nennen wir es mal) eigenwilliges Format, das noch aus der Zeit stammt, als man sehr sparsam mit Speicher umgegangen ist.
    Je nachdem, welche Infos du haben möchtest, musst du unterschiedliche (sog.) descriptors (Infoblöcke; jeweils max. 256 Byte lang) einlesen. Im Aufbau sind die alle ähnlich, haben aber auch jeweils ihre Eigenheiten.
    Die vollständige Beschreibung findest du im ETSI Dokument (anbei).
    In edEIT sind die Infos in Blöcken unterteilt, wobei im Rahmen immer der jeweilige descriptor -Name steht.
    Titel und Beschreibung sind im "short event descriptor", die längere Inhaltsinfo ist in (meist mehreren) "extend event descriptor" enthalten.
    Wichtig ist, dass die Texte meist kodiert (z.B. UTF-8) sind, d.h. man muss diese entsprechend konvertieren.


    Im Anhang als Beispiel der Aufbau des short event descriptors, wobei ich gleich darauf hinweise, dass der auch mehrfach vorkommen kann.

  • Danke für Deine Bemühungen, aber das wußte ich bereits und auch das pdf habe ich schon runtergeladen.
    Leider konnte ich auch damit nichts anfangen.
    Naja, wenn es so umfangreich ist, kann man nichts machen. Dachte, es sind nur ein paar Zeilen (Position und Länge für die 3 Sachen rausfinden, dann passt das schon), aber wenn es so kompliziert ist.
    Ich schau mir mal das Konvertieren von UTF-8 an, vielleicht komme ich noch dahinter (was ich aber bezweifle).
    Trotzdem Danke

  • Hi,


    Position und Länge dieser drei Sachen sind leider nicht absolut. Du müsstest - ausgehend vom Header - die einzelnen descriptors durchgehen, bis der gewünschte descriptor (z.b. SED) gefunden ist, um dort dann die exakten Positionen und Länge der Texte zu finden.
    Beim EED ist es sogar noch etwas "unglücklicher", weil dort aufgrund der 256 Byte Begrenzung so ziemlich immer der Text über mehrere Blöcke verteilt ist. Diese sind zwar meist in der richtigen Reihenfolge, eine Garantie dafür gibt es aber nicht. Man muss also alle EED-Texte der einzelnen Blöcke einlesen, anschließend sortieren, zusammenführen und ggf. am Ende noch die CS-Konvertierung durchführen.


    Grundsätzlich ist es aber schon machbar, wenn du magst. Du wirst aber dafür schon etwas Arbeit reinstecken müssen.


    Am Beispiel SED:


    1. Du liest die gesamte .eit als ByteArray (Kette von Bytes) ein
    2. Bei Byte 12 findest du den ersten descriptor. Dieses Byte sagt dir, was es für ein descriptor es ist, das nächste Byte sagt dir die Länge dieses descriptors
    3. Für SED muss es 0x4D (dez 77) sein
    4. Ist das Byte also kein 0x4D, dann springt du im Bytearray zum nächsten descriptor in dem du die Länge des descriptors zur aktuellen Position addierst.
    5. Dann prüfst du wieder nach 4D
    6. usw.


    Hast du 0x4D gefunden - nehmen wir mal an das wäre gleich der erste descriptor, startet also bei Byte 12 - dann sind die anschließenden Bytes wie folgt zu interpretieren:
    Achtung, das ist ein Beispiel mit z.B. Titel = "All is Lost" und Beschreibung = "Drama" (beide CS kodiert)


    Code
    12	descriptor_tag            | 0x4D / 77 bedeutet SED
    13	descriptor_length         | Länge des descriptors (in diesem Bsp 23)
    14..16	ISO_639_language_code     | 3 Bytes = z.B. "D" + "E" + "U", für "DEU"
    17	event_name_length         | Länge des 'Titels' (in dieses Bsp 12 Zeichen)
    18	charset                   | ggf. CS-Kodierung
    19…29	event_name_char           | Text des Titel (in diesem Bsp "All is Lost")
    30	text_length               | Länge der 'Beschreibung' (in diesem Bsp 6)
    31	charset                   | ggf. CS-Kodierung
    32..36	text_char                 | Text der Beschreibung (in diesem Bsp "Drama")

    also
    Byte 18..29 = Titel (ggf. inkl. CS-Kodierungsbyte am Anfang)
    Byte 31..36 = Beschreibung (inkl. CS-Kodierung am Anfang)


    Du siehst, man muss sich die Positionen und Längen der einzelnen Informationen zusammenrechnen.
    Ein simples Suchen nach Byte 0x4D (77) im Array bringt dich nicht weiter, weil 0x4D (77) eine Länge, eine Position oder auch ein "M" in einem Text sein kann. WAS es wirklich ist, hängt davon ab, WO es genau steht.


    Ich unterstütze dich gerne auf dem Weg, falls du dich daran machen willst :winking_face:

    Grüße
    ...jp

    2 Mal editiert, zuletzt von juanito_perez ()

  • Ok, Du hast mir wieder Mut gemacht.
    Dafür und für Dein Angebot, mich ein wenig zu unterstützen, ein großes Dankeschön.
    Ist heutzutage leider nimmer so oft zu sehen.
    Danke.

  • Also:
    Sprache, Titel und Beschreibung habe ich schon.
    Was mir aber jetzt noch fehlt, ist der Inhalt. Somit die Fortsetzung Quellcode von oben
    Habe zwar versucht, es selber rauszufinden, aber es gelingt mir nicht ganz.
    Kannst Du mir bitte als letztes noch diese Infos zukommen lassen?
    sollte sein:
    10. 37 inhalt_length | Länge des Inhalts
    11. 38 charset | Text des Inhalts
    Aber wie gesagt, das habe ich noch nicht ganz behirnt, also wäre ich Dir über eine nochmalige Hilfe sehr dankbar.
    lg
    Werner

  • Vorab: Vorsicht! Auch wenn meist der SED unmittelbar nach dem Header kommt, so gibt es dafür keine Garantie.
    Die descriptoren können innerhalb einer .eit in beliebiger Reihenfolge stehen. Du kommst also nicht umhin, die descriptors durchzugehen und nach den gewünschten descriptor_tags zu suchen.


    Denkt man mein obiges Beispiel weiter, dann wäre der SED mit Byte 36 beendet.
    Das bedeutet, dass Byte 37 schon der "descriptor_tag" des nächsten descriptors wäre.
    Wäre der descriptor_tag ein 0x4E (= EED), dann wäre das einer der gesuchten descriptors mit dem "Inhalt".
    Die EEDs gehören - wirst du ungern hören - zu den komplizierteren descriptors.
    Wie gesagt, dadurch dass sie auf 256 Byte begrenzt sind, sind eigentlich immer mehrere davon da.
    Zudem können dort auch Werte-Paare (siehe in edEIT den Reiter "Optional" im EED), um z.B. die Schauspieler zu hinterlegen.
    Anbei ein Beispiel mit optionalen Werte-Paaren. In der Zip findest du auch einen Dump als Textdatei, der die vielleicht bei der Orientierung hilft.
    Bei Byte 217 ist der erste EED.


    Die Struktur ist dann:

    Wie gesagt: Man sollte alle EED einlesen, sortieren und erst dann die Texte zusammenführen.
    Bei der Musterdatei sieht du das "un" am Ende des 1. EED und dann das "d" am Anfang des 2. EED, was später im Text "und" ergibt.
    Die CS-Kodierung darf erst erfolgen, wenn die Texte zusammengefügt wurden, weil z.B. ein Sonderzeichen (2 Byte) auf zwei EED aufgeteilt sein könnte. Konvertiert man vorher die einzelnen Teiltexte würde das Sonderzeichen kaputt gehen.

  • hier mal als beispiel der emc eit parser in python:


  • Visual Basic 6.
    Bin ein alter Programmierer (59 Jahre), der leider nie so gut war und dann dort stehengeblieben ist.
    Obwohl ich jetzt Zeit habe und ich mir schon überlegt habe, nicht eine neue Version/Sprache zu erlernen.
    Was empfiehlst Du bitte (Schwerpunkt Visual Basic)?