[gelöst] Kanal umschalten per URL (bzw. Sprachassistent)?

  • MarkusE Danke nochmal fürs rasche Einbauen!

    Allerdings bekomme ich jetzt einen Fehler, wenn ich den neuen Befehl absetze:


    Code: http://192.168.x.y:8008/vdr_request/switch_channel?channel_number=10
    Normale Seite:
    channel: -0-0-0
    result: 0
    error: Kann das Programm nicht finden oder keine vorhanden.
    Seitenende!


    Schaut so aus, als würde da noch das Format von "param" erwartet, oder?

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Vergiss es, bitte.
    Ich sollte wohl mal rebooten, damit überhaupt die 3.3.7 zum Tragen kommt, die den neuen Parameter dann auch sicher kennt. :wand
    Sorry, for the noise!

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Der Befehl klappt jetzt prinzipiell mit Kanalnummer :love:


    Kann aber leider nur erfolgreich abgesetzt werden, wenn ich vorher (im selben Browser/Gerät) einmal die URL ohne Befehl abgesetzt habe, also http://192.168.x.y:8008/
    Sonst kommt "Leider nicht erlaubt".

    Offenbar zieht die Prüfung "aus dem lokalen Netz" nicht bei jeder "page".
    MarkusE stimmt das? Soll das so sein?

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Offenbar zieht die Prüfung "aus dem lokalen Netz" nicht bei jeder "page".
    MarkusE stimmt das? Soll das so sein?

    Kann ich nicht sagen, habe ich weder spezifiziert noch getestet noch eingebaut .

    Aus meiner Sicht kann dieser Code komplett entfernt werden, da live nur aus dem lokalen Netz erreichbar ist.

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Aus meiner Sicht kann dieser Code komplett entfernt werden, da live nur aus dem lokalen Netz erreichbar ist.

    Auch im lokalen Netz möchte man den VDR bzw. Live ja vielleicht trotzdem gegen unerwünschte Zugriffe absichern (Kindersicherung). Insofern sollte die Authentifizierung schon drin bleiben!


    Man könnte zwar in switch_channel.ecpp noch folgende Zeile einfügen:

    …würde aber beim ersten Mal zunächst auf die Startseite (siehe Einstellungen) weitergeleitet. Damit das für dich funktioniert, müsste man – wie bei den meisten Webdiensten üblich – die URL, zu der nach erfolgtem Login weitergeleitet werden soll (also die, von der aus die Login-Seite aufgerufen wurde), bei der Login-Seite noch mit angeben können. Im lokalen Netz kämst du dann eingeloggt wieder auf die gleiche Seite zurück.


    Kein Hexenwerk, aber Fleißarbeit…

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    Edited once, last by shofmann ().

  • Fleißarbeit erledigt. Der Patch:

    …ruft von den beiden genannten Request-URLs die Login-Seite mit der Referenz auf ihre eigene URL (samt der darin kodierten Parameter) auf, sodass nach erfolgter Authentifizierung wieder die Ursprungsseite mit der originalen URL aufgerufen wird. Je nach Einstellung muss man dabei seine Zugangsdaten eingeben oder wird im lokalen Netz automatisch authentifiziert.


    Um die Login-Seite sicher von überall zu erreichen, also auch von einer der beiden Server-Seiten:

    Code
    https://vdr:8443/vdr_request/switch_channel?channel_number=1

    …habe ich den Aufruf der Login-Seite global von login.html auf /login.html geändert. In obigen Beispiel würde sonst versucht, die Login-Seite unter vdr_request/login.html zu öffnen.


    Des Weiteren habe ich den neuen Mechanismus zum Aufruf der Login-Seite auch in allen anderen Seiten eingefügt. Ruft man eine Seite bspw. per Bookmark auf, gelangt man nach erfolgten Authentifizierung nun zu dieser Seite und landet nicht stoisch auf der einstellten Startseite. Letztere wird nach wie vor aufgerufen, wenn der Login nicht von einer spezifischen Unterseite aus erfolgt ist.


    MarkusE, bitte wieder ins Git aufnehmen… ;)

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    Edited 4 times, last by shofmann ().

  • Ich komme leider immer erst am Abend hier zum Lesen.

    Und dann ist (schon wieder) alles erledigt ;)

    Wow sehr cool. Vielen Dank shofmann !

    Danke auch schon jetzt an MarkusE!

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Klar, gerne. Wenn's mich in den Fingern juckt, tobe ich mich halt aus… ;)


    Und dass man nach dem Login nicht auf der gewünschten (gebookmarkten) Seite landet sondern immer auf der Startseite, hat mich auch schon oft genug genervt.


    Aber irgendetwas scheint noch nicht zu passen, denn die Login-Seite sieht gerade etwas seltsam aus:

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Post by shofmann ().

    This post was deleted by the author themselves: Falscher Thread ().
  • Wie bereits oben beschrieben, gab es mit dem Patch noch ein Problem mit der Login-Seite, denn ich war wohl etwas zu "enthusiastisch" bei deren Aufruf. Ich habe jetzt die Login-Checks dort wieder auskommentiert, wo sie auch vorher schon auskommentiert waren (content.ecpp, recstream.ecpp). Hier der Patch mit den Fixes:

    Mir ist noch aufgefallen, dass sich in "Was läuft?" und "Programm" die Texte der Tooltips unterschieden haben. Ich habe das gleich mit angepasst. Leider sind im Code manchmal unterschiedliche Funktionen zum gleichen Zweck drin. Dieses eine "Duplikat" habe ich damit konsolidiert. ;)


    Viele Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Hi Stefan,


    Du hast ja mit dem letzten Patch einen URI Encoder implementiert. Ich habe jetzt https://en.wikipedia.org/wiki/Percent-encoding gefunden, da steht:

    Quote

    Current standard

    Main article: Internationalized Resource Identifier

    The generic URI syntax recommends that new URI schemes that provide for the representation of character data in a URI should, in effect, represent characters from the unreserved set without translation and should convert all other characters to bytes according to UTF-8, and then percent-encode those values. This suggestion was introduced in January 2005 with the publication of RFC 3986. URI schemes introduced before this date are not affected.


    Sollten wir das entsprechen anpassen? Oder, anders gefragt: Warum hast Du das so implementiert?


    ~ Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Wenn man, wie bei Live üblich, eine Seite mit relativer Referenz aufruft, ersetzt der Browser in der URL die Komponente nach dem letzten Slash ("/") durch die angeforderte Seite. Beispiel:

    • /login.html -> href="schedule.html" -> /schedule.html
      [NB: href steht hier stellvertretend für reply.redirect]

    Das geht gut, solange man keine Query-Parameter in der URL hat, die reservierte URL-Zeichen – wie in diesem Kontext die Slashes – beinhalten. Denn sonst passiert folgendes:

    • /login.html?redirect=vdr_request/switch_channel?channel_number=1 -> href="vdr_request/switch_channel?channel_number=1" -> /login.html?redirect=vdr_request/vdr_request/switch_channel?channel_number=1

    Escaped man aber die Query-Parameter, wie hier beschrieben, erhält man wie gewünscht:

    • /login.html?redirect=%2Fvdr_request%2Fswitch_channel%3Fchannel_number%3D1 -> href="vdr_request/switch_channel?channel_number=1" ->
      /vdr_request/switch_channel?channel_number=1

    Leider habe ich mir eine solche URL zur Demonstration nicht aufgehoben, denn man sieht sie nur in der URL-Zeile des Browsers.


    Das hat also nichts mit URI vs. IRI zu tun, sondern damit, dass URI/IRI und eingebettete Query-Parameter sauber voneinander entkoppelt werden. Das ist auch der Grund, warum ich nur den URL-Teil nach dem redirect= escape, nicht aber den Rest;:

    Code
      cToSvConcat<0> targetUrl = "/login.html?redirect=";
      targetUrl.appendUrlEscaped(request.getQuery());

    Ich hoffe, der Grund für die Implementierung ist jetzt klar geworden und damit auch, warum wir das nicht ändern dürfen.


    Viele Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Irgendetwas ist bei deiner letzten Änderung schief gegangen, denn jetzt werden auch die Zeilenumbrüche escaped:



    Mit dem Commit davor sah es noch so aus:



    PS: Gefunden:


    Viele Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    Edited once, last by shofmann ().

  • Post by Taipan ().

    This post was deleted by the author themselves: andere Baustelle ().
  • Ich wollte hier nicht diskutieren, ob der Suchstring enkodiert werden muss oder nicht. Er muss enkodiert werden, das ist klar.

    Die Frage ist, wie die korrekte Enkodierung aussehen muss. Und hier liegt https://docs.microfocus.com/OM…/ExtApps/URL_encoding.htm wohl falsch. Auch für Zeichen innerhalb von " muss bei Urls die % Enkodierung verwendet werden.


    Code
    searchresults.html?searchplain="Mein$20Schatz"

    findet nichts.

    Code
    searchresults.html?searchplain="Mein%20Schatz"

    findet

    Quote

    ARD-Radio-Tatort | "Mein Schatz" von Madeleine Giese

    In der Regie von Matthias Kapohl

    auf hr2.

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Ich wollte hier nicht diskutieren, ob der Suchstring enkodiert werden muss oder nicht. Er muss enkodiert werden, das ist klar.

    Dann hatte ich diesbezüglich missverstanden.


    Ich hatte mich auch schon gewundert, denn bislang kannte ich auch nur die Variante ohne das Dollarzeichen. Hier ein Patch, der alle gegenüber dem letzten Commit df6d63a noch offenen Änderungen bzw. Fixes beinhaltet:

    Nimmst du das bitte noch mit auf?


    Danke & Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    Edited once, last by shofmann ().

  • Wollte hier nur rückmelden, dass das Ganze jetzt als Kurzbefehl "Inhalte von xxx abrufen" mit Methode "GET" einwandfrei funktioniert.

    xxx = http://vdr_ip:8008/vdr_request/switch_channel?channel_number=10


    Vielen Dank für die ganzen Umbauten!

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

    Edited once, last by davie2000 ().

  • davie2000

    Changed the title of the thread from “Kanal umschalten per URL (bzw. Sprachassistent)?” to “[gelöst] Kanal umschalten per URL (bzw. Sprachassistent)?”.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!