Episodes2TVGuide (E2T) - Anpassen der tvguide.xml (2 Viewers)

lightshock

Test Group
  • Team MediaPortal
  • June 3, 2008
    552
    128
    bei Karlsruhe
    Home Country
    Germany Germany
    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.

    • 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 :D

    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
    Changelog für v0.16.71
    • 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.
    Changelog für v0.15.51
    • Beim Ersetzen der Tags wurden nicht alle Werte korrekt übernommen
    Changelog für v0.15.50
    • Leere Tags werden nicht mehr gespeichert.
    • Beschreibungen werden, bevor sie von TvDB kommen, bereinigt.
    Changelog für v0.15.47
    • 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.
    Changelog für v0.15.46
    • 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
    Changelog für v0.13.45
    • Die ReplaceString-Funktion ersetzt alle vorkommenden Zeichen, egal an welcher Stelle, in der Beschreibung
    Changelog für v0.13.44
    • 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.
    Changelog für v0.12.38
    • 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>
      Hier wird der Titel um die Länge der Sendung und den Text Min. erweitert.
      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.
    Changelog für v0.11.28
    • 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.
    Changelog für v0.10.26
    • Erste Programmversion
     

    Attachments

    • Episodes2TVGuide 0.16.73.zip
      15.5 KB
    • Episodes2TVGuide 0.18.119.zip
      16.5 KB
    Last edited:

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,562
    3,944
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Dann möchte ich auch noch meinen "Senf" dazu geben...
    MP2_TVDB_Cache
    Das ist ein "Schmankerl" für MP2 User, heißt aber natürlich nicht, alle anderen gucken in die Röhre. MP2 lädt die gleichen XML Dateien von TVDB herunter wie E2T. Da liegt es doch nahe, zuerst mal im MP2 Cache nachzuschauen, ob es die benötigte Datei dort bereits gibt, um unnötige Downloads und Serverlast für TVDB zu vermeiden... Wird dort nichts gefunden werden die entsprechenden Dateien eben von TVDB statt aus dem MP2- Cache geladen...

    Ein "nettes" Feature hat @lightshock noch gar nicht erwähnt. Nach dem ersten Durchlauf liegt im Ordner eine weitere XML Datei "Episodes2TVGuide.ID.xml" Hier drin sind alle erkannten und nicht erkannten Serien aufgelistet. Ab dem zweiten Durchlauf wird zunächst hier nachgeschaut, ob die entsprechende Serie bereits erkannt wurde, um unnötige Online- Aufrufe zu vermeiden. Außerdem wird die Liste um neue "Funde" erweitert. Da es sich um eine XML Datei handelt, lässt sich diese natürlich mit einem Text Editor (Notepad und Co.) modifizieren. Es gibt ja auch immer wieder Fälle, die unmöglich zu identifizieren sind. Als Beispiel mal die beiden Serien "Soko Wien" und "Soko München". Auf TVDB heißen diese "Soko Donau" und "Soko 5113". "Soko Donau" habe ich außerhalb der TVDB noch nie gesehen, bei Soko München liegt der Fall aber anders. "Soko 5113" gibt es seit über 30 Jahren und unter diesem Namen gibt es auch noch genug Einträge im EPG. Die Serie ist wohl erst seit kurzem umbenannt worden wodurch nur die Erstausstrahlungen als "Soko München" im EPG auftauchen, Wiederholungen aber als "Soko 5113". Um nun trotzdem entsprechende Einträge im EPG zu bekommen, kann man diese XML editieren, um E2T zu helfen...
    So sieht der Eintrag für "Soko München" in der XML aus, bevor wir eingreifen:

    XML:
      <CCacheSerie>
        <Id>0</Id>
        <NameTvGuide>SOKO München</NameTvGuide>
        <NameTvdb />
        <Added>2016-01-20T15:55:18.0008286+01:00</Added>
      </CCacheSerie>

    Bei ID steht "0" was meint, nichts gefunden. Hier trägt man nun die ID der Serie ein, die sich hinter dem Namen versteckt, in diesem Fall also "149411". Die Zeile mit "<NameTvdb />" ersetzen wir durch "<NameTvdb>Soko 5113</NameTvdb>", also dem Namen, den die Serie auf TVDB hat. Jetzt hat E2T keinerlei Probleme mehr, "Soko München" auf TVDB zu finden und mit entsprechenden Daten zu versorgen. So sieht der fertige korrigierte Eintrag dann aus:

    XML:
      <CCacheSerie>
        <Id>149411</Id>
        <NameTvGuide>SOKO München</NameTvGuide>
        <NameTvdb>Soko 5113</NameTvdb>
        <Added>2016-01-20T15:55:18.0008286+01:00</Added>
      </CCacheSerie>

    Nachdem man mit seinen Änderungen fertig ist, nicht vergessen, die XML abzuspeichern. Danach kann man E2T erneut über die tvgide.xml "scheuchen" und somit auch die bisher nicht erkannten Episoden zu versorgen. oder man wartet einfach bis zum nächsten "regulären" EPG grabben. Dann hat sich das auch erledigt...

    Ach, Einträge mit ID=0 werden von Zeit zu Zeit automatisch aus der XML entfernt, um diese nicht ins Uferlose anwachsen zu lassen. Einträge mit einer "richtigen" ID bleiben aber natürlich erhalten...
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,562
    3,944
    Lehmden
    Home Country
    Germany Germany
    Kein Problem, musst ja nicht alles alleine machen. ;)

    Auch noch was. Das Ganze ist nicht auf MediaPortal beschränkt, speziell deswegen nicht, da E2T auch unter Linux (und MacOS?) läuft. Man kann es mit jedem TV Backend verwenden, das XMLTV kompatibel ist, also auch mit ArgusTV, TVHeadend usw... Ganz im Gegensatz zu den anderen gängigen Tools, die Episoden Nummern direkt in die TV Server Datenbank eintragen und deswegen nur mit MP1 funktionieren.
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,562
    3,944
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Im Prinzip eine parallele Entwicklung, aber doch ganz anders.... Episodes2TVGuide bearbeitet die XML Datei, bevor sie in MP importiert wird. MPEpisodeNumberGenerator und auch die anderen Tools, die es schon gibt, bearbeiten nachträglich die MP1 Datenbank. Letzteres ist weit weniger flexibel, da es eben nur mit der MP1- TV Server Datenbank funktioniert. Spätestens wenn auch für MP1 die TVE 3.5 erhältlich ist, ist dieses Konzept am Ende bzw erfordert ein neues Programm. Dafür funktioniert es aber auch mit DVB- EPG, Daten, sofern da überhaupt mal ein Episoden Titel mitgeliefert wird.

    E2T hingegen funktioniert mit jedem "TV Server", der xmltv kompatibel ist (so weit mir bekannt, sind das nahezu alle), also mit MP1, MP2, Argus,...
    Von daher wohl doch eher ganz anders.;)
     

    framelmike

    Portal Pro
    October 14, 2008
    213
    33
    Home Country
    Germany Germany
    @Lehmden
    Danke für deine ausführliche Antwort. Dann bin ich mal gespannt, wie sich das alles noch entwickelt.
    Ich hole mir meine EPG-Daten von TV-Movie (Tv Movie EPG Import++).
    Würde da euer Tool auch funktionieren? :):whistle::)
     

    Users who are viewing this thread

    Top Bottom