Ein Blog über Ubuntu, Linux, Android und IT
EPG zu deutschen Sendern in tvtime einblenden
Dieser Beitrag wurde vor mehr als sechs Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!Bei mir ist die Zeit noch etwas stehen geblieben. Fernsehen kommt noch aus der Wand und ist analog
Daher muss ich auf schicke Dinge wie beispielsweise den elektronischen Programmführer via DVB, kurz EPG, verzichten. Dennoch gibt es Wege und Mittel das gute analoge Fernsehen noch etwas komfortabler zu gestalten.
tvtime kann EPG-Daten in das Bild einblenden, doch leider gibt es kaum kostenlose legale Quellen. TV-Sender betrachten ihre Programminfos als wertvolles Gut und lassen Seiten, die von ihren Webseiten zusammengesammelte Programminfos automatisch aufbereiten, schnell aus dem Web verbannen.
Einen legalen und kostenlosen Weg geht xmltv.info. Hier werden die Informationen laut Homepage aus dem Videotext geholt und dann als EPG aufbereitet. Um rechtlichen Problemen aus dem Weg zu gehen, werden jedoch nur die Namen und Zeiten der einzelnen Sendungen genutzt und keine Beschreibungen der Programme.

tvtime mit EPG Daten
Um xmltv.info nun mit einem Linux-System benutzen zu können gibt es ein Skript, das man erst herunterladen und entpacken muss. Zuvor muss man jedoch noch die Basis xmltv des Ganzen aus der Paketverwaltung heraus installieren.
$ sudo apt-get install xmltv-util
Anschließend kann man das Skript herunterladen und installieren.
$ wget -O /tmp/grabber-py.tar http://static.xmltv.info/grabber-py.tar $ cd /tmp $ tar -xf grabber-py.tar $ sudo mv tv_grab_de-py /usr/local/bin
Nun kann man sich daran machen tv_grab_de-py zu konfigurieren. Über
$ tv_grab_de-py --configure
stellt man ein welche Senderinformationen abgerufen werden sollen. Die Konfiguration wird dann in der Datei ~/.xmltv/tv_grab_de-py.conf abgelegt. Ab jetzt kann man die Programminfos abrufen. Der Befehl
$ tv_grab_de-py > ~/.xmltv/listings.xml
startet bspw. den Abruf und speichert die Programminformationen in der Datei ~/.xmltv/listings.xml. Damit tvtime nun die Informationen einbindet muss man einmalig
$ tvtime-configure --xmltv=~/.xmltv/listings.xml
ausführen. Von jetzt an lädt tvtime die Infos aus der listings.xml und zeigt sie auch automatisch beim Programmwechsel oder beim Klick mit der linken Maustaste in das Fernsehbild an.
Damit die Programminformationen automatisch aktualisiert werden, muss man noch einen Job für anacron erstellen. Dies geht am einfachsten mit einem Editor. Über bspw.
$ sudo gedit /etc/cron.daily/tv_grab
legt man die Datei /etc/cron.daily/tv_grab an und fügt den Inhalt
#!/bin/sh tv_grab_de-py --config-file=/home/<benutzername>/.xmltv/tv_grab_de-py.conf > /home/<benutzername>/.xmltv/listings.xml
ein. Dabei ersetzt man <benutzername> bitte mit dem eigenen Benutzernamen. Dies ist nötig, weil Anacron mit Root-Rechten ausgeführt wird. Ohne die Angabe der Pfade würde Anacron die Daten nach /root ablegen. Nun fehlt nur noch das Recht das kleine Skript auszuführen, das man via
$ sudo chmod +x /etc/cron.daily/tv_grab
setzt. Von nun an sieht man was man sieht 
Noch ein Hinweis: Die in tvtime eingetragenen Sendernamen müssen zu den durch xmltv gelieferten Namen passen. Sonst werden die Programminfos nicht angzeigt. Wahrscheinlich muss man daher die ~/.tvtime/stationlist.xml noch von Hand anpassen.
Das könnte Euch auch gefallen...
Anzeige...
| Artikel drucken | Dieser Beitrag wurde von Christoph am 2. April 2009 um 09:38 veröffentlicht und unter GNU/Linux abgelegt. Du kannst allen Antworten zu diesem Beitrag durch RSS 2.0 folgen. Du kannst eine Antwort schreiben oder einen Trackback von deiner eigenen Seite hinterlassen. |



















vor 1 Jahr
Hey! Vielen Dank für den Tipp. Das kannte ich ja gar nicht. Hatte mich mal mit nextvpg (oder wie auch immer das heisst) rumgeschlagen, konnte es aber nie wirklich zum laufen bekommen.
vor 1 Jahr
Kleiner Tip zum cronjob: Erst in eine temporäre Datei schreiben und nach erfolgreichem Grabben nach listings.xml verschieben. Das Grabben dauert oft sehr lange und wenn du während dessen Deinen Rechner runterfährst, hast Du beim nächsten Mal eine nicht zu kaputte xml-Datei.
vor 1 Jahr
Bei mir dauert das Laden der .xml Datei weniger als 15 Sekunden. Liegt wahrscheinlich daran, dass ja nur Titel und Zeiten heruntergeladen werden. Die .xml Datei ist auch nur ein paar kb groß. Von daher lohnt sich der Aufwand eigentlich nicht.
vor 1 Jahr
Super, danke für die Anleitung.
vor 1 Jahr
ich erinner mich noch schwach das zeug mal mit nxtvepg aus der austastlücke gezogen zu haben. ärgerlich war dabei aber, dass nur noch kabel1 die daten übertrug. so ists natürlich netter.
vor 1 Jahr
Netter Tipp, jetzt müsste ich nur noch herausfinden, warum die Zeiten nicht stimmen. Sämtliche Sendungsdaten sind eine Stunde verschoben. Es scheint fast so, als würde die Sommerzeit nicht berüchsichtigt.
~jug
vor 1 Jahr
@Jug
Grummel… jetzt merke ich, dass auch ich hier das Problem habe. Schau mal ins Forum von xmltv, da wird darüber diskutiert. Siehe http://forum.xmltv.info/viewtopic.php?f=2&t=10
vor 1 Jahr
Mein vorläufiger Würgaround, die Zeitzone mit sed im Cronjob anpassen:
tv_grab_de-py –config-file=/home/ … /.xmltv/tv_grab_de-py.conf | sed “s/+0100/+0200/g” > /home/ … /.xmltv/listings.xml
vor 1 Jahr
@jug
)
Vielen Dank für den Tipp, das behebt das Problem (bis zur nächsten Zeitumstellung
vor 1 Jahr
Kann es sein das xmltv zur zeit nicht geht? bei mir steht bei jedem sender “Keine Programminformation verfügbar”.
Oder ist das eine Einstellung bei mir?
Gruß
nabo
vor 1 Jahr
Nabo, sieht leider so aus. Wenn man einfach nur
aufruft, dann kommen nur die Sendernamen rein, aber keine Sendungen… Ich schau mir das mal die nächsten Tage an…
vor 1 Jahr
Super danke!
Dachte schon ich mach was falsch…
Gruß
Nabo
vor 1 Jahr
Ein kleiner Hinweis zum Problem mit der Zeitzone:
Auf http://xmltv.info/xw/default/wiki/Grabber gibt es eine verbesserte Grabber-Version. Sie wurde um die Funktion erweitert einen Offset auf den Start- und Endezeitpunkt jeder Sendung hinzuzuaddieren. Durch die Variable ”’HOUR_OFFSET”’ am Anfang des Grabbers kann eingestellt werden, wie viele Stunden zum Start und Ende hinzugezählt werden sollen.
Leider gibt es noch keine aktualisierten EPG-Daten auf http://static.xmltv.info/zeitschrift.
Gruss,
atalod
vor 1 Jahr
Gibt es denn, da es ja immer noch nicht funktioniert, eine andere Möglichkeit EPG Daten einzublenden? Außer die hier Beschriebende und mit nxtvepg?
Gruß
Nabo
vor 12 Monaten
Hi Nabo,
tvtime kann die Daten von http://www.tvprog.org/tv.xml lesen und darstellen.
Konfigurationsbeispiel:
* tv.xml in /home/{user}/.xmltv kopieren
* tvtime.xml anpassen:
option name=”XMLTVFile” value=”/home/{user}/.xmltv/tv.xml”
option name=”XMLTVLanguage” value=”de”
Gruss,
atalod
vor 11 Monaten
leider kann ich die seite nicht aufrufen… “Verbindung fehlgeschlagen”
Ist das nur temporär?
Gruß
nabo
vor 11 Monaten
Hallo Nabo, anscheinend hatte xmltv.info ein paar Probleme mit der Hardware…
http://forum.xmltv.info/pyforum/default/index
Der Link oben ins Forum ist leider futsch, der Beitrag gibt es nicht mehr. Schade…
vor 11 Monaten
Danke! Werde ich mir gleich mal näher angucken.
vor 11 Monaten
Hi,
also bei mir funktioniert das grabber skript so nicht richtig.
Die XML von http://www.tvprog.org/tv.xml lässt sich aber genauso gut auch durch das tv_grab_de-py Skript laden.
am besten durch das verbesserte von http://xmltv.info/xw/default/wiki/Grabber
mit HOUR_OFFSET=-2 für Mitteleuropäische Sommerzeit
Naja einige Anpassungen des Skripts sind notwendig:
1. natürlich die url ersetzen Zeile 29
SOURCES = (
'http://www.tvprog.org/tv.xml',
)
2. da sie nich gezippt ist lassen wir das zippen einfach weg:
doDownload() brauch nur noch res.read() zurückgeben (Zeile 72).
3. wenn man jetzt –configure durchführt kommt ein Fehler wegen UTF8 in Zeile 228, die Zeile ersetzen durch:
use = raw_input('Use channel %s (%s)? [y/N]' % (channel[1].encode( "utf-8" ), channel[0].encode( "utf-8" )))4. dann kommen nochmal Fehler wegen einem nicht existenten Attribut group oder so. (im Ernst keine Ahnung warum aber wenn man die Variablen einfach weglöscht macht das nix)
So das is meine kleine Lösung. Sicher nicht unbedingt ausgefeilt (siehe Punkt 4) aber es funktioniert.
Ich habe jetzt EPG Informationen mit der richtigen Uhrzeit
Vielen Dank für die Anleitung und die Hinweise aus den Kommentaren.
vor 11 Monaten
super gleich mal testen
Danke Stefan
vor 11 Monaten
Ich nochmal…
Stefan könntest du bitte einen Quelltext irgendwo pasten… die Änderung klappen bei mir nicht ganz…
Danke.
Gruß
Nabo
vor 11 Monaten
Hallo Stefan,
Danke für Deine Lösung, Klasse! Könntest Du Deine gepatchte Version zur Verfügung stellen (z.B. über http://freetexthost.com/ )? Vielleicht bin ich zu blöd dafür. Hab’s leider nicht hinbekommen, das tv_grab_de-py Skript anzupassen.
Würde mich darüber sehr freuen.
Klappt es bei Dir, NABO?
Gruss,
atalod
vor 11 Monaten
Habe wohl doch noch etwas vergessen.
Ich vermute mal es liegt an der doDownload Funktion.
hier nochmal komplett:
def doDownload(source):
host = urlparse(source)[1]
url = urlparse(source)[2]
log.info(‘Downloading data from %s…’ % host)
h = httplib.HTTPConnection(host)
headers = {
‘User-Agent’: ‘%s %s’ % (NAME, VERSION),
‘Accept-encoding’: ‘xml’,
}
h.request(‘GET’, url, headers=headers)
res = h.getresponse()
if res.status != 200:
return False
log.info(‘Done’)
return res.read()
vor 11 Monaten
ok habs da mal hochgeladen.
(danke für Tipp)
http://freetexthost.com/j6r0rr3w0e
was ich vorher noch weggelassen habe:
das Skript ersetzt bei mir das vom Artikel und ich nutze
den selben anacron job.
man muss nochmal
tv_grab_de-py –config
ausführen
Die Sendernamen in der XML von tvprog.org sind anders also mussten die ebenfalls angepasst werden.
vor 11 Monaten
Leider geht es immer noch nicht… er findet immer wieder fehler und wenn ich diesen beheben konnte, kommt ein neuer…
Auch dein gehostetes geht nicht.
Dort kommt ein:
File “/home/nabo/bin/tttttv”, line 42
try:
^
IndentationError: expected an indented block
Dann hab ich noch probiert die Änderungen einfach bei mir zu übertragen, dort kommt dann allerdings:
Traceback (most recent call last):
File “/home/nabo/bin/ttv_grab_de-py”, line 263, in
doc = ElementTree.parse(StringIO(text)).getroot()
File “”, line 45, in parse
File “”, line 32, in parse
SyntaxError: not well-formed (invalid token): line 1, column 0
Ich vermute mal deine Version geht nicht, weil nichts eingerückt ist.
Gruß
nabo
vor 11 Monaten
Nachtrag:
Paste es vielleicht einfach mal bei paste.ubuntuusers.de
ich hab mal meins gepastet: http://paste.ubuntuusers.de/396464/
Gruß
nabo
vor 11 Monaten
hi,
das mit dem einrücken habe ich nicht bedacht.
python eben.
bin gerade nicht zu hause, werde es heute abend noch mal dort
posten.
das einzige was ich bei deiner version als unterschied erkennen kann ist der header beim download:
zeile 61: aus ‘gzip’ habe ich in ‘xml’ geändert.
das hatte bei mir einen Fehler behoben.
ich weiss aber wirklich nicht ob es daran liegt.
kenne mich auch nicht so gut mit python aus.
cu
stefan
vor 11 Monaten
Das hört sich doch super an, bei mir ist nämlich schon wieder ein Fehler -.-
Traceback (most recent call last):
File “/home/nabo/bin/ttv_grab_de-py”, line 285, in
time.strptime(start_time, ‘%Y%m%d%H%M%S’)
OverflowError: mktime argument out of range
Aber mal sehen ob deine Version dann funktioniert.
gruß
nabo
vor 11 Monaten
http://paste.ubuntuusers.de/396468/
hier eine nochmals gepatchte version.
bei mir kam der Fehler nie.
Grund war die Zeitangabe.
in der tv.xml ist nicht nur das programm für heute
es sind so gar einträge für das Jahr 2038 drin ????
naja eingefügt habe ich einfach eine Abfrage in Zeile 289, die prüft ob die Startzeit im Jahr 2010 liegt. Dann bricht er ab.
also muss man nächstes Jahr mal ändern.
komischerweise hat mein Rechner zu Hause das verkraftet, kann das am 64Bit Ubuntu liegen,
hier habe ich gerade ein 32Bit debian und hatte den selben Fehler wie du.
grüße
stefan
vor 11 Monaten
autsch mein Fehler:
in zeile 283 muss das print weg
war zum testen.
und nochmal:
http://paste.ubuntuusers.de/396469/
vor 11 Monaten
1000 Danke Stefan!
Es funktioniert.
gruß
nabo
vor 11 Monaten
Hi stefan! Auch von mir ein dickes Dankeschön. Das tut nun auch wieder bei mir.
vor 10 Monaten
Mensch, ich bin begeistert. Es läuft..
Danke, Stefan!
vor 9 Monaten
Hallo,
Ich benutze das modifizierte Skript von Stefan mit Mythtv. Das läuft eigentlich auch ganz gut. Allerdings habe ich ein Problem Aufnahmen mit den EPG Daten zu händeln. In der “title” Zeile ist immer der Wochentag der Sendung angegeben. Dieser ändert sich am Tag der Sendung auf “Heute”, also z.B. von Donnerstag auf Heute. Dadurch erkennt Mythtv die Sendung nicht mehr, weil ja der Titel verändert wurde und nimmt nicht auf.
Leider kann ich kein Python um mich dem Problem anzunehmen. Im Grabber Code habe ich auch nichts in Richtung “title” gefunden. Vielleicht kann mir jemand von euch ein kleines Workaround zukommen lassen, um die Infos in der Klammer beim Titel auszublenden. Ich wäre sehr dankbar
.
Gruß, Ben
vor 8 Monaten
http://paste.ubuntuusers.de/397098/
hier hab mal das script verändert.
bin auch kein python-profi aber so sollte funktionierts bei mir.
Die Änderung befindet sich in Zeile 309-313
die schleife durchläuft alle child elements.
und bearbeitet dann den Title (subelement.text)
ABER:
Der Titel wird einfach an der ersten ‘(‘ zerschnitten.
(siehe stringfunktion split)
Also Vorsicht wenn der Titel wirklich eine Klammer enthält bzw. enthalten soll. Falls du es anders machen willst -> jetzt weisst du wo der Titel ist
Viel Spass damit
stefan
vor 8 Monaten
Danke für die Anpassungen im Skript. Nach den Beschreibungen hier ist es genau das, wonach ich suche. Leider funktioniert es bei mir nicht.
Kann es sein, dass das daran liegt, dass ich einen Proxy Server benutze?
Ich habe im Code keinen Hinweis auf dergleichen gesehen und weiß nicht ob Python HTTP_PROXY ausliest oder nicht.
Vielleicht wisst ihr das ja zufällig. Ich würde mich über eine Antwort freuen.
schönen Sonntag noch!
Paul
vor 8 Monaten
Hi,
das sollte eigentlich keine probleme machen.
ich benutze auch einen proxy.
und bei mir gehts.
kommt bei dir irgendwo ein fehler?
hast du alles genauso gemacht wie chris es beschrieben aht?
grüße
stefan