Prinz Posted June 2, 2010 Posted June 2, 2010 Hallo Goersch, Mh, warum vergleichst Du die Endzeit ? eine Aufnahme ist für mich durch KanalNamen und StartZeit eindeutig definiert. Prinzipiell ja, aber da aus der Timerliste immer nur die Zeit mit den Vorhalten ausgelesen werden können und der User diese Zeit modifizieren kann, verwende ich eben immer das Anfangs/Endzeit- Intervall und untersuche alle Aufnahmen, und bewerte, welche Aufnahme da in dieses Intervall am besten passt. Die Orginal-Zeiten der Aufnahme und auch die ursprünglich programmierten habe ich mir in einer extra XML-Datei gesichert. Ist alles eigentlich ein Krampf, eine feste ID wäre natürlich viel besser und würde diesen Krampf komplett beseitigen. Was hier noch "unschön" ist (im Vergleich zu MediaPortal), ist, dass die Vor- und Nachlaufzeit nicht einzeln pro Aufnahme abgefragt werden kann, sondern bereits in Start- und Endzeit verrechnet ist - somit entstehen halt neue Start- und Endzeiten wenn diese Zeiten verändert werden, ohne dass eigentlich was verändert wurde. Das hab ich aber mittlerweile hoffentlich auch im Griff. Genau, deshalb führe ich auch eine eigene Liste, denn man nicht weiß wie der User die Start- und Stop-zeiten ändert. Lars hatte das in seinem Tool so realisiert, dass die Orginal-Zeiten nur innerhalb Start- und Stop-Zeit liegen muss. Dass hatte bei mir jedoch dazu geführt, dass mehrere kurze Aufnahmen hintereinander dann in das Intervall der ersten passten und so manche Aufnahme erst gar nicht programmiert wurden und war dadurch manchmal auch abgeschnitten. Ohne eindeutige ID wird es auch bei noch so großem Aufwand Mehrdeutigkeiten geben, da man dem User nicht verbieten kann, die Anfangs-, Endzeiten und den Titel nachträglich zu modifiziern. @Lars Wäre es vielleicht doch möglich die IDs in die XML-Dateien aufzunehmen und so dieses Problem elegant aus der Welt zu schaffen? Gruß Prinz Quote
Lars_MQ Posted June 2, 2010 Posted June 2, 2010 Wäre es vielleicht doch möglich die IDs in die XML-Dateien aufzunehmen und so dieses Problem elegant aus der Welt zu schaffen? Im Recservice stellt das keinerlei problem da. Dort könnte ich das einbauen, in form einer GUID, da brauch ich mir keine sorgen um eindeutigkeit machen. Was hier noch "unschön" ist (im Vergleich zu MediaPortal), ist, dass die Vor- und Nachlaufzeit nicht einzeln pro Aufnahme abgefragt werden kann, sondern bereits in Start- und Endzeit verrechnet ist Das ist mir auch bewusst, ich wollte das auch im Service beim neuen Timerformat ändern, aber das hat sich als sehr komplex erwiesen und verursacht alle möglichen Probleme im Zusammenspiel mit tools und vor allem dem DVBViewer, weil ich solche daten dort nicht unterbringen kann, ohne die gesamte Timersteuerung des Service zu übernehmen. Und eine so grosse Änderung möchte ich jetzt nicht mehr vornehmen (für die 4.5). Quote
Goersch Posted June 3, 2010 Posted June 3, 2010 das wäre beides hilfreich - auch wenn ich dann an edlichen Stellen ändern muss - aber es würde in GMPS weniger Code und damit weniger Fehlermöglichkeiten bedeuten Quote
dgdg Posted June 4, 2010 Posted June 4, 2010 (edited) das wäre beides hilfreich - auch wenn ich dann an edlichen Stellen ändern muss - aber es würde in GMPS weniger Code und damit weniger Fehlermöglichkeiten bedeuten Lars, könntest Du bei der Gelegenheit auch gleich noch ein Flag für jeden Timereintrag übertragen, ob der Recording Service einen Konflikt wegen Überschneidungen festgestellt hat? Edited June 4, 2010 by dgdg Quote
Lars_MQ Posted June 4, 2010 Posted June 4, 2010 Gibt es doch schon längst? "Executeable" -> ausführbar und "Recording" -> nimmt grade auf. Quote
dgdg Posted June 4, 2010 Posted June 4, 2010 "Executeable" -> ausführbar und "Recording" -> nimmt grade auf. "Executeable" heisst, es gibt keine Konflikt? Da wäre ich nicht drauf gekommen. Ok, dann hat sich das erledigt. Quote
Lars_MQ Posted June 4, 2010 Posted June 4, 2010 Ich dachte "ausführbar" sagt alles aus. Ich werde mich in zukunft um präzisere Bezeichnungen bemühen. Quote
VinoRosso Posted June 5, 2010 Posted June 5, 2010 (edited) Neuerderings kann man ja die channellist vom recservice runterzuladen. gibts da nen http request dafür, analog zu: http://[user:password@]IP[:port]/api/timerlist.html[?utf8=] habs mal optimistisch mit channellist.html und channels.html probiert, aber da kommt nix bei raus Edited June 5, 2010 by VinoRosso Quote
Tjod Posted June 5, 2010 Posted June 5, 2010 Eventuell ist es eine Gute Idee die API Dokumentation ins Wiki zu verlagern, wenn die Informationen hier über das Topic verstreut sind, sind sie nicht umweltbedingt so einfach zu finden. Ich habe mal den anfang gemacht und da alles zusammen kopiert was ich gefunden habe: http://en.DVBViewer.tv/wiki/Recording_Service_API Quote
VinoRosso Posted June 5, 2010 Posted June 5, 2010 ahh spitzen idee tjod, da isses besser aufgehoben. aber theoretisch muss es doch noch viel mehr geben, für jeden view vom webinterface muss es doch auch nen api aufruf geben oder? die liste kann dann wohl nur lars vervollständigen... schade, dachte es ist mehr bekannt als nur recordings, timer, status und epg. ich wuesste nämlich nicht wie ich ohne channelliste mir die channelid berechnen könnte, um epg eines senders abzurufen. oder ich seh den wald vor lauter bäumen nicht. Quote
Tjod Posted June 8, 2010 Posted June 8, 2010 aber theoretisch muss es doch noch viel mehr geben, für jeden view vom webinterface muss es doch auch nen api aufruf geben oder?Wirklich als API glaube ich nicht.Vieles im Webinterface ist einfach mit der Zeit gewachsen. Wie man am besten an die Senderliste kommt kann ich dir leider nicht beantworten. Quote
xarko Posted June 10, 2010 Posted June 10, 2010 Neuerderings kann man ja die channellist vom recservice runterzuladen. Wie kommst du da drauf? Beziehst du dich auf den Eintrag der letzten DVBViewer-Beta? Da ist aber von der Version 1.6.0.2 die Rede, die es noch gar nicht als Download für alle Mitglieder gibt: Add: Channellist : The channel list can be downloaded from the Recording Service at the start of the DVBViewer. Needs Recording Service 1.6.0.2+. ich wuesste nämlich nicht wie ich ohne channelliste mir die channelid berechnen könnte, um epg eines senders abzurufen. Was genau hast du denn vor; wofür brauchst du das? Du könntest ja auch alle Sender komplett abfragen. Die Werte, die du für die channelid eines einzelnen Senders brauchst, findest du über die Senderliste im DVBViewer oder auslesbar aus der channel.dat; ist ja dokumentiert. Quote
VinoRosso Posted June 11, 2010 Posted June 11, 2010 Wie kommst du da drauf? Beziehst du dich auf den Eintrag der letzten DVBViewer-Beta? Da ist aber von der Version 1.6.0.2 die Rede, die es noch gar nicht als Download für alle Mitglieder gibt: ahh okay, hab mich shcon gewundert warum ich die 1.6.0.2 nirgends finde. Was genau hast du denn vor; wofür brauchst du das? Du könntest ja auch alle Sender komplett abfragen. Die Werte, die du für die channelid eines einzelnen Senders brauchst, findest du über die Senderliste im DVBViewer oder auslesbar aus der channel.dat; ist ja dokumentiert. ich würde erstmal gerne ne Senderliste anzeigen, dafür wäre die senderliste nicht schlecht Sender epg anzeigen mit nem http request, dafür brauch ich die epgchannelid, die wird berechnet aus massig zeug... wenn ich per http request an die channels.dat rankomme soll mir das auch recht sein, meines wissens geht das nicht. Quote
xarko Posted June 11, 2010 Posted June 11, 2010 Ok, wenn du den RS als (fremde entfernte) "Black Box" ansiehst auf dessen Daten du keinen direkten Zugriff hast und du alles Notwendige nur per HTTP-Request erfragen willst, gilt es abzuwarten, was Lars noch an Überraschungen zu bieten hat in der nächsten RS-Version. Quote
mague Posted June 21, 2010 Posted June 21, 2010 Gibt es eine Moeglichkeit den kompletten Status abzurufen ? url/api/status.html liefert nur einen Teil der Daten. Mich interessieren die Aufnahmeverzeichnisse und deren Belegung. Die wuerde ich gerne auswerten und als RSS feed bereitstellen. Sonst habe ich am HTPC keinen Durchblick wann eine Platte volllaeuft Quote
c-o-m-m-a-n-d-e-r Posted October 23, 2010 Posted October 23, 2010 Ich wüsste via Status gern was er gerade aufnimmt, die Dauer und den Platz. Die Infos seh ich ja im WebIF ... abber via api/status.html ist das nicht ersichtlich! Danke Quote
Tjod Posted October 23, 2010 Posted October 23, 2010 Das du unter /api/timerlist.html (Recording) sehen kannst war grade aufgenommen wird weist du? Quote
VinoRosso Posted October 25, 2010 Posted October 25, 2010 ich hab ne recordingservice epg abfrage, aber die uhrzeit bringt mich zur verzweiflung.... /api/epg.html?lvl=2&channel=68906732&start=40476.678&end=40477.678&utf8=255 start Datum: 25.10.2010 11.18 stopDatum: 26.10.2010 11.18 678 entspricht 11h und 18 minuten... in Minuten der erste Eintrag in der Antwort.xml beginnt allerdings erst um 17:00 Uhr. Was mach ich denn mit der Uhrzeit falsch? Quote
nuts Posted October 25, 2010 Posted October 25, 2010 Die Zeitangabe ist eine Fließkommazahl. Vor dem Komma ist die Angabe zu Datum und hinterm Komma die Angabe zur Uhrzeit. Datum: XX.XX.XXXX minus 30.12.1899 z.B.: 11.01.2010 minus 30.12.1899 = 40189 Tage Uhrzeit: 0-1439 (00:00 - 23:59) -> Round(Nachkommaanteil * 24 * 60) Quote
alex.ba Posted November 15, 2010 Posted November 15, 2010 Hallo Zusammen, kann mir jemand sagen ob es möglich ist über die API an das Aufnahme Verzeichnis zu kommen. Ich würde das gerne auslesen und in den Client übernehmen habe aber bis jetzt keinen passenden Befehl gefunden. Vielen Dank und Grüße Alex Quote
PoMo Posted November 21, 2010 Posted November 21, 2010 meine Sammlung wichtiger Hinweise: EPGimport au weia, was ne art Zeit zu verbrennen. die überall erwähnte URL für den EPGimport ist falsch: http://[user:password@]IP[:port]/api/cgi-bin/EPGimport so lautet sie korrekt: http://[user:password@]IP[:port]/cgi-bin/EPGimport ich kam zwar recht schnell auf die idee ohne das "api/" zu testen (cgi-bin ist meist im root), aber dummerweise in einem Browser (geht schneller wild durchzuprobieren). Dumm nur dass der Server dann mit einem code 302 (file has moved) antwortet und auf EPGimport/ weiterleitet. Der Browser fällt natürlich darauf rein, und erhält beim Versuch dieser Umleitung zu folgen einen 404 Fehler (file not found). (Dank Browser sah ich den 302 nicht und da ich am raten war habe ich dem 404 natürlich geglaubt und weiter geraten). ich habe die URL in der wiki angepasst, laut wiki muss das aber noch ein vertrauenswürdiger User bestätigen. Verwendung mit wget wer das wget Kommandozeilen-Tool nutzt um mit der DVBViewer Recording Service API zu kommunizieren, muss unbedingt den paramter --auth-no-challenge verwenden. Ohne diesen scheitert die http-Authentizierung. die man-page von wget sagt dazu ganz nett: --auth-no-challenge If this option is given, Wget will send Basic HTTP authentication information (plaintext username and password) for all requests, just like Wget 1.10.2 and prior did by default. Use of this option is not recommended, and is intended only to support some few obscure servers, which never send HTTP authentication challenges, but accept unsolicited auth info, say, in addition to form-based authentication. ich hoffe diese Informationen helfen anderen Usern nicht in die gleichen Fallen zu tappen wie ich. Quote
nuts Posted November 21, 2010 Posted November 21, 2010 Am EPG Import bin ich mit meinem EPG-Transfer Skript damals auch gescheitert - kein Wunder Danke für die Info. Quote
VinoRosso Posted December 20, 2010 Posted December 20, 2010 Gibts mittlerweile ne Möglichkeit die Sender und die Favoriten per request abzufragen? Der DVBViewer soll sie ja mittlerweile auch vom RS empfangen können, also müsste da doch etwas da sein. Quote
Goersch Posted February 19, 2011 Posted February 19, 2011 (edited) Gibts mittlerweile ne Möglichkeit die Sender und die Favoriten per request abzufragen? Der DVBViewer soll sie ja mittlerweile auch vom RS empfangen können, also müsste da doch etwas da sein. Genau danach suche ich auch gerade Damit könnte ich mein DVBViewer Interface komplett abschalten. Was ich gerne via API auslesen würde: Kanalname + EPGChannelID - also genau die Werte die man zur Aufnahmeprogrammierung via API benötigt. Edited February 19, 2011 by Goersch Quote
Mars Posted March 6, 2011 Posted March 6, 2011 (edited) Hallo, sehe ich's richtig, dass man bei jeglichen Aktionen immer nur die ID anstatt der GUID angeben kann? Letzteres wäre ja sicherer; selbst bei Prozessen die nur paar Sekunden laufen besteht ja die (wenn auch eher geringe Möglichkeit), dass man ggf. den falschen Timer ändert/löscht z.B. wenn gerade jemand im Webinterface etwas macht. Und wenn ich es richtig sehe, muss man ständig die Liste neu vom Service beziehen, anstatt z.B. mehrere Timer hintereinander weg löschen zu können. Edited March 6, 2011 by Mars Quote
Goersch Posted March 20, 2011 Posted March 20, 2011 (edited) Hallo, ich hab da ein Problem beim Zugriff auf den RecordingService, bei dem ich nicht weiterkomme. Erst mal mein Code: HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.Timeout = 5000; req.ContentType = "text/html;charset=ISO-8859-1"; HttpWebResponse res = (HttpWebResponse)req.GetResponse(); StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF7); string retval = sr.ReadToEnd(); res.Close(); So funktioniert es: - wenn ich remote auf den Server mit url="http://192.168.178.22:8089/......" zugreife, funktioniert es - wenn ich lokal auf den Server mit url="http://127.0.0.1:8089/......" zugreife, funktioniert es - wenn ich remote auf den Server mit url="http://username:password@192.168.178.22:8089/......" zugreife, funktioniert es und jetzt kommen meine Probleme: - wenn ich lokal auf den Server mit url="http://username:password@127.0.0.1:8089/......" zugreife, funktioniert es NICHT - wenn ich lokal auf den Server mit url="http://username:password@192.168.178.22:8089/......" zugreife, funktioniert es NICHT Wenn ich also lokal mit Anmeldedaten zugreifen will, erhalte ich immer die Meldung "The remote server returned an error: (401) Unauthorized" Kopiere ich die url in den Browser (lokal), klappt es ! seufz - irgendjemand eine Idee, was ich hier falsch mache ? Danke ! Georg P.S.: Ich poste das hier, da ich davon ausgehe, dass das was mit der API zu tun hat - evtl. ist das ENCODING bei mir falsch ? Edited March 20, 2011 by Goersch Quote
PoMo Posted March 20, 2011 Posted March 20, 2011 aus deinen par Beispielen leite ich mal ab dass http-authentication lokal nicht funktioniert. Vielleicht kommst du dem Fehler näher wenn du das Problem anstelle von "lokal vs remote" einmal aus der Perspektive von "Rechner A vs Recher B" betrachtest. Verbindungen: lokaler Zugriff: Rechner A -> Rechner A remote Zugriff: Rechner B -> Rechner A ich würde also mal suchen worin sich Rechner A und Rechner B unterscheiden. Ausserdem vielleicht auch testen, was passiert wenn auf Rechner B ein Recording Service läuft, und du testest, was passiert wenn: Rechner A -> Rechner B Ist nur ne Idee, aber da ich bei meinen Versuchen auch Probleme mit der http-authentication hatte, und sich rausgestellt hat, dass der webserver des recording service sich in Sachen http-authentication "obskur" verhält (nicht meine Worte ), ist die Richtung http-authentication auf Client-seite wohl einen Blick wert. um mich selbst zu zitieren: Verwendung mit wget wer das wget Kommandozeilen-Tool nutzt um mit der DVBViewer Recording Service API zu kommunizieren, muss unbedingt den paramter --auth-no-challenge verwenden. Ohne diesen scheitert die http-Authentizierung. die man-page von wget sagt dazu ganz nett: --auth-no-challenge If this option is given, Wget will send Basic HTTP authentication information (plaintext username and password) for all requests, just like Wget 1.10.2 and prior did by default. Use of this option is not recommended, and is intended only to support some few obscure servers, which never send HTTP authentication challenges, but accept unsolicited auth info, say, in addition to form-based authentication. Quote
Goersch Posted March 20, 2011 Posted March 20, 2011 (edited) Hallo PoMo, mh, ich hab noch einen rechner mit Windows 7 32-bit verfügbar - die anderen beiden (also A+B ) sind 64-bit. Werd das mal ausprobieren. Was ich noch nicht so ganz verstanden hab (ist vielleicht schon zu spät ): Hast Du deine Probleme mit wget gelöst bekommen ? Edited March 20, 2011 by Goersch Quote
PoMo Posted March 20, 2011 Posted March 20, 2011 (edited) Was ich noch nicht so ganz verstanden hab (ist vielleicht schon zu spät ): Hast Du deine Probleme mit wget gelöst bekommen ? jop, mein Problem mit wget hat sich mit dem Parameter "--auth-no-challenge" gelöst. ohne diesen Parameter hagelte es trotz korrektem user/password eine Fehlermeldung "authentication failed - bad username or password" (genaue Meldung weis ich nicht mehr) falls unklar: ich nutze wget nicht zum umgehen eines Problems, sondern nur weil ich so wenig mache, dass es auch in ein shell-skript passt [EDIT] ich habe mal etwas rumge-googelt, und bin auf das hier gestossen: string authInfo = userName + ":" + userPassword; authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); req.Headers["Authorization"] = "Basic " + authInfo; Quelle: http://blog.kowalczyk.info/article/Forcing-basic-http-authentication-for-HttpWebReq.html vielleicht klappt es ja damit (anstelle Benutzername und Passwort in die URL zu packen und zu hoffen dass diese korrekt mitgesendet werden). Ich wäre dann zwar verwundert, dass es zuvor überhaupt von einem Rechner funktionieren konnte, aber allzuviel sollte man darüber wohl nicht nachdenken . (mein erster Gedanke war, dass auf beiden Rechnern nicht die gleiche Entwicklungsumgebung-/wasauchimmer-version ist und sich hier das default-Verhalten verändert hat, aber bei Microsoft würde mich auch nicht überrachen, wenn die localhost einfach mal anders behandeln) Edited March 20, 2011 by PoMo Quote
Mars Posted March 21, 2011 Posted March 21, 2011 Die neueste Recorder-Version verwendet UTF-8, müsstest du also entsprechend einstellen. Das lasse ich jetzt aber mal aus, verwende noch die 1.6.9. Bezogen auf den Login mache ich es so (C#): using (WebClient service = new WebClient()) { // Anfrage an Service stellen, dabei Benutzerdaten verwenden service.Credentials = new NetworkCredential(API_USER, API_PASSWORD); string answer = service.DownloadString(Xyz); ... Wobei Xyz die komplette URL ohne Loginangaben aber inkl. Parameter ist. Quote
Goersch Posted March 21, 2011 Posted March 21, 2011 @Mars: tausend Danke - damit klaptt es @PoMo: Danke auch an Dich Quote
dgdg Posted March 27, 2011 Posted March 27, 2011 Gibt es eigentlich irgendwo eine aktuelle Gesamtübersicht/Beschreibung der API des Recording Service? Quote
Goersch Posted March 27, 2011 Posted March 27, 2011 Genau danach suche ich auch gerade Damit könnte ich mein DVBViewer Interface komplett abschalten. Was ich gerne via API auslesen würde: Kanalname + EPGChannelID - also genau die Werte die man zur Aufnahmeprogrammierung via API benötigt. ... will einfach noch mal die Frage wiederholen ... wäre sehr hilfreich Quote
Tjod Posted March 27, 2011 Posted March 27, 2011 Was die Web-API betrifft steht das meiste im Wiki und eine weitere Dokumentation gibt es nicht. http://en.DVBViewer.tv/wiki/Recording_Service_API Quote
Goersch Posted September 11, 2011 Posted September 11, 2011 (edited) hab da ein paar kleine Verbesserungsvorschläge für api timerlist , die mir sehr helfen würden (neben der Möglichkeit, die Channel IDs auslesen zu können...) - die Channel ID steht wie folgt in den Daten, wenn ich die api timerlist auslese <Channel ID="2359890960361473116|SAT.1"/> Besser wäre es so: <Channel ID>2359890960361473116|SAT.1</Channel ID> - was mir auch sehr helfen würde, wäre der aus DVBViewerServer.ITimerCollection bekannte Parameter "Days", damit mein Programm auch Serienaufnahmen, etc. mitbekommt. Gruß Georg Zusatz: Ups, der parameter "Days" ist da - sorry ! Edited September 11, 2011 by Goersch Quote
Prinz Posted September 11, 2011 Posted September 11, 2011 Hallo, - die Channel ID steht wie folgt in den Daten, wenn ich die api timerlist auslese <Channel ID="2359890960361473116|SAT.1"/> Besser wäre es so: <Channel ID>2359890960361473116|SAT.1</Channel ID> Warum? Bei dem einen Sache ist die "ID" als Attribut definiert, in Deinem Vorschlag "Channel ID" als Text. Das Format von Lars läßt auch für die Zukunft noch weitere Attribute zu, welche den Channel beschreiben könnten. Ich sehe hier keinen Grund dies zu ändern, vor allem da es sicherlich mittlerweile genügend Applikationen gibt, die das vorhandene Format nutzen (Auch meine ;-)). Also meine Ansicht: Bitte so lassen. Gruß Prinz Quote
Goersch Posted September 11, 2011 Posted September 11, 2011 ich habs einfach nicht geschafft, das Atrribute im XmlDocument bzw. im XmlNode zu finden - somit musste ich den XmlNode parsen ... deshalb der Vorschlag Quote
Redah Posted September 22, 2011 Posted September 22, 2011 (edited) I've created a custom Android GUI on the Recording Service machine, and packaged this to an app. The app simply opens the website on the Recording Service, and when I want to stream I modified the links so it will open the channel .TS file. Note this only works on local LAN via WiFi, but it's very nice You can see a video here: Edited September 22, 2011 by Redah Quote
dgdg Posted October 3, 2011 Posted October 3, 2011 (edited) Ich quäle mich mal wieder mit der API vom Recording Service. Timer-Einträge erstellen klappt. Aber mit dem Löschen habe ich Probleme. Ist das hier ein gültige API URL? Die Autentifizierung erfolgt über den HTTP-Header, deswegen fehlen Username und Passwort. http://127.0.0.1:80/api/timerdelete.html?id={49E1D688-4B34-4637-BD86-4D76029D7378}&delrecfile=0 Die Id habe ich aus dem Feld ID der Timerlist. Edited October 3, 2011 by dgdg Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.