nuts Posted January 11, 2010 Share Posted January 11, 2010 (edited) Hey, wie hier beschrieben lässt sich das EPG der einzelnen Sender über einen http Aufruf abfragen. http://www.DVBViewer.info/forum/index.php?...mp;#entry268968 An dieser Stelle vielleicht eine kurze Erläuterung des Befehls: /epg.html?lvl=2[&ch={epgchannelID}][&start={floatDateTime}][&end={floatDateTime}] {epgchannelID} = (TunerType + 1)*2^48 + NID*2^32 + TID*2^16 + SID (s. Link) {floatDateTime} = Differenz in Tagen zwischen dem gewünschten Datum und dem Delphi-Urknall (30.12.1899) d.h. für heute den 11.01.2010 ergäbe das dann: 11.01.2010 minus 30.12.1899 = 40189 Tage Die Zeit muss auf den Tag umgerechnet werden - 11.01.2010 12:00 ergibt: {floatDateTime} = 40189.05 Nun haben wir alle Daten und können die HTTP-Anfrage starten. z.B. folgende Eingabe im Browser (IP und Port natürlich anpassen): http://192.168.1.103:8000/api/epg.html?lvl=2&channel=563521184137232&start=40189.05&end=40190.05 edit \ s. Post von Lars ->EPGChannelID ist hier für den Fox-Channel Als Ergebnis bekommt man jedoch nicht wie erwartet alle EPG Daten für den Fox-Channel im angegebenen Zeitfenster, sondern auch noch zahlreiche Daten anderer Sender (erkenne kein Muster). Ganz zum Schluss kommt noch eine Fehlermeldung: Im Textinhalt wurde ein ungültiges Zeichen gefunden. Fehler beim Bearbeiten der Ressource 'http://192.168.1.103:8000/api/ep... - ="#" onclick="return false" onfocus="h()" class="b">- <titles> <DIV Wäre super wenn das jemand mal bei sich testen könnte. Gruß nuts Edited January 11, 2010 by nuts Link to comment
Lars_MQ Posted January 11, 2010 Share Posted January 11, 2010 Mein fehler. Ich habs im ursprungspost schon korrigiert. Es muss "channel=" anstatt "ch=" heissen. Sorry! Link to comment
nuts Posted January 11, 2010 Author Share Posted January 11, 2010 Funktioniert Somit steht das Eurosport HD -> Eurosport EPG Transferskript kurz vor der Fertigstellung. Link to comment
nuts Posted January 11, 2010 Author Share Posted January 11, 2010 edit \ Hm naja schwierig schwierig. Die Daten werden geladen, die EPGChannelID geändert, nur wie genau werden die Daten wieder gesetzt? "http://192.168.1.103:8000/api/cgi-bin/EPGimport" Hinter diesen Befehl? Oder die .xml abspeichern und den Pfad angeben. Mit den Doku's stehe ich etwas auf Kriegsfuß Link to comment
Lars_MQ Posted January 11, 2010 Share Posted January 11, 2010 Das muss ein HTTP-POST an diese adresse sein. Link to comment
nuts Posted January 11, 2010 Author Share Posted January 11, 2010 Hm stimmt, steht ja auch in der Doku Link to comment
KobiP Posted November 17, 2011 Share Posted November 17, 2011 Hi! Bei mir geht die EPG-API gar nicht. Als URL habe ich 192.168.0.12:8090/api/epg.html?lvl=2&channel=1087008206&start=40865,05&end=40866,05 Die Channel ID ist die von ZDF HD. Von der API bekomme ich im Browser folgendes zurück: <!-- by DVBViewer Recording service --><epg Ver="1"/> In meiner Android App bekomme ich als Antwort HTTP/1.1 200 OK Wenn ich die Timerliste abrufe passt alles, auch Timer erstellen oder editieren kann ich. Status und Favoritenliste kann ich auch auslesen. Nur der EPG streikt. Das Datum sollte morgen sein. Im EPG ist auch garantiert was drin. Was mach ich verkehrt? Gibts Tipps wo ich das suchen beginnen kann? Grüße! KobiP Link to comment
Lars_MQ Posted November 17, 2011 Share Posted November 17, 2011 Die Sender EPG ID scheint nicht richtig zu sein. Link to comment
Lars_MQ Posted November 17, 2011 Share Posted November 17, 2011 127.0.0.1/api/epg.html?lvl=2&channel=562954314656614 Ist beim mir das ZDF HD nach dieser formel: http://en.DVBViewer....Service_API#EPG Link to comment
KobiP Posted November 18, 2011 Share Posted November 18, 2011 Ach so, die EPG ID ist eine andere als die Channel ID. Das habe ich missverstanden. Jetzt weiß ich aber nicht wie meine Android-App die EPG-ID berechnen soll. Woher soll sie die ganzen Infos bekommen? Das kann ja nur mit Infos arbeiten die ich über die API auslesen kann. SID = Service PID TunerType: 0=Cable 1=Satelite 2=Terrestial 3=ATSC Diese zwei Infos kann man ja noch irgendwie aus den Channel IDs auslesen. Aber woher bekomm ich die anderen zwei Infos? TID = Stream ID NID = Network ID Grüße! Link to comment
Lars_MQ Posted November 18, 2011 Share Posted November 18, 2011 Hmm im Moment lautet die Antwort, Du musst sie vorher schon kennen... Da werde ich mir mal was überlegen müssen... Link to comment
nuts Posted November 18, 2011 Author Share Posted November 18, 2011 Die komplette Senderliste zu holen und aufzubereiten ist für so eine Andriod-App nicht machbar? Link to comment
KobiP Posted November 18, 2011 Share Posted November 18, 2011 (edited) Schon, aber das wollte ich vermeiden. Ist doch ne Menge Arbeit das ding einzulesen. Und diese muss auch erst mal sinvoll ausgewertet und dargestellt werden. Nur damit ich an die nötigen IDs komme. Das geht mit der Favorites.xml natürlich deutlich einfacher Außerdem hat die Channels.dat bei mir 350KB während die Favourites nur wenige KB hat. Für mobile Plattformen nicht unerheblich aber in diesem Fall nicht entscheidend. Warum benötigt es eigentlich eine eigene EPG ID? Der Recording Service hat doch bereits alle Informationen die er braucht, und die Sender ID ist ja eindeutig. Grüße Edited November 18, 2011 by KobiP Link to comment
KobiP Posted November 18, 2011 Share Posted November 18, 2011 OK ich weiß jetzt wie ich das Problem umschiffen kann. In der iPhone Weboberfläche finde ich unter der URL /iphone/channellist.html?aktion=channellist&group= im Quelltext alles was ich brauche. Und statt der Favorites.xml parse ich halt den Quelltext der Weboberfläche. Für mich ist das deutlich einfacher als die Channels.dat zu verstehen. Eine einfachere Lösung via API wäre natürlich von Vorteil Grüße! Link to comment
nuts Posted November 18, 2011 Author Share Posted November 18, 2011 Warum benötigt es eigentlich eine eigene EPG ID? Der Recording Service hat doch bereits alle Informationen die er braucht, und die Sender ID ist ja eindeutig. Um die App-Entwickler zu ärgern. Ich kann nicht abschätzen ob die Ressourcen von einem Mobilen Andriod-Gerät ausreichen um die komplette Senderliste zu verarbeiten, aber es wäre so oder so schade wenn sich die App nur auf Favoriten beschränkt. Viele arbeiten nämlich mit einer gut sortierten Senderliste! Stehen bei dir alle Sender auch in der Favoritenliste? Und der Größenunterschied ist so dramtisch? Link to comment
VinoRosso Posted November 18, 2011 Share Posted November 18, 2011 Um die App-Entwickler zu ärgern. Die Vermutung hab ich au schon lange! Ich kann nicht abschätzen ob die Ressourcen von einem Mobilen Andriod-Gerät ausreichen um die komplette Senderliste zu verarbeiten, aber es wäre so oder so schade wenn sich die App nur auf Favoriten beschränkt. Viele arbeiten nämlich mit einer gut sortierten Senderliste! Die Ressourcen sind total unproblematisch.... Problematisch ist nur die api Link to comment
nuts Posted November 18, 2011 Author Share Posted November 18, 2011 (edited) Und welcher Teil ist dir jetzt unklar? Du holst dir die channel.dat vom RS und weiter gehts. Edited November 18, 2011 by nuts Link to comment
KobiP Posted November 18, 2011 Share Posted November 18, 2011 Ne die Ressourcen sind nicht das wirkliche problem. Das Problem ist das ich keine Ahnung habe wie ich die channels.dat in Java behandeln soll. Dafür reichen meine 2 Wochen Javaerfahrung nicht aus... Da hilft mir auch die Erklährung aus dem Downloadbereich nicht weiter, es hapert an den Grundlagen. Im moment arbeite ich am Workarround mit dem auslesen der iPhone Oberfläche, aber die Perfekte Lösung währe natürlich die Channels.dat... Grüße! Link to comment
Siox Posted November 19, 2011 Share Posted November 19, 2011 (edited) Naja du musst die EpgID erstmal ausrechnen. Am besten du exportierst mal die Channels.dat in das INI Format. Hab ich für Astra 19,2 schonmal für dich gemacht. Ingesamt sind 1301 Sender erfasst. SID=28106 StreamID=1101 NetworkID=1 Sind die relevanten Daten zur Berechnung der EpgID Die EpgID lässt sich nun ausrechnen. Zusammen mit der INI kannst du dir einen Überblick verschaffen. Heißt Sender zur EpgID einordnen. Dabei kannst du die channels.dat in Zukunft einfach ignorieren und EPG-API + INI benutzen. Jetzt sollte es langsam bei dir Klick machen. Edited November 19, 2011 by Siox Link to comment
dgdg Posted November 19, 2011 Share Posted November 19, 2011 (edited) Ne die Ressourcen sind nicht das wirkliche problem. Das Problem ist das ich keine Ahnung habe wie ich die channels.dat in Java behandeln soll. Dafür reichen meine 2 Wochen Javaerfahrung nicht aus... Da hilft mir auch die Erklährung aus dem Downloadbereich nicht weiter, es hapert an den Grundlagen. Im moment arbeite ich am Workarround mit dem auslesen der iPhone Oberfläche, aber die Perfekte Lösung währe natürlich die Channels.dat... Grüße! Hier hatte ich doch schon was zur channels.dat geschrieben. Im Anhang ein kleines Actionscript-Programm, das die channels.dat ausliest (quick'n dirty!). Ein paar Zeilen geändert und die channels.dat wird statt aus einer Datei von der API geholt. Ich habe das letzte Woche mal geschrieben, um auszuprobieren, ob das grundsätzlich funktioniert. Das hat mich keine zwei Stunden gekostet. Und das in Java umzuwandeln, sollte auch keine große Sache sein. Problematisch ist eben, dass das Holen der channels.dat keine dokumentiert Funktion des Recording Service ist. Edited November 19, 2011 by dgdg Link to comment
Siox Posted November 20, 2011 Share Posted November 20, 2011 Wieso hast du den Code nicht kommentiert. Das ist nichts was man gebrauchen könnte. Außer ich bohre ein Loch in deinen Kopf und lese die Informationen aus. Link to comment
nuts Posted November 20, 2011 Author Share Posted November 20, 2011 Schau dir doch dazu mal die Doku an. Und dann an den Bytes entlang hangeln. P.S. Klar wäre ein "verständlicheres" Format schön! An der Kanalliste hängt sehr viel und das Thema ist echt komplex. Um das umfassend beurteilen zu können sind neben der Programmierung auch noch jede Menge Kentnisse im DVB Bereich erforderlich. Mal eben schnell geändert ist das mit Sicherheit nicht. Link to comment
dgdg Posted November 20, 2011 Share Posted November 20, 2011 (edited) Wieso hast du den Code nicht kommentiert. Das ist nichts was man gebrauchen könnte. Außer ich bohre ein Loch in deinen Kopf und lese die Informationen aus. Nicht rummosern, sondern lesen! ;-) Im Downloadbereich gibt es die vollständige Berschreibung des channels.dat Formates. In dem Thread, den ich oben verlinkt habe, hatte ich auch schon darauf hingewiesen. Warum soll ich das im Code nochmal kommentieren? Ausserdem steht doch dabei quick'n dirty. Ich habe das nicht gemacht, damit jemand anderes etwas damit anfangen kann. ;-) Und ich habe das nur gepostet, um zu zeigen, wie einfach es ist, die channels.dat zu lesen. Das war weniger Aufwand als die verkorksten XML-Dateien vom Recording Service. Edited November 20, 2011 by dgdg Link to comment
Siox Posted November 20, 2011 Share Posted November 20, 2011 Ja, das gute alte Quick'n Dirty :-) Sorry das ich dich so vollgemeckert habe. Ich habe letztens alte Javaprojekte gefunden, wo ich schon 4 Jahre nicht mehr dran programmiert habe. Sie funktionieren noch, aber ich kann den Code nicht mehr genau lesen. Weil ich damals eben Quick'n dirty programmiert habe. Jetzt ärgere ich mich, weil ich meine Gedanken nicht mehr nach voll ziehen kann. Ich reagiere da allergisch. Aber vielleicht kann ich deinen Code nach VB protieren und so schonmal eine Grundbasis schaffen. Link to comment
Siox Posted November 20, 2011 Share Posted November 20, 2011 (edited) PS: verkorkst sind diese nicht. Nicht so verkorkst wie die Setup.xml. Die ist durch diverse Childnodes mit Leerzeichen wirklich verkorkst. Edited November 20, 2011 by Siox Link to comment
nuts Posted November 20, 2011 Author Share Posted November 20, 2011 Wo denn? Ist alles XML konform soweit ich das jetzt überblickt habe. Link to comment
Siox Posted November 20, 2011 Share Posted November 20, 2011 Ja wieder werden wir eines Besseren belehrt. Ich hatte doch echt vergessen, das Attribute einfach so vergeben werden dürfen. Nach dem ich meinen VB Code angepasst habe, kann ich das nur bestätigen. :-) Link to comment
mague Posted November 22, 2011 Share Posted November 22, 2011 (edited) Ne die Ressourcen sind nicht das wirkliche problem. Das Problem ist das ich keine Ahnung habe wie ich die channels.dat in Java behandeln soll. Dafür reichen meine 2 Wochen Javaerfahrung nicht aus... Da hilft mir auch die Erklährung aus dem Downloadbereich nicht weiter, es hapert an den Grundlagen. Im moment arbeite ich am Workarround mit dem auslesen der iPhone Oberfläche, aber die Perfekte Lösung währe natürlich die Channels.dat... Grüße! Der workaround ist besser imho. Das dat Format umrechnen wurde ich nicht. Lieber den workaround und, optional, diese Daten mit den Favoriten abgleichen. Dann wird die Kanalliste der app deutliche kuerzer und uebersichtlicher. Besonderst wenn du die Kategorienordner der Favotien mit uebernimmst. Ohne das brauch es unbeding eine Suchfunktion welche mehr als einen Treffer liefern kann und deutlich macht von welchem Anbieter der gefundenen Sender ist. Wobei Suchen auf Android eher aetzend ist. Edited November 22, 2011 by mague Link to comment
KobiP Posted November 22, 2011 Share Posted November 22, 2011 Der workaround ist besser imho. Das dat Format umrechnen wurde ich nicht. Lieber den workaround und, optional, diese Daten mit den Favoriten abgleichen. Dann wird die Kanalliste der app deutliche kuerzer und uebersichtlicher. Besonderst wenn du die Kategorienordner der Favotien mit uebernimmst. Ohne das brauch es unbeding eine Suchfunktion welche mehr als einen Treffer liefern kann und deutlich macht von welchem Anbieter der gefundenen Sender ist. Wobei Suchen auf Android eher aetzend ist. Leider geht es nicht so einfach Mit dem Workarround habe ich die SenderID nicht um Timer zu programmieren. Im moment ist es so: EPG bedeutet auslesen der Channels.dat über den Umweg der iPhone-Weboberfläche, Timer über das verarbeiten der Favorites.XML via API. Bei beiden kann ich die Service ID rausrechnen um sie zu vergleichen, aber Timer von Kanälen zu erstellen die nicht in der Channels.dat sind kann ich nicht. Hilft wohl nix. Grüße! Link to comment
Recommended Posts