Ich denke mehrere EIT in einem Rutsch bräuchte ich nicht, aber JSON unterstützt auch arrays falls Du das doch Vorsorglich einpflegen möchtest. Da stehen dann mehrere Blöcke mit gleichen Parametern in [ , , , ] klammern. Aber ich denke das verkompliziert dann alles nur unnötig.
Mein Vorschlag wäre edEIT nach folgendem Muster zu starten:
edEIT.exe JSON [path] [optional identifier]
edEIT.exe JSON "x:\Dreambox\20171222 2200 - RTL2 - Terminator.eit" "78"
- Der Parameter JSON damit Dein Programm informiert ist das es jetzt nur um das auslesen geht.
- Der path ist der Pfad zur EIT Datei.
- Der optionale Parameter ist ein kurzer String den Dein Programm (falls mit übergeben) unverändert wieder in der JSON zurück geben sollte.
Mein Gedanke ist dabei in einem oder mehreren seperaten Prozessen in Dauerschleife edEIT zu starten, die EIT Dateien auslesen zu lassen und den Rückgabewert in einer Datenbank zu speichern. Über den zuvor mit gegebenen und in der JSON wieder zurück gegebenen String würde ich in meinem falle die ID Nummer hinterlegen und dann einfach unter der ID blind den Inhalt der EIT speichern, ohne genau überwachen zu müssen welche Datei gerade von welcher edEIT Instanz in welchem Prozess abgearbeitet wurde.
Die Rückgabe sähe dann so aus:
{
"Content": "Maschinen regieren die Welt im Jahr 2029. Nur wenige Rebellen widersetzen sich dem Computer 'Skynet'. Um den Anführer der Widerständler, John Connor, auszuschalten, schickt Skynet einen Cyborg in die Vergangenheit. Der Terminator soll Sarah Connor, die Mutter des ungeborenen Rebellen, töten.\nIMDb rating: 8/10.",
"Description": "Sci-Fi-Film. Eine Killermaschine aus dem Jahr 2029 wird ins heutige L.A. entsandt, um eine Frau zu töten. Ein aus der Zukunft kommender Beschützer versucht dies zu verhindern.",
"Duration": 130,
"EventID": 6861,
"ID": "78",
"Language": "ger",
"Service Reference": "1:0:1:2F49:A1:270F:FFFF0000:0:0:0:",
"Starttime": 1513977000,
"Tags": "Film",
"Title": "Terminator"
}
Alles anzeigen
Bevorzugen würde ich aber die Compact Darstellung: (keine Ahnung wie das beim JSON parser von .NET heißt)
{"Content":"Maschinen regieren die Welt im Jahr 2029. Nur wenige Rebellen widersetzen sich dem Computer 'Skynet'. Um den Anführer der Widerständler, John Connor, auszuschalten, schickt Skynet einen Cyborg in die Vergangenheit. Der Terminator soll Sarah Connor, die Mutter des ungeborenen Rebellen, töten.\nIMDb rating: 8/10.","Description":"Sci-Fi-Film. Eine Killermaschine aus dem Jahr 2029 wird ins heutige L.A. entsandt, um eine Frau zu töten. Ein aus der Zukunft kommender Beschützer versucht dies zu verhindern.","Duration":130,"EventID":6861,"ID":"78","Language":"ger","Service Reference":"1:0:1:2F49:A1:270F:FFFF0000:0:0:0:","Starttime":1513977000,"Tags": "Film","Title":"Terminator"}
Wie Du siehst sind einige Sachen enthalten die in Wirklichkeit aus der META Datei kommen und nicht aus der EIT wie beispielsweise die Tags. Falls keine META Vorhanden ist müsste man diese Informationen dann eben leer oder ganz weg lassen. Bin mir nicht sicher was besser ist. Eventuell ist ganz weg lassen besser, dann kann man anhand des Fehlens des "Service Reference" Feldes erkennen das gar keine META Datei vorhanden war, ansonsten könnte es ja sein das diese Information in der Datei einfach nur fehlte. (warum auch immer)
In jedem falle würde ich Dir Raten den JSON string nicht selbst zu erzeugen. Gerade wegen der Umsetzung von Zeilenumbrüchen, Sonderzeichen und dergleichen fiesen Spielchen. .NET unterstützt bestimmt die Erzeugung von JSON Objekten und wenn diese gefüllt sind, kann man diese Standardkonform in einen String umwandeln den ich dann von meinem JSON Objekt parsen lassen kann.
Im Anhang die EIT und Meta Dateien die ich für das Beispiel verwendet habe. Den einen Zeilenumbruch im Content Feld habe ich kurzerhand selbst eingefügt und von Deinem Programm schreiben lassen, ebenso den Tag. Beides war im Original nicht vorhanden. Die Umsetzung innerhalb von JSON über die Escapesequenz \n für Zeilenumbrüche zeigt aber das Du Dir darüber dann keine Sorgen machen müsstest.
Ich hoffe meine Idealvorstellungen hab ich jetzt wunschgemäß genau genug definiert. Meiner Meinung nach müsste Kanzler1959 in seinem Python Skript damit dann auch was anfangen können und es ist hoffentlich flexibel und umfangreich genug für jeden anderen der sowas mal brauchen könnte.