Ich versuche zu ergründen, wie ein Plugin für den epgd gebaut werden kann, der EPG im xmltv Format einlesen kann.
Wenn ich das richtig verstanden habe, dann werden verschiedene Werte in der Events Tabelle manuell gesetzt, aber viele generisch, wobei ich den Ansatz "XML-Element" auf "Spalte in der Events Tabelle" vermute.
Um das zu erreichen sehe ich 3 Ansätze:
1. Element/Spalten, die passen, werden automatisch eingelesen und der Rest wird manuell codiert
2. Ein xslt Script versucht eine Transformation des Original XML in ein Format, bei dem die meisten Spalten automatisch eingelesen werden und dann weniger manuelle Arbeit.
3. Der harte Weg ohne xslt: Das Original wird eingelesen und ein neues XML wird im Code erzeugt, das die Elementnamen passend gestaltet. Dabei können auch direkt Werte z.B. an die longdescription angehängt werden und alles aufbereitet werden.
Bei xslt sträuben sich mir die Haare. Da gehe ich meist mit fliegenden Fahnen unter oder durch viel Probieren komme ich der Lösung näher (falls überhaupt in die Nähe).
Ich habe mal ein Beispiel aus dem xmltv repository genommen und etwas aufbereitet. Allerdings bin ich mir bei ein paar Elementen nicht wirklich sicher
<!-- starttime, duration, eventid -->
<programme start="20220331180000 +0000" stop="20220331190000 +0000" channel="channel-one.tv">
<!-- title -->
<title lang="en">Programme One</title>
<!-- shorttext -->
<sub-title lang="en">Pilot</sub-title>
<!-- longdescription -->
<desc lang="en">This programme entry showcases all possible features of the DTD</desc>
<credits>
<!-- director -->
<director>Samuel Jones</director>
<!-- actor -->
<actor role="Walter Johnson">David Thompson</actor>
<actor role="Karl James" guest="yes">Ryan Lee</actor>
<!-- screenplay -->
<writer>Samuel Jones</writer>
<adapter>William Brown</adapter>
<!-- producer -->
<producer>Emily Davis</producer>
<!-- music? -->
<composer>Max Wright</composer>
<!-- commentator -->
<commentator>James Wilson</commentator>
<editor>Nora Peterson</editor>
<presenter>Amanda Johnson</presenter>
<!-- Brauchen wir das? -->
<guest>Lucas Martin</guest>
<guest>Emily Parker</guest>
<guest>Oliver Nelson</guest>
</credits>
<!-- year (exrahieren) -->
<date>19901011</date>
<!-- category oder besser genre? -->
<category lang="en">Comedy</category>
<!-- Anhängen an die longdescription? -->
<keyword lang="en">physical-comedy</keyword>
<keyword lang="en">romantic</keyword>
<!-- Anhängen an die longdescription? -->
<language>English</language>
<orig-language lang="en">French</orig-language>
<!-- country -->
<country>US</country>
<!-- Anhängen an die longdescription? -->
<episode-num system="onscreen">S01E01</episode-num>
<!-- ignorieren? -->
<episode-num system="xmltv_ns">1 . 1 . 0/1</episode-num>
<video>
<present>yes</present>
<colour>no</colour>
<!-- flags -->
<aspect>16:9</aspect>
<quality>HDTV</quality>
</video>
<audio>
<present>yes</present>
<!-- audio -->
<stereo>Dolby Digital</stereo>
</audio>
<!-- parentalrating. Aber wie mit den verschiedenen System umgehen? -->
<!-- Das Feld hat den Typ int(2) -->
<rating system="BBFC">
<value>15</value>
</rating>
<rating system="MPAA">
<value>NC-17</value>
<icon src="NC-17_symbol.png" />
</rating>
<!-- rating -->
<star-rating system="TV Guide">
<value>4/5</value>
<icon src="stars.png" />
</star-rating>
<star-rating system="IMDB">
<value>8/10</value>
</star-rating>
<!-- image -->
<image type="poster" size="1" orient="P" system="tvdb">https://tvdb.com/programme_one_poster_1.jpg</image>
</programme>
Display More
Gibt es da andere Ideen? Liege ich mit meinen Zuordnungen falsch oder richtig? Oder kann ein xslt-Guru etwas dazu sagen?
Aktuell tendieren ich tatsächlich zu dem harten Weg (transformieren im Code) und dann anschließend ein anderes xslt aufrufen (sie wie heute auch, damit erfahrene Benutzer da etwas ändern können).
Wenn die einzige Quelle mein eismann wäre, dann würde ich die Transformation direkt da erledigen in einer Sprache meiner Wahl. Aber es gibt eben auch andere Quellen.