Posts by rbrt

    uh, sorry. Da hat sich einges im Code geändert. Wäre mir sicher auch aufgefallen, wenn ich mal etwas gelöscht hätte. ^^

    Der Absturz passierte, bevor der Löschbefehl zum VDR abgesetzt werden konnte. Es wurde also keine andere Aufnahme versehentlich gelöscht.


    Funktioniert jetzt wieder mit der Version 0.2.3. Wie gewohnt hier herunterladen


    Nutzt jemand auch die Möglichkeit, Timer und Suchtimer anzulegen bzw. zu ändern? Bei den vielen Optionen war es mir nicht möglich alles auf Korrektheit zu überprüfen. Besonders die vielen Einstellungen bei "Vermeide Wiederholungen" sind beinahe unüberschaubar. Ich selber nutze ja nur die einfachen Dinge wie Titel und Kanal/Kanalgruppe. Bei der Wiederholung auch meist nur den Titel. Vielleicht gibt es einen, der das Epgsearch-Plugin etwas komplexer nutzt.

    Das ist ja das irreführende. Trägt man hier 90 ein, übernimmt es live und im Hintergrund das Epgsearch-Plugin. im OSD erscheint bei Dauer dann als Eintrag 00:90. Keine Ahnung, wie das Plugin darauf reagiert.

    Über das OSD ist es nur möglich, Werte im Zeitformat hh:mm einzutragen. Trägt man hier jetzt z.B. 01:30 für die 90 Minuten ein, erscheint in live als Dauer 130 Minuten.

    Bei den Suchtimern kann bekanntlich eine Dauer definiert werden. Laut Beschreibung von Epgsearch-Plugin wird die Dauer im Format HHMM angegeben, wie bei den Stop- und Startzeiten. Eine Dauer von 90 Minuten wäre dann im Format 0130. Das Live-Plugin interpretiert den Wert anscheinend als Minuten und zeigt in dem Beispiel 130 Minuten an.


    Mir ist das nur aufgefallen, weil ich mich mit dem Epgsearch-plugin und svdrp etwas beschäftigt habe. Die Onlinedoku zum Plugin ist auch nicht eindeutig. Hier steht auch "duration in minutes", wogegen in der man-page es heißt: "Länge der Sendung in HHMM".


    Ist das bekannt?

    PS: das anlegen/editieren eines neuen VDRs ist immer noch fehlerhaft. Ich kann immer noch mehrere VDR mit der gleichen IP Adresse anlegen.

    Die Liste mit den ganzen VDRs habe ich jetzt radikal vereinfacht. Das Feld <name> existiert nicht mehr und es kann nur noch einen Eintrag pro VDR geben. Mir fällt auch kein Grund ein, warum man mehrere Einträge zu einem Rechner haben sollte. Damit ist das Problem soweit gelöst (hoffe ich doch).


    Bei den Aufnahmen gibt es einen neuen Button zum Abspielen einer Aufnahme auf dem VDR. Damit man nicht versehentlich auf einem headless-VDR etwas abspielt gibt es vorher noch eine Sicherheitsabfrage.

    Außerdem gibt es jetzt noch die Möglichkeit, nur neue Aufnahmen anzuzeigen. Dafür existiert in der Fußzeile eine Checkbox mit dem namen "nur Neue".


    Das update trägt die Versionsnummer 0.2.2 und kann bei Github heruntergeladen werden.

    Die Beschreibung für eine leere Timerlsite habe ich geändert, so daß es nicht mehr aussieht wie beim Screenshot von jojo61 als gäbe es einen Timer. Die neue Version 0.2.1 kann bei github heruntergeladen werde. Am Funktionsumfang hat sich nichts geändert.


    Noch eine kurze Erklärung wie das mit den Timern abläuft und was es mit dem "fehlendem Ereignis" auf sich hat. Ein Timer wird von der App in zwei Schritten erstellt.


    1. Schritt:

    Nach drücken (oder besser gesagt tippen) auf "Speichern" werden die Daten (Datum, Kanal, Start-,Stopzeit, usw) über die RestfulApi zum VDR geschickt. Als Antwort kommen entweder die Timerdaten zurück oder eine Fehlermeldung. Im Logfile auf dem VDR sieht das z.B. so aus:

    Code
    1. Feb 16 14:48:23 vdrserv3 vdr: [13619] restfulapi: JSON parsed successfully: yes
    2. Feb 16 14:48:23 vdrserv3 vdr: [13619] restfulapi: /0:S19.2E-1-1019-10301:2022-02-16:1448:1548:50:99:test:/
    3. Feb 16 14:48:23 vdrserv3 vdr: [13619] restfulapi: JSON parsed successfully: yes
    4. Feb 16 14:48:23 vdrserv3 vdr: [13619] timer 0 (1 1448-1548 'test') set to event Mi. 16.02.2022 15:10-15:13 (VPS: 16.02. 15:10) 'Tagesschau'
    5. Feb 16 14:48:23 vdrserv3 vdr: [13619] restfulapi: timer created!

    Die App sollte jetzt den Timer mit den Aufnahmedaten (Datum, Kanal, Dateiname usw.) anzeigen. So wie es auch im OSD der Fall ist. Allerdings erhalte ich kein passendes Ereignis zum Timer zurück. Die RestfulApi liefert hier nichts dazu (event_id = -1 in dem Fall). Deswegen steht überall "fehlendes Ereignis". Dann kommt der 2. Schritt


    2.Schritt:

    Wurde der Timer erfolgreich erstellt ruft die App nochmals den Timer ab, um an die event_id zu gelangen. Hat sie einen positiven Wert ruft die App nochmals über die API das Ereignis ab und aktualisiert dann die Timerliste. Jetzt sollte auch das Ereignis auftauchen, ansonsten bleibt es bei "fehlendes Ereignis".


    Warum steht bei Programmstart bei allen Timern "fehlendes Ereignis"?

    Der Grund ist ganz einfach: Die Ereignisse können nur Timer für Timer abgerufen werden. Um nicht ständig den VDR zu belasten habe ich darauf verzichtet, die Timerliste bei Aufruf ständig zu aktualisieren und stattdessen den Button "Aktualisieren" eingefügt.

    Es muss also ein lokales Problem auf der App sein das er den Json return nicht richtig auswertet.

    Vielleicht kommen wir mit den obigen Infos dem Problem auf die Spur, warum das bei dir mit den Timern nicht so gut funktioniert.

    Das Bild zeigt, daß es keinen Timer gibt. Da muß ich noch die Anzeige verbessern.


    Ich kann es leider nicht nachvollziehen. Wenn ich einen Timer anlege klappt das immer, egal ob direkt aus dem EPG heraus oder über die Timerliste mit "Neuen Timer anlegen". Bei einem Fehler kommt normalerweise von der RestfulApi eine Meldung, die direkt ausgegeben wird. Existiert denn ein Timer auf dem VDR? Laut JSON-Ausgabe ist das nicht der Fall. Kannst du das reproduzieren?


    Bei dem obigen Timer kannst du versuchen, ihn zu löschen. Es sollte dann eine Fehlrmeldung zurückkommen, das die timer_id nicht gefunden wurde. Diese Meldung stammt dann von der API.

    Das kenne ich so gar nicht. Wenn ein neuer Timer angelegt wird holt die App anschließend das Ereignis dazu, was ja zuerst geklappt hat. Was heißt "nochmal ansehen" genau? Kommt der Titel wieder, wenn in der Timerübersicht auf "Aktualisieren" gedrückt wird?


    Wie sieht die JSON-Ausgabe der Timer aus? http://server:port/timers.json. Steht da bei dem obigen Timer im Feld event_id eine -1 oder eine größere positive Zahl?

    Hi rbrt,

    weiß Du zufällig auch, wie sich der aktuelle Kanal abfragen lässt, oder bei einer Wiedergabe den Namen der Aufnahme?

    Interessant wäre auch der Fortschritt der Sendung bzw. der Wiedergabe.


    seahawk1986 hat ja schon alles dazu geschrieben. Ich habe immer die JSON-Ausgabe im Browser studiert und daraus meine Schlüsse gezogen. Die Fortschrittsbalken habe ich genauso realisiert wie es seahawk1986 vorgeschlagen hat. ^^


    Den Sourcecode von RestfulApi habe ich mir natürlich auch immer wieder angesehen. Leider reichen meine Kenntnisse nicht aus, um da durchzublicken. Es gelang mir nicht mal herauszufinden, warum an manchen Stellen die Umlaute nicht korrekt erscheinen. ;(

    Es gibt Neuigkeiten. Die App habe ich geändert und ein paar Anregungen eingebaut:


    • In der Kanalliste kann jetzt auch die EPG-Ansicht aufgerufen werden.
    • In der EPG-Übersicht kann auf einen Kanal umgeschaltet werden
    • Das Verhalten der Timerliste hat sich etwas geändert. Die Ereignisse zu den Timern werden nicht mehr automatisch abgerufen, sondern nur noch über den Button Aktualisieren.
    • Die Timeouts habe ich komplett entfernt. Auch bei sehr großen Aufnahmelisten sollte kein Timeout mehr auftauchen. Es sei denn, ein Netzwerkfehler tritt auf.


    Außerdem habe ich angefangen auf Github eine Seite einzurichten. Dort kann unter Releases die aktuelle Version heruntergeladen werden. Den Link habe ich auch im ersten Artikel geändert.

    Eine andere Zeit ändert definitiv die timer_id. Darin findet sich u.a. die Start/Stopzeit. Ich war da ziemlich verzweifelt und habe es so gelöst: Die RestfulApi gibt glücklicherweise den neuen Timer zurück, soweit ich mich erinnere aber unvollständig. irgendwas fehlte da immer. Mit der zurückgegebenen timer_id konnte ich aber herausfinden, ob es ein "neuer" Timer ist und habe dann den Timer nochmals geholt. Es gibt ja dafür extra einen Aufruf (http://url/timers/timerid.json)

    Falls es Fragen zum RestfulApi gibt bin ich gerne behilflich. Ich habe mich wegen meiner App damit ausführlich beschäftigt und viel durch Probieren herausgefunden, was nicht unbedingt gleich ersichtlich ist:


    • Eine fehlende timer_id bedeutet neuer Timer
    • Aktiv/Inaktiv/VPS etc. wird durch das Flagfeld gesetzt und bitweise interpretiert. 0/1 = inaktiv/aktiv, 4 = vps.
    • Die timer_id änderst sich nahezu bei jeder Änderung eines Parameters


    rbrt

    Danke, klappt. Nur eine kleine Frage noch: ist es irgendwo möglich, das Timeout (lange Liste der Aufnahmen) zu konfigurieren?

    Noch nicht. Es war eher als Notausstieg gedacht, damit sich das Programm nicht aufhängt, was bei mir manchmal vorkam. Den Timeout konfigurierbar zu machen hatte ich eh mal vor.


    Damit ich eine Vorstellung bekomme, um wieviel Aufnahmen geht es?

    :wand Das man in der EPG Übersicht auf den Kanal drücken kann hatte ich noch gar nicht rausgefunden :-) Dann erübrigt sich mein Wunsch natürlich.


    Die Idee über die Kanalliste das EPG aufzurufen finde ich ganz gut. Das sollte machbar sein.

    Super wäre da noch ein Button um auf das EPG für diesen Kanal zu wechseln. Dann hätte man ein Liste aller Känale mit aktuellem EPG und eine Liste mit EPG von einem Kanal.


    Verstehe ich das richtig: Die gleiche Anzeige, wie wenn man in der EPG-Übersicht auf das Kanalicon (oder Kanalnummer) tippt? Dann erscheinen alle EPG-Einträge zu diesem Kanal.


    wmautner Der alte Link geht natürlich noch. Nimm bitte den Link von jojo61

    Hat leider etwas gedauert, das Programm abzuändern. Der Infoabruf wird jetzt nicht mehr durchgeführt. Es sollte also zu keinem Absturz mehr kommen. Leider habe ich keinen VDR, um das nachzuvollziehen. Wäre toll, wenn es eine Rückmeldung geben würde. Bei den Einstellungen läßt sich der Speicherverbrauch wieder einschalten, um die aktuelle Belegung bei den Aufnahmen wieder anzuzueigen.


    Das Umschalten in der Kanalübersicht funktioniert jetzt auch.


    Den Link zum Download habe ich im ersten Beitrag hinterlegt. Einfach das Update durchführen. Alle Einstellungen werden normalerweise beibehalten.

    Kommt der Absturz auch, wenn man in einem beliebigen Browser folgende URL eintippt: http://server:8002/recordings.json. Im Erfolgsfall erscheint im Browser eine Liste der Aufnahmen.


    Ich habe noch einen Raspi, auf dem ich mittels yavdr-ansible einen yaVDR installiert habe. Der hat ebenfalls die Version 2.4.7. Ich hatte ihn noch nicht ausprobiert, weil er nur eine Reserver sein soll. Da erscheint bei mir im Log auch kein Absturz.

    Welchen VDR setzt du ein? Ich nutze bisher einen yaVDR 2.4.0 mit der RestfulApi 0.2.6.5. Was wird gerade angeklickt, wenn es zum Absturz kommt?

    Die Kanalliste ist eher experimentell und sollte eigentlich raus. Habe ich vergessen. Ich werde sie überarbeiten und drin lassen. Den Vorschlag mit der IP werde ich mir notieren. Vielleicht auch gleich beim Hostnamen übernehmen. Ich wollte da nur nicht zuviele Restriktionen einbauen.


    Interessehalber: Wie viele Aufnahmen und Timer sind vorhanden? Einige Nutzer kommen ja über Tausend Aufnahmen.

    Dazu wäre noch eine komplette Entwicklungsumgebung notwendig. Ich habe das ganze mit Qt programmiert, sowohl in Qt C++ als auch in QT Quick. Also schnell mal etwas ändern und übersetzen wie z.B. bei den Plugins geht da leider nicht. Aber wenn Interesse besteht, dann kann ich den Code auch mal veröffentlichen. Da wären wir wieder beim Thema Git vom Anfang.

    Ich habe mir jetzt github angesehen und denke, daß es nicht der richtige Platz ist. ich stelle ja ein fertig kompiliertes Androidpaket zur Verfügung und nicht den Quellcode. Das Androidpaket habe ich jetzt vorübergehend in meinen öffentlichen Dopboxordner gelegt. Vielleicht findet sich später ja ein anderer Platz dafür.


    Wer das Programm ausprobieren möchte ruft folgenden Link auf.

    https://www.dropbox.com/s/7ff0…vdr-rest-app-0.1.apk?dl=0


    Das Smartphone sollte noch so konfiguriert werden, daß die Installation aus unbekannten Quellen erlaubt wird. Bei neueren Modellen wird man vor der Installation danach gefragt und hakt es einfach ab.


    Die Datei auf dem Smartphone anklicken und es sollte die Installation beginnen. Nach dem anlegen vom ersten VDR sollte unter "Vorgaben" noch die Schriftgröße angepaßt werden.


    Wer die Kanalicons habe möchte muß sie über das RestfulApi bereitstellen. Gute Erfahrungen habe ich mit Picons2VDR gemacht.


    Die Bedienung ist hoffentlich einfach zu verstehen. Dazu noch ein paar Tipps:


    • Ein Klick auf die Kanalnummer (oder Icon) zeigt das Programm des jeweiligen Kanals an.
    • Ein Klick auf den Programmtitel zeigt die Detailinformationen an
    • Die Suche speichert immer alle Einstellungen ab, so daß man sich einen passenden Suchtimer zusammenklicken kann.
    • Eine Besonderheit: Die Timer werden nur zum Programmstart abgerufen. Deswegen gibt es hier den Button "Aktualisieren" in der Timerübersicht.
    • Die Ereignisse der Timer können leider nur einzeln nacheinander abgerufen werden und dauert entsprechend lange.


    Falls Probleme auftauchen oder Änderungen an der Bedienung gewünscht sind, kann ich das noch einbauen bzw. beseitigen.


    bis dann

    rbrt