Jump to content

EPG-API: RS schießt übers Ziel hinaus?


Recommended Posts

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 by nuts
Link to comment
  • 1 year later...

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

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

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 by KobiP
Link to comment

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

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. :whistle:

 

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

Um die App-Entwickler zu ärgern. :whistle:

 

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

Und welcher Teil ist dir jetzt unklar? Du holst dir die channel.dat vom RS und weiter gehts. :)

Edited by nuts
Link to comment

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

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 by Siox
Link to comment

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 by dgdg
Link to comment

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

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 by dgdg
Link to comment

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

PS: verkorkst sind diese nicht. Nicht so verkorkst wie die Setup.xml. Die ist durch diverse Childnodes mit Leerzeichen wirklich verkorkst.

Edited by Siox
Link to comment

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

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 by mague
Link to comment

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
×
×
  • Create New...