Hi,
ich konnte es mal wieder nicht lassen und habe ein kleines Programm geschrieben das ich euch, vor allem den TV-Schauern unter euch, nicht vorenthalten möchte.
@Lehmden hatte mich letztes Jahr gefragt ob ich denn ein Programm machen könnte um den EPG, genauer gesagt die Datei in der sich der EPG vor dem Import in MediaPortal befindet, zu modifizieren. Klar, ist machbar habe ich gesagt und wie haben uns im Detail unterhalten.
Bei vielen EPG-Anbieter wird der Inhalt der Sendung nicht unbedingt gut gepflegt. Da fehlt die korrekte Staffel- und Episodennummer der Sendung, der Plot ist nicht gefüllt oder die Namen der Serie und Episode werden nicht getrennt.
Da @Lehmden, unter anderem, bekannt dafür ist viele Aufnahmen zu haben, man aber immer viel Zeit investieren muss um herauszubekommen ob man nun eine Episode der Staffel schon hat oder nicht, haben wir versucht die Arbeit auf ein Programm abzuwälzen. So entstand Episodes2TVGuide. Oder kurz E2T.
Der Vorteil an E2T ist, das die Datei, in welcher sich das EPG befindet, vor dem Importieren in die MediaPortal-Datenbank (egal ob Version 1 oder 2) angepasst wird.
Was macht E2T?
E2T verarbeitet die komplette tvguide.xml und versucht über die Webseite TheTVDB zu ermitteln, ob es sich bei der Sendung um eine Serie handelt. Wenn eine Serie gefunden wurde, werden die Informationen zu dieser Serie in einen Cache-Ordner geladen. Wenn MediaPortal 2 installiert ist, wird auch auf diesen Cache zugegriffen.
Bei einer Übereinstimmung wird die korrekte Staffel- und Episodennummer abgespeichert.
Zusätzlich besteht die Möglichkeit den Plot, sowie den Serien- und Episodennamen zu übernehmen.
Wenn eine Sendung nicht in der angegebenen Sprache gefunden wurde, wird im englischsprachigen Bereich gesucht. Sollten wir hier fündig werden, werden von dort die Daten genommen.
Vorgehensweise und Parameter:
E2T ist ein Kommandozeilenprogramm. Der erste Aufruf legt die benötigten Dateien und Ordner an. Alle Dateien und Ordner liegen im selben Ordner wie E2T.
Der erste Aufruf sollte ohne ein Parameter sein. Danach wird eine Konfigurationsdatei mit dem Namen "Episodes2TVGuide.xml" erstellt. Diese sollte vor dem nächsten Start bearbeitet werden. Viele Bereiche sind selbsterklärend, aber ich gehe trotzdem kurz darauf ein.
Parameter:
Wenn --output nicht angegeben wurde, wird die Datei vom --input-Parameter benutzt. von der Originaldatei wird eine Sicherung angelegt.
Dort wo sich die tvguide.xml befindet muss auch die Datei xmltv.dtd liegen.
Was wird benötigt?
E2T benötigt das Microsoft Framework .NET 4.5. Somit ist E2T nicht unter Windows XP lauffähig.
Bei der Entwicklung habe ich aber eine kleine Besonderheit berücksichtigt: E2T ist über die Anwendung Mono auf Linux lauffähig. Somit kann, wenn euer EPG z.B. von einem Raspberry Pi oder Banana Pi gegrabbt wird, nach dem Ermitteln der EPG-Daten E2T über die Daten gejagt und somit angepasst werden. Ebenso kann E2T auf einem vServer benutzt werden.
Getestet habe ich das ganze mit Debian Jessie und Mono 4.2.1 stable.
Ich hoffe ich habe nichts vergessen und wenn doch... einfach Fragen. Ihr wisst ja wie das Forum funktioniert
Changelog für v0.18.119
ich konnte es mal wieder nicht lassen und habe ein kleines Programm geschrieben das ich euch, vor allem den TV-Schauern unter euch, nicht vorenthalten möchte.
@Lehmden hatte mich letztes Jahr gefragt ob ich denn ein Programm machen könnte um den EPG, genauer gesagt die Datei in der sich der EPG vor dem Import in MediaPortal befindet, zu modifizieren. Klar, ist machbar habe ich gesagt und wie haben uns im Detail unterhalten.
Bei vielen EPG-Anbieter wird der Inhalt der Sendung nicht unbedingt gut gepflegt. Da fehlt die korrekte Staffel- und Episodennummer der Sendung, der Plot ist nicht gefüllt oder die Namen der Serie und Episode werden nicht getrennt.
Da @Lehmden, unter anderem, bekannt dafür ist viele Aufnahmen zu haben, man aber immer viel Zeit investieren muss um herauszubekommen ob man nun eine Episode der Staffel schon hat oder nicht, haben wir versucht die Arbeit auf ein Programm abzuwälzen. So entstand Episodes2TVGuide. Oder kurz E2T.
Der Vorteil an E2T ist, das die Datei, in welcher sich das EPG befindet, vor dem Importieren in die MediaPortal-Datenbank (egal ob Version 1 oder 2) angepasst wird.
Was macht E2T?
E2T verarbeitet die komplette tvguide.xml und versucht über die Webseite TheTVDB zu ermitteln, ob es sich bei der Sendung um eine Serie handelt. Wenn eine Serie gefunden wurde, werden die Informationen zu dieser Serie in einen Cache-Ordner geladen. Wenn MediaPortal 2 installiert ist, wird auch auf diesen Cache zugegriffen.
Bei einer Übereinstimmung wird die korrekte Staffel- und Episodennummer abgespeichert.
Zusätzlich besteht die Möglichkeit den Plot, sowie den Serien- und Episodennamen zu übernehmen.
Wenn eine Sendung nicht in der angegebenen Sprache gefunden wurde, wird im englischsprachigen Bereich gesucht. Sollten wir hier fündig werden, werden von dort die Daten genommen.
Vorgehensweise und Parameter:
E2T ist ein Kommandozeilenprogramm. Der erste Aufruf legt die benötigten Dateien und Ordner an. Alle Dateien und Ordner liegen im selben Ordner wie E2T.
Der erste Aufruf sollte ohne ein Parameter sein. Danach wird eine Konfigurationsdatei mit dem Namen "Episodes2TVGuide.xml" erstellt. Diese sollte vor dem nächsten Start bearbeitet werden. Viele Bereiche sind selbsterklärend, aber ich gehe trotzdem kurz darauf ein.
- CharToFindEpisode
Hier werden die Trennzeichen hinterlegt mit denen versucht wird eine Episode zu finden.
Manche EPG-Anbieter schreiben in den Sendungstitel: "Flash - Der rote Blitz: Der programmierte Doppelgänger".
Dies ist für E2T keine eindeutige Serie. Darum wird jedes Trennzeichen das in der Liste benutzt um den Bereich zwischen Serie und Episode zu trennen. Zu beachten ist die Reihenfolge der Trennzeichen. Würde ein Minus vor dem Doppelpunkt als Trennzeichen kommen, würde die Serie "Flash" und die Episode "Der rote Blitz: Der programmierte Doppelgänger" heißen. Dies wird leider nicht bei TVDB gefunden. - RemoveTags
Bei vielen EPG-Anbietern werden weitere Informationen wie z.B. Darsteller, Bewertungen usw mitgeliefert. Programme wie MediaPortal z.B. nutzen diese Information nicht. Also können diese auch aus der Datei entfernt werden. - Replace_Strings
Einige EPG-Anbieter schreiben in den Plot unnütze Zeichen wie z.B. "()" oder "( n )". Diese können hiermit entfernt werden - TVDB_Language
Gibt die Sprache an in welcher nach der Serie gesucht wird. - TVDB_Timeout
Timeout in Sekunden - TVDB_OverwritePlot
Wenn der Wert auf "true" steht, wird der Plot im EPG immer mit dem Plot von TVDB überschrieben.
Leere Plots im EPG werden generell mit dem Plot von TVDB überschrieben - TVDB_Overwrite_Serie_and_Episode
Überschreibt den Serien- und Episodennamen - MP2_TVDB_Cache
Gibt den Ordner zum MediaPortal 2 TVDB-Cache an
Parameter:
Code:
--input:"Ordner und Dateiname zur tvguide.xml"
--output:"Ordner und Dateiname der Ausgabedatei"
Wenn --output nicht angegeben wurde, wird die Datei vom --input-Parameter benutzt. von der Originaldatei wird eine Sicherung angelegt.
Dort wo sich die tvguide.xml befindet muss auch die Datei xmltv.dtd liegen.
Was wird benötigt?
E2T benötigt das Microsoft Framework .NET 4.5. Somit ist E2T nicht unter Windows XP lauffähig.
Bei der Entwicklung habe ich aber eine kleine Besonderheit berücksichtigt: E2T ist über die Anwendung Mono auf Linux lauffähig. Somit kann, wenn euer EPG z.B. von einem Raspberry Pi oder Banana Pi gegrabbt wird, nach dem Ermitteln der EPG-Daten E2T über die Daten gejagt und somit angepasst werden. Ebenso kann E2T auf einem vServer benutzt werden.
Getestet habe ich das ganze mit Debian Jessie und Mono 4.2.1 stable.
Ich hoffe ich habe nichts vergessen und wenn doch... einfach Fragen. Ihr wisst ja wie das Forum funktioniert
Changelog für v0.18.119
- Erhöhung der Erkennungsrate bei den Episodennamen
Changelog für v0.16.73
- Ungültige Zeichen werden aus der XML-Datei von TheTvDB direkt herausgefiltert. Danke @Lehmden
- Ausgaben sind nun in Englisch
- Beim Herunterladen von Serieninfos gab es ab und an Fehler. Die sollten nun behoben sein.
- Beim Beenden wird die Dauer in Sekunden angegeben wie lange E2T gearbeitet hat.
- Beim Ersetzen der Tags wurden nicht alle Werte korrekt übernommen
- Leere Tags werden nicht mehr gespeichert.
- Beschreibungen werden, bevor sie von TvDB kommen, bereinigt.
- Bei manchen Sendungen kommt der "Title" -Tag öfter vor. Dieser wurde auch öfter bei der Replace-Funktion benutzt.
Nun werden die Tags "Title", "Sub-Title" und "Desc" einmal verwendet.
- Wenn mehrere Seriennamen bei TvDB für eine Serie gefunden wurden, werden alle Serien abgearbeitet.
- Sollte eine Episode nicht gefunden werden, gibt es eine alternative Suchfunktion welche über die Konfigurationsdatei aktivierbar ist. Die Suche wird nur benutzt wenn noch keine Episodennummer gefunden wurde
- Die ReplaceString-Funktion ersetzt alle vorkommenden Zeichen, egal an welcher Stelle, in der Beschreibung
- Die ReplaceString-Funktion hat zuvor immer am Anfang und am Ende der Werte die Zeichen ersetzt. Dadurch wurde vermieden das z.B. bei 'Woche( n )' das ( n ) ersetzt wurde. Sofern Woche( n ) nicht am Ende der Beschreibung stand
Jetzt wird jede Zeile, sofern vorhanden, bei den Werten einzeln geprüft. Sollte also die Beschreibung mehrere Zeilen haben, wird jede Zeile einzeln geprüft. Aber auch hier nur am Anfang und am Ende - Bei den zu ersetzenden Variablen wurden diese immer mit dem Wert des ersten Vorkommnisses überschrieben. Nun werden alle Werte des passenden Tags zusammengefasst und mit einem Komma getrennt.
- Neue Werte in der Konfigurationsdatei
Nach Wunsch von @pünktchen habe ich die Einstellungsdatei um drei weitere Werte erweitert: New_Title, New_Sub_Title, New_Desc
Hiermit ist es möglich den Namen der Sendung (Title), den Namen der Episode (Sub_Title) und die Beschreibung (Desc) anzupassen. Das Aussehen wird einfach in der XML-Datei bei den jeweiligen Einträgen hinterlegt. Wenn eine Bezeichnung in $ gesetzt wird, wird dies als Feld aus der tvguide.xml gewertet und von dort der passende Wert genommen.
Beispiel:
XML:<New_Title>$title$ ($length$ Min.)</New_Title>
Nachdem die Beschreibungen angepasst wurden, werden alle Einträge gesäubert. Das heißt, sollte in unserem Beispiel keine Länger verfügbar sein, müsste man im <Replace_Strings> Segment folgenden Zeichenkette hinzufügen: "( Min.)" damit der Leereintrag entfernt wird.
- Bessere Erkennung bei Episoden.
Wenn eine Episode bei TvDB eine Folgennummer besitzt (z.B. Castle - Countdown (2)) wird diese bei der Erkennung entfernt.
Wenn die Episode im EPG eine Folgennummer hat, bleiben diese bestehen.
- Erste Programmversion
Attachments
Last edited: