Restfulapi-Plugin

  • Du willst einen std::string in einen int konvertieren?


    Mach mal:


    Code
    1. std::string test = "4711";
    2. int i = atoi(test.c_str());
  • Strings werden in C durch doppelte Anführungszeichen eingefasst. Also " statt ' benutzen.


    Code
    1. esyslog("Flag is: %i", v);
    2. if (v == "1") return 1;


    Lars

  • Danke für die Tipps.


    Blöd nur das ich die Mails jetzt erst gesehen habe. Ich probiers morgen mal aus.

    Grüße


    Hannemann

  • Ich habe mal die 5 zur Validierung der Flags hinzugefügt und mir erlaubt, SerTimer das Feld aux hinzuzufügen. Bei JSON kommt das jetzt mit, ob das nun automatisch bei HTML und XML Ausgabe auch dabei ist, habe ich nicht getestet.


    Ihr bekommt ja wahrscheinlich eh eine Nachricht über einen Pull Request auf Github aber da ich das nicht weiß, schreib ich das hier lieber noch mal.

    Grüße


    Hannemann

  • Moin,

    Bei JSON kommt das jetzt mit, ob das nun automatisch bei HTML und XML Ausgabe auch dabei ist, habe ich nicht getestet.


    Für die XML Ausgabe braucht es noch eine Zeile:

    Code
    1. s->write(cString::sprintf(" <param name=\"aux\">%s</param>\n", StringExtension::encodeToXml(timer->Aux()).c_str()));

  • Danke für den Hinweis :)


    Ich habe die Zeile eingebaut, getestet und gepushed.

    Grüße


    Hannemann

  • Hattest Du schon mal diese Fehlermeldung?


    Code
    1. basic_string::_S_construct null not valid

    Grüße


    Hannemann

  • Ah... Ein String darf nicht NULL sein...


    Fange ich jetzt ab und übergebe in dem Fall einen Leerstring.

    Grüße


    Hannemann

  • Hallo Zusammen.
    Bin gerade auf dieses Restfulapi Plugin gestoßen. Wenn ich es richtig verstanden habe handelt es sich hierbei um eine Alternative zum SVDRP Protokoll und ermöglicht einen MultiClient Zugriff. Korrigiert mich bitte wenn ich das falsch verstanden habe.
    Was ich allerdings noch nicht verstehe ist wie ich das Plugin nutzen kann.
    Wie müsste ich beispielsweise vorgehen wenn ich die Plugins "remoteosd, remotetimers, live, usw" dazu bringen will über Restfulapi zu kommunizieren?


    Gibt es schon Patche dafür?


    Gruß Patrick

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;-) *


    vectra --- glasslike ---

  • Ok. Also abwarten ;-)
    Schade, hört sich echt gut an.

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;-) *


    vectra --- glasslike ---

  • Ok. Also abwarten ;-)


    Das könnte dann etwas länger dauern, da es das Plugin schon länger gibt und niemand etwas damit in deiner Richtung getan hat.


    Deshalb solltest du besser jetzt selbst damit anfangen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Wenn ich es könnte würde ich direkt loslegen ;-)

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;-) *


    vectra --- glasslike ---

  • Aber mal be andere Frage:


    Was kann man denn aktuell mit dem Plugin machen???

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;-) *


    vectra --- glasslike ---

  • Den Sourcen liegt eine HTML Datei bei, die beschreibt, was die API so kann.


    Hier ein Überblick:


    - EPG laden
    - EPG durchsuchen (epgsearch)
    - Aufnahmen laden/löschen
    - Schnittmarken laden/löschen, Schnitt anstossen
    - Timer laden, bearbeiten
    - OSD Inhalte laden
    - Fernbedienung
    - Searchtimer anlegen/bearbeiten


    Ich habe bestimmt irgendwas vergessen ;)

    Grüße


    Hannemann

  • hannemann : Ich finde es super, dass es immer wieder neue Leute gibt, die zu restfulapi beitragen. Saman war in letzter Zeit immer wieder aktiv am Weiter-Entwickeln, ich selbst habe leider immer zu wenig Zeit, so dass ich nur selten was dran bastele, aber immerhin habe ich schon ein paar Sachen gemacht dieses Jahr.


    Problem ist, wenn man eine Applikation entwickelt, die restfulapi benutzt, dann will man eigentlich am liebsten gar keine Bugs in restfulapi entdecken, die einen von der eigenen Applikation ablenken. Sonst hat man gleich noch eine Baustelle mehr an der Backe. Aber je mehr Leute restfulapi testen und verbessern, desto schneller wird es stabil sein und zu einem ernsthaften Ablösekandidaten für VDR Live. Wenn man sich mit restfulapi auseinandersetzt und dies verbessern will, merkt man erst, wieviel Arbeit die Kollegen in VDR Live gesteckt haben. Hut ab, dass wir sowas Gutes wie VDR Live (und Vorgänger vdradmin) überhaupt zur Verfügung haben seit Jahren!


    Ich habe vor ein paar Tagen/Wochen bei restfulapi den benötigten Speicherplatz von VDR-Aufnahmen hinzugefügt sowie den Output der cVideoDiskUsage-Klasse genutzt, damit man über restfulapi schauen kann, wieviel Platz von welcher Aufnahme belegt wird und wieviel Diskplatz noch frei ist. Darauf aufbauend habe ich mit Hilfe von jQuery und D3.js eine Treemap-Ansicht für mein Aufnahmeverzeichnis gebastelt, wo ich im Web-Browser sehen kann, welche Dinge am meisten Platz wegnehmen. Als Beispiel hänge ich mal einen (absichtlich unlesbaren) Screenshot an.



    Gruß
    hepi

  • Das nächste woran ich mich versuchen möchte, ist Aufnahmen über die Restfulapi umbenennen/verschieben zu können. Das ist für meine Anwendung ein Kernfeature, das sich im Moment nicht umsetzen lässt.


    Ich habe mir dazu mal angesehen, wie das Live Plugin das macht. Wenn ich es richtig verstanden habe, wird über cRecordingsUserCommand::InvokeCommand (oder so ähnlich, habs nicht mehr genau im Kopf) ein Shell Befehl abgesetzt, der die eigentliche Arbeit übernimmt. Vorher wird jedoch die Aufnahme mit dem alten Namen aus irgendeinem Container (Recordings <- gehört der zu VDR oder zum Live Plugin?) entfernt und anschließend diesem mit dem neuen Namen wieder hinzugefügt. Bin ich da soweit halbwegs auf der richtigen Fährte oder ist das Humbug?


    Dazu habe ich bestimmt noch tausend fragen, da ich ehrlich gesagt noch nie was mit C++ gemacht habe ;)


    Der Tree View ist ja mal genial. Die Diskusage Funktion ist aber nicht dokumentiert... Gibt es noch weitere Features, von denen ich nichts weiß oder existiert das nur auf deiner Festplatte?

    Grüße


    Hannemann

  • Allgemein: Jedes Feature ist eigentlich im VDR-Core oder in zwei Plugins schon implementiert. Man muss nur lange genug im VDR-Quellcode suchen, bis man die richtige Stelle zum "Anpacken" gefunden hat.


    Ich baue seit einem Jahr an einer Web-Applikation mit jQuery, jQuery Mobile, usw. Wenn Du Interesse hast, können wir uns mal per PN absprechen, woran wir arbeiten. Ich will meinen Quellcode erst veröffentlichen, wenn er einen gewissen Reifegrad hat. Problem ist, man fängt an zu entwickeln und denkt, man ist nach ein paar Wochen fertig. Ist aber nicht so - es zieht sich. ;-)


    Dokumentiert ist das bisher nicht, aber im git im master-Branch drin. Wenn ich mal Änderungen an restfulapi mache, halte ich die nicht zurück, sondern die sind dann gleich im Git sichtbar.


    Gruß
    hepi

  • Nur zur Info:
    Ab vdr 2.1.x (aktuell ist ja .6, keine Ahnung, wann das reingekommen ist), gibt es eine vdr-Funktion zum Umbenennen von Aufnahmen.
    Bei vdr 2.0.x muss man wie live das Verzeichnis umbenennen - ob nun über ein Shellscript oder direkt ist egal.


    So macht es der vdr 2.1.x:
    https://github.com/flensrocker…d-master/recording.h#L299
    https://github.com/flensrocker…-master/recording.c#L1222

    Code
    1. RecordingsHandler.Add(ruMove, alterName, neuerName);


    Das landet dann in einer Queue, aus der die diversen Aufnahmenverarbeitungsdinge abgearbeitet werden (schneiden, kopieren, umbenennen usw.).
    ChangeName aktualisiert dann auch automatisch die Aufnahmenliste.


    Lars.

  • Danke Lars


    Steht der RecordingsHandler im Plugin direkt zur Verfügung oder muss ich mir den noch irgendwie holen?


    hepi


    Gerne können wir uns austauschen. Wenn ich nachher zu Hause bin, kriegst Du ne PN. Da bin ich schon schwer neugierig :D

    Grüße


    Hannemann