edEIT - EIT Editor

  • Hallo *,


    Nachdem die bekannten EIT-Editoren z.T. Probleme mit neueren EIT-Dateien haben und offensichtlich nicht mehr weiter entwickelt werden, habe ich einen neuen EIT-Editor programmiert.


    Features:
    - Multi-File (mehrere EITs gleichzeitig editieren)
    - Multi-Charset
    - Drag & Drop (Zum Öffnen von EITs einfach die Dateien auf das edEIT-Fenster schieben)
    - Unterstützt Standardverknüpfung (Öffnen von EITs per Doppelklick, z.B. aus dem Explorer)
    - Nach EN_300468 Standard (V 1.15.1 von 03/2016)
    - IntelliType (Editieren von component und content descriptors nach sprechendem Text und in nur zulässigen Kombinationen)
    - Mehrsprachig (deutsch / englisch / spanisch / tschechisch)
    - Echtzeit-Größenüberwachung der Zieldatei
    - Einfacher Export nach XML
    - Export und Import von component descriptors (in XML Datei)
    - Optional bis zu 20 benutzerdefinierte Ablagen für CPD Importdateien (siehe Readme in der ZIP)
    - Unterstützt auch .ts.meta inkl. Datenübernahme aus EIT
    - Möglichkeit, einzelne Felder zwischen eit<>tsmeta auszutauschen (beide Richtungen)
    - Optionales AutoUpdate für .ts.meta, d.h. gleiche Felder werden automatisch von der .eit übernommen
    - Möglichkeit, tatsächliche Dateigröße von .ts in .ts.meta zu übernehmen
    - Erstellung von .eit aus .ts.meta
    - Dreambox kompatibel (alle OEs, alle Dreamboxen)
    - Auch für WinXP (.net 3.5) verfügbar


    Hinweise:
    - Die EventID ist durch Doppelklick auf die Feldbeschriftung "EventID" auch editierbar
    - Die Reiter lassen sich schneller per Klick auf die rechte Maustaste schließen
    - Unter "Einstellungen" können Standardeinstellungen für Sprache, Import und Charset festgelegt werden
    - Die Standardeinstellung von Charset gilt nur für neu erstellte EIT-Dateien
    - Importierte component descriptors erben das Charset der EIT-Datei
    - Bei Überschreitung der max. EIT Größe erfolgt eine Warnung und es wird die Speicherfunktion vorübergehend deaktiviert


    Viel Spaß damit


    Änderungen 1.6.2
    + Fehlerumgehung für eits mit nur einem EED und fehlerhafter Blocknummer
    + Wandlung von "\n" zu Zeilenumbruch ( bei UTF-8 )


    Änderungen 1.6.1
    + Absturzmeldung als eigener Dialog mit Links
    + Coveranzeige
    + Bugfix: Änderungsflag bei CPD-Import fehlte
    + Bugfix: Leerer User-Wert bei Content Desc. machte Pobs bei Echtzeit-Größenermittlung
    + Bugfix: Mehrere Content Desc. => Es wird nur der erste Eintrag ausgewertet / übernommen (VU)


    Änderungen 1.6.0
    + Unterstützung von Parental Rating Descriptor
    + Unterstützung von Content Descriptor ausgebaut
    + Übergreifendes Abfangen von Ausnahme-Fehler
    + Kleine Fehler behoben


    Änderungen 1.5.1
    + Bugfix: Drag'n'drop hat bei Erstdatei die Anzeige nicht eingeschaltet
    + Drag'n'drop unterstützt jetzt auch mehrere Dateien
    + Bei Bedaf Teilung des SED, wenn Title und Desc gemeinsam die Blockgröße überschreiten
    + Fontgröße im Header der CPD Tabelle angepasst/korrigiert


    Änderungen 1.5.0
    + Kein automatisches Anlegen einer EIT mehr bei Programmstart
    + Dynamische (De-)aktivierung div. Menüpunkte
    + Unterstützung Strukturierte Daten in EED
    + Längenüberprüfung bei UED und OP_EED




    MD5 der 1.6.2-EXE: dc107d756fd7375e7602479a5dfe55fc
    MD5 der 1.6.2-WinXP-EXE : 203445b24c512136d4a9caccbe3c30c8



    PS: Wenn euch edEIT gefällt, dann klickt doch bitte auf "Gefällt mir" :) Danke

  • Hallo,


    Die V1.0 hatte Probleme mit EITs von älteren Boxen (z.B. 7000s).


    Gründe hierfür waren


    a) ein kleiner Bug
    b) diese EITs enthalten "Content"-Descriptors, die bisher nicht in edEIT implementiert waren.


    Hinweis:
    Die "Content"-Descriptors werden jetzt insofern unterstützt, als dass sie nicht mehr zum Absturz von edEIT führen. Sie werden allerdings weder in der Oberfläche noch beim Speichern berücksichtigt. Warum? Weil sie offensichtlich heute keiner mehr verwendet und sie - zumindest bei den neueren Boxen - auch nicht angezeigt werden.

  • Hallo,


    Es gibt eine neue Version (1.0.3).


    Grund:


    edEIT verwendet für die Längeneingabe ein Datums-/Zeitfeld, um die Plausi und Steuerung einfach zu halten.
    Solange die eits seine Sendungsdauer von max 23:59:59 haben, ist alles bestens.
    Mit wurden jedoch eits übermittelt, die eine Länge von 24:00:00 enthielten, was zu einem Crash geführt hat.


    Die Version 1.0.3 enthält nun einen Workaround, der Längen >=24:00:00 auf 23:59:59 ändert.

  • Hallo Juanito,


    danke für dieses sehr schöne Tool, zu dem ich eine Frage habe:


    Ich nehme mit der Dreambox gerne Radiosendungen auf, mit ProjectX kann man aus dem ts-File die Audiospur als mp2 bzw. mp3 extrahieren.
    Großartig wäre es, wenn man die Infos, die in der eit-Datei enthalten sind, in die ID des mp3-Files übertragen könnte.
    Dazu bräuchte man diese Info, z.B. den short und extended event descriptor, als einfaches Textfile.


    Dein Programm ist ja in der Lage, die Information als Text darzustellen. Wäre es vielleicht möglich, hier auch einen Export in eine einfache Textdatei (z.B. csv) zu implementieren?
    Oder kannst du mir einen Tipp geben, wie man diese Felder auslesen kann?


    Da ich keine Änderungen vornehmen will, wäre für meine Zwecke egentlich ein Kommandozeilen Tool der Art eit2csv optimal, mit dem aus einem eit-File ein human-readable File macht.
    Etwas in der Art scheint es nicht zu geben, obwohl ich doch eigentlich nicht der einzige sein kann, der sowas gebrauchen könnte.


    Viele Grüße,
    Jörg

  • Hallo Glueball,


    Ein dediziertes Kommandozeilentool (eit2csv, wie du es so schön nanntes) könnte man machen, das wäre aber im Prinzip ein neues Programm in dem ich bestenfalls einiges aus edEIT übernehmen könnte.


    Einfacher wäre es in edEIT eine Exportmöglichkeit (analog CPD) für die gewünschten Felder einzubauen.
    Die Frage, die sich mir stellt ist die, in wie weit so ein Export tatsächlich nützlich wäre / wo seine Vorteile für den Nutzer liegen.


    Man kann ja aktuell schon die Feldinhalte mit Copy/Paste in ein anderes Programm übertragen.
    Welchen Vorteil hätte der Export? Man müsste weiterhin die einzelnen EITs öffnen und den Export durchführen. Anschließend den Import im Zielprogramm.
    Geht das schneller/einfacher als ein Copy/Paste? Oder habe ich etwas missverstanden?


    Btw, der Export in TXT-Dateien würde auch noch ein paar Fragen aufwerfen, wie zum Beispiel die, wie mit der Charset-Codierung und vor allem mit den Zeilenvorschüben umgegangen werden soll, die in so manchen EITs enthalten sind. CSVs mögen sowas ganz und gar nicht...

  • Hi juanito
    Wozu braucht man dass - hattest du gefragt.
    Ich hatte ja bis jetzt neutrino und dort alle Infos in einer XML- Datei.
    Um meine Aufnahmen zu archivieren, alle Infos zu behalten auch noch Kapitel hinzuzufügen hatte ich mir mal was mit vb.net gebastelt, was Alles in einem durchgang macht.
    Durch den Kauf der DM900 und der Umstellung auf enigma2 sind diese Infos jetzt in der EIT Datei. Darum wäre ein XML von Vorteil. Vielleicht kannst du mir aber auch verraten, wie du die EIT liest und schreibst.
    Hast du dir 'ne DLL oder Class angelegt ? Habe noch keine Idee wie ich die Daten in Stringarray einlese. Editieren und exportieren ist ja dann unproblematisch.

    MfG W2
    DM900 ultraHD / DVB-C / Dreambox OS 4.3.0r25-2016-12-23

    Edited once, last by Winnetwo ().

  • Hallo Winnetwo,


    Hab' mich wahrscheinlich "unglücklich" ausgedrückt...
    Gemeint war, dass ein Text-Export (egal welcher Art) einen erheblicher Aufwand bedeutet und ich momentan den echten Nutzwert nicht sehe, der die Arbeit rechtfertigen würde.
    Zudem stellt sich das Problem mit den Zeilenvorschüben, die imho auch bei XML so ohne Weiteres nicht lösbar sind. Wenn ich falsch liege, bitte korrigieren. Ich bin kein XML Experte.


    Das EIT Format ist ein Relikt aus alten Zeiten in denen man noch um jedes Byte gekämpft hat. Neben dem offiziellen Standard gibt es "Interpretationen" der Hersteller, die das Ganze noch etwas verzwickt machen.
    Wenn Du tiefer einsteigen möchtest: Die offizielle Formatbeschreibung kann ich leider nicht uploaden, weil sie 1,6 MB groß ist und hier nur 1 MB erlaubt sind.
    Darin findest Du aber im Prinzip alles, was nötig ist, um EITs zu lesen und zu schreiben.


    Google nach "en_300468v011401p.pdf" oder melde dich per PM mit eMail-Adresse, dann schicke ich sie dir per eMail zu.


    Wegen DLL/Class: Leider nein. Ich habe zwar zwischendurch mit dem Gedanken gespielt eine Class zu schreiben, es hat sich dann aber anders ergeben.


    PS: Danke für den Like :)

  • @ juanito
    Yep,
    Doku habe ich gefunden. Danke. Ich hatte mir auch schon eine deutsche Erklärung durch ein Projekt der TH-Ilmenau reingezogen. Dort wird im XML Format gespeichert. Englisch ist nicht so ganz meins.
    Vielleicht hast du nochmal so einen kleinen Gedankenanschupser für mich wie ich aus der EIT Datei z.B. die Kurzbeschreibung extrahiere. Das Format dann weiterbearbeiten und in ein XML Format
    extrahieren geht schon. Z.Zt kann ich Textboxen aus der neutrino XML füllen und editiern oder auch gleich selber was reinschreiben. Die Textboxen werden dann in eine XML exportiert die dann
    mein Proggi zum packen des Containers mit verarbeitet. So habe ich da die Tags und/oder auch Kapitelinfos drin. In welcher Sprache codest du so.

    MfG W2
    DM900 ultraHD / DVB-C / Dreambox OS 4.3.0r25-2016-12-23

  • Hi,


    Um EITs zu lesen muss man deren Aufbau grundsätzlich kennen.
    EITs haben einen Miniheader (12 Byte) und dann folgen die einzelnen "desctiptors" in beliebiger Reihenfolge, wobei sie keine fixe Länge haben.
    Die Länge eines descriptors steht in seinem Header.
    Du bräuchtest für deinen Zweck zwar nur ein paar "descriptors", allerdings wird die Brechstangen-Methode den ByteStream danach abzusuchen nicht zuverlässig funktionieren, weil die IDs gerade mal aus einem Byte bestehen und dieses Byte überall innerhalb der Datei vorkommen kann (und tut)...
    Unglücklicherweise darf ein descriptor max 255 Byte lang sein, was zur Folge hat, dass die Sendungsbeschreibung auch noch in mehreren Blöcken aufgeteilt werden muss. Diese Blöcke stehen zwar in der Regel in der richtigen Reihenfolge, das ist aber kein Muss. Um sicherzugehen muss man also alle Blöcke einlesen und diese sortieren.
    Ebenfalls zu beachten ist, dass Texte in EITs kodiert sein können (um z.B. Umlaute richtig darzustellen). Ob sie kodiert sind, erfährt man aus dem ersten Byte des Textarrays.
    Du siehst schon: Das Ganze ist alles andere als trivial.


    Und nochmal: Seit einiger Zeit haben EITs gerne Zeilenvorschübe. Diese müssten man beim Export in eine Textdatei filtern, was die Texte z.T. sehr unansehnlich macht.


    Ich programmiere in mehreren Sprachen. edEIT ist in VB geschrieben und mit Visual Studio kompiliert.

  • @'Juanito
    Auweia, hört sich ja wirklich schlimm an. Da muß ich doch mal schauen wie sie das bei neutrino machen. Da liegt es ja gleich im XML Format vor. Auf den Boxen, egal welche GUI, wird es ja auch schon ordentlich sortiert angezeigt. Abschrecken tut mich das nicht. Auch wenns am Ende nichts wird.
    Hält die geistige Schmatze am leben. Bin ja auch nur HobbyProgrammer und nutze in meiner Freizeit das gleiche Studio wie du. Habe übrigens gute Erfahrungen mit Regex gemacht.

    MfG W2
    DM900 ultraHD / DVB-C / Dreambox OS 4.3.0r25-2016-12-23

  • Hallo Winnetwo,


    Nicht missverstehen, der Export ist machbar. Ist nur eine Frage des Aufwands :)


    Um welche Felder geht es Dir genau?
    Evtl. packt mich die Lust einen Mini-Export für diese Felder in edEIT einzubauen.


    Schreiben die Neutrinos (Was ist das eigentlich? Ich kenne neutrino nur aus DBox-Zeihten) nur XML oder auch EITs?
    Kannst Du eine XML von einer Sendung aus dem ÖR hier posten? Würde mir das gerne ansehen. Vor allem, weil gerade die ÖR gerne mit Zeilenvorschüben antworten. Ideal wäre es, wenn es zur XML auch eine zugehörige EIT gäbe.
    Oder kann ich Dir eine EIT geben, um sie mit neutrino in eine XML zu wandeln?


    Regex? Meinst Du die Klasse?


    Verwerfe nicht so schnell die Idee. Wenn Du gerne programmierst, dann solltest Du das Thema angehen. ;)
    Als "Leckerli" hier der Aufbau des Headers mit einem Beispiel:

    Code
    1. byteno bits hinweise/standard
    2. 0;1 event_id 16
    3. 2..6 start_time 40 16/24(4x6:hhmmss)
    4. 7..9 duration 24 4x6:hhmmss
    5. 10;11 block
    6. running_status 3 0
    7. free_CA_mode 1 0=frei / 1=CA
    8. descriptors_loop_length 12 +11 header = .length


    An einem konkreten Beispiel:

    Code
    1. byte bits Wert
    2. 136;165 1000100010100101 event_id = 88A5
    3. 222;169;4;21;0 16+6x4bits start_time = 10.12.2014 04:15
    4. 1;69;0 6x4bits; hhmmss duration = 01:45:00
    5. 2;219 0000001011011011
    6. 000
    7. 0 FTA
    8. 001011011011 Gesamtlänge der descriptoren = 731

    start_time und duration sind codiert, müssen also umgerechnet werden.

  • Hallo juanito
    Vielen Dank für die Hilfestellung. Das werde ich mir mal reinziehen.
    NeutrinoHD ist auch ein Linux Betriebssystem, welches andere Hersteller benutzen. Ja, auch die alte d-box hatte das schon. Man hat es aber auch weiterentwickelt. Dort habe ich nach der Aufnahme 2 Dateien. Einmal der Transportstream (.ts) und dann eine .XML-Datei.
    Hier mal ein Beispiel:
    neutrino_xml.zip
    habe mal die enigma2-Dateien für gleiche Sendung mit reingepackt.
    Alle Video- und Audiostreamdaten hole ich mir aus der .ts Datei, da sie nach dem Bearbeiten sowieso nicht mehr mit den gespeicherten Daten übereinstimmen. Länge des Films und vorhandene Audiospuren lese ich also dort aus. Ich brauche für die Weiterverarbeitung
    Sender, Titel, (obwohl ich die notfalls auch aus dem Dateinamen extrahieren kann) Kurzbeschreibung und Lange Beschreibung.


    Achso JA - die Regex-Klasse (System.Text.RegularExpression)

    MfG W2
    DM900 ultraHD / DVB-C / Dreambox OS 4.3.0r25-2016-12-23

    Edited once, last by Winnetwo ().

  • Hi juanito


    Dank deinem Leckerli bin ich auf einem guten Weg. Alle deine Beispieldaten konnte ich aus anderen *.eit Dateien nun auch schon importieren. Anhand der EN habe ich auch den Aufbau des Extended und Short Event Descriptors verstanden, den ich für meine Anwendung brauche. Ich werde mir
    also einen Importfilter erstellen können. Sollte ich trotzdem auf mir noch nicht bekannte Probleme treffen hoffe ich auf einen Tipp von dir.


    Erst aber mal ein dickes Dankeschön. :thumbsup:

    MfG W2
    DM900 ultraHD / DVB-C / Dreambox OS 4.3.0r25-2016-12-23

  • Hi,


    Freut mich zu hören :)


    Klar, bei Fragen einfach fragen. Ich helfe gern.


    Tipp: Berücksichtige von Anfang an, dass alle descriptors mehrfach vorkommen können.


    Auch wenn einige descriptors üblicherweise nur einmal vorkommen, es gibt auch Ausnahmen.
    So beispielsweise bei VU, die zwei short-descriptors schreiben, obwohl die Information auch mit einem vollständig gespeichert werden kann.

  • Hallo,


    Danke für den Hinweis. Das werde ich dann berücksichtigen. Vielleicht kannst du mir ja mal eine VU*.eit Datei zukommen lassen um meinen Import zu testen.
    Wird das dort auch wie beim extended event descriptor gemacht?


    .... und schonmal.... "SCHÖNE FEIERTAGE" ;)

    MfG W2
    DM900 ultraHD / DVB-C / Dreambox OS 4.3.0r25-2016-12-23

    Edited once, last by Winnetwo ().

  • Hallo,


    Soweit ich mich erinnern kann, war es im Fall VU wie folgt:


    Der short event_descriptor hat u.a. zwei Felder: event_name_char und text_char.
    In "normalen" .eits steht dort Titel und Beschreibung, also z.B. "Jumamji" bzw. "Fantasy".
    Die VU-.eits haben zwei short_event_descriptor, in einem ist dann der event_name_char und im anderen der text_char gefüllt.
    Man muss also beide auslesen, um beide Infos zu erhalten.


    Ist also nicht wie bei den extended_event_descriptors, die ja Zähler und max-Angabe haben.


    Anbei eine VU-.et mit zweifachem short_event_descriptor.


    Dir auch ein frohes, ruhiges Fest :)

  • Hi JP,
    Ich wollte deine tool testen, aber habe ich gleich bei erste eit Datei Öffnung eine Unhandled exception bekommen.


    Ich habe Windows 10 mit US regional seetings


    Danke


    PiGeon



    ************** Exception Text **************
    System.InvalidCastException: Conversion from string "20.12.2016 15:45:0" to type 'Date' is not valid.
    at Microsoft.VisualBasic.CompilerServices.Conversions.ToDate(String Value)