So, hier nun das neue Skript:
Was macht es? Was müsst ihr noch tun?
Zunächst hab ich mal alle Pfade und Dateinamen oben gelistet und rufe sie nur über Variablen auf. So kann sich jeder selbige setzen wo er will. Den Dateinamen index.html durft ihr nicht ändern, die Datei wird so runtergeladen.
Auf xmltv.xmltv.se gibt es die einzelnen Dateien für die Sender runterzuladen. Ihr könnt euch die Änderungsdaten ansehen wenn ihr wollt. Habe für mich entschieden, dass das Ausführen des Skripts einmal pro Woche reicht.
Vortsicht: Das ganze ist ziemlich rechenintensiv. Bei mir hat das Durchlaufen mit meiner Senderliste knapp 45 Minuten gedauert.
Zunächst wird eine Datei namens epg.xml erstellt mit dem Inhalt der raw-channels.xml. Wie ihr diese erstellt gleich.
Dann wird die Dateiliste runtergeladen. Mit dem langen grep/sed Befehl wird nach den Kanälen gesucht und das ganze in ein benutzbares Format gebracht. Ihr könnt euch eine Liste mit euren basteln wenn ihr die raw-channels.xml bastelt. Beachtet nur die Syntax.
Nun werden die Dateien runtergeladen.
Jede der Dateien wird nun angefasst und entsprechend bearbeitet sowie der epg.xml angefügt.
Zum Schluss wird die nun erzeugte Datei dem TV Headend EPG hinzugefügt.
raw-channels.xml
Auf xmltv.xmltv.se könnt ihr euch die Liste mit den ganzen Dateien durchschauen. Ihr findet auch Dateien der Form channels-X.xml.gz. Darin findet ihr die jeweiligen Kanäle für diverse Länder. Alles auch mischbar dann.
Ich habe mir die Kanäle rausgesucht, die ich haben möchte, und alle weiteren aus der Datei gelöscht. Fertig ist eure raw-channels.xml.
Hintergrund ist folgender: Es dauert ne Weile, bis das alles durchgelaufen ist mit dem Umwandeln der Dateien. Daher: Je weniger Kanäle desto schneller läuft das Skript.
Zu jedem Kanal findet ihr eine Channel ID. Diese ist jeweils in der Liste für den langen grep/sed Befehl in Zeile 23 einzutragen. Nur die Dateien zu diesen Sendern werden entsprechend runtergeladen.
Nacharbeiten auf dem System
Natürlich müsst ihr das Skript irgendwo auf dem System speichern und ausführbar machen.
Zeitgesteuertes Ausführen einmal die Woche habe ich per cron eingerichtet. Auch hier Vorsicht: Das Skript ist sehr rechenintensiv. Fernsehschauen war mit meiner VM nicht ordentlich möglich während es lief, trotz vier Kernen und vier GB RAM. Wählt daher einen sinnvollen Zeitpunkt.
Die EPG Kanäle im TV Headend haben nun neue Namen und müssen den Kanälen nun zugeordnet werden. Es lassen sich sogar mehrere auswählen.
Skript
Und hier das Skript. Hängt aber auch nochmal an, leider als .txt, das solltet ihr noch ändern in .sh oder ganz weglassen, dass es schön aussieht.
#!/bin/bash
FILES=/home/hts/epg/epg/*
LOGFILE=/home/hts/xmltvlog/xmltv.[definition='1','0']log[/definition]
ABLAGE=/home/hts/epg/epg/
DOWNLOAD=/home/hts/epg/download
EPGFILE=/home/hts/epg/epg.xml
INDEX=/home/hts/epg/index.html
RAWCHANNELS=/home/hts/epg/raw-channels.xml
DIR=/home/hts/epg/
rm $LOGFILE
touch $LOGFILE
echo "Starting script..." >> $LOGFILE
echo "Time: $(date)" >> $LOGFILE
rm $FILES
rm $EPGFILE
cat $RAWCHANNELS > $EPGFILE
echo "Copied channel list into EPG file successfully." >> $LOGFILE
echo "" >> $LOGFILE
echo "Getting file list" >> $LOGFILE
rm $INDEX
wget http://xmltv.xmltv.se/ -P $DIR
rm $DOWNLOAD
grep "\"3sat.de\|\"br-alpha.daserste.de\|\"arte.de\|\"bfs.daserste.de\|\"daserste.de\|\"einsextra.daserste.de\|\"einsfestival.daserste.de\|\"gold.sat1.de\|\"hr.daserste.de\|\"infokanal.zdf.de\|\"kabel1.de\|\"doku.kabel1.de\|\"kika.daserste.de\|\"maxx.prosieben.de\|\"mdr.daserste.de\|\"ndr.daserste.de\|\"neo.zdf.de\|\"nitro.rtl.de\|\"n-tv.de\|\"phoenix.daserste.de\|\"prosieben.de\|\"rbb.daserste.de\|\"rtl.de\|\"rtl2.de\|\"rtlplus.de\|\"sat1.de\|\"sixx.de\|\"super.rtl.de\|\"tele5.de\|\"vox.de\|\"wdr.daserste.de\|\"zdf.de" $INDEX | sed -n -e 's/.*href="\(.*\)">.*/\1/p' | sed -e 's/^/http:\/\/xmltv.xmltv.se\//' > $DOWNLOAD
echo "" >> $LOGFILE
echo "These EPG files will be downloaded now:" >> $LOGFILE
echo "======================================" >> $LOGFILE
cat $DOWNLOAD >> $LOGFILE
echo "======================================" >> $LOGFILE
echo "Starting download..." >> $LOGFILE
echo "Time: $(date)" >> $LOGFILE
wget -i $DOWNLOAD -P $ABLAGE
echo "Done. $(date)" >> $LOGFILE
echo "" >> $LOGFILE
echo "Adding EPG data to EPG file:" >> $LOGFILE
for f in $FILES
do
echo "Processing $f..." >> $LOGFILE
sed -i '/<\/tv>/d' $EPGFILE
sed -n -e '/ <programme/,$p' $f >> $EPGFILE
rm $f
echo "OK, left file removed" >> $LOGFILE
echo "" >> $LOGFILE
done
echo "Integrating EPG file into TV Headend..." >> $LOGFILE
echo "Done." >> $LOGFILE
cat $EPGFILE | socat - UNIX-CONNECT:/home/hts/.hts/tvheadend/epggrab/xmltv.sock
echo "" >> $LOGFILE
echo "EPG Updated successfully." >> $LOGFILE
echo "Time: $(date)" >> $LOGFILE
echo "" >> $LOGFILE
echo "Now cleaning up." >> $LOGFILE
rm $DOWNLOAD
rm $EPGFILE
rm $INDEX
Alles anzeigen