JSON-RPC: Array mit Bilder-URLs zum Abspielen an Kodi übergeben

  • Frohe Weihnachten!

    Ich bastele gerade etwas mit Node-Red.

    Im Flow wird mir ein Array mit Online-URLs von Bildern erstellt, die mein Node-Red einzeln zur von mir priorisierten Kodi-Instanz (falls Kodi in mehreren Räumen läuft) sendet.

    Grob umschrieben: Node-Red bekommt von mir z.B. die URL der Gallerie "https://www.flickr.com/photos/davidgu…157628496183947" oder sonstigen Foto-Diensten, extrahiert dann im Flow die Bilder-URLs in ein Array ["https://live.staticflickr.com/65535/49192797536_75d61f2b74_k.jpg","https://live.staticflickr.com/65535/49178152657_3308458e11_k.jpg","https://live.staticflickr.com/65535/49163577671_af6f2030c7_k.jpg",...]

    Das Array wird in einzelne Nachrichten aufgeteilt, die mit einer Begrenzung von 1 Nachricht pro 5 Sekunden mittels Player.Open via JSON-RPC Befehl an Kodi weitergereicht werden.

    Im Prinzip funktioniert das alles auch. Der Nachteil: Beim Bildwechsel ist immer für kurze Zeit die Kodi-UI zu sehen wodurch das Ganze dann etwas unrund wirkt.
    Mir wäre es lieber, wenn ich gleich das ganze Array für eine ordentliche "handelsübliche" Kodi-Slideshow übergeben könnte, so wie bei der Slideshow mit den lokal in Ordnern gespeicherten Bildern. Was ich schon probiert habe, ist die Bilder mit Playlist.Add zu einer Playliste hinzuzufügen und diese dann mit Playlist.Open zu starten.
    Da Kodi aber scheinbar nicht so wirklich Bilder-Playlists unterstützt, rattert es die Bilder damit einfach unmittelbar ohne Pausen und Übergangseffekte hintereinander ab.

    Also meine eigentliche Frage ist:

    Ist es möglich, via JSON-RPC eine normale Kodi-Slideshow mit Online-Bildern zu bewerkstelligen, ohne dass die Bilder vorher lokal heruntergeladen werden müssen?

    Eigentlich machen ja Addons, wie 500px so was in der Art. Nur leider sind meine Python- oder generell Programmiersprachenkentnisse sehr limitiert, als das ich die Lösung aus deren Sourcen ausfindig machen könnte.

    Vielen Dank im Voraus und weiterhin schöne Feiertage!
    Gruß, Stefan.

  • Habe es gerade mal getestet, funktioniert:

    • {"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":2,"item":{"file":"https://live.staticflickr.com/65535/49192797536_75d61f2b74_k.jpg"}}}
    • {"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":2,"item":{"file":"https://live.staticflickr.com/65535/49178152657_3308458e11_k.jpg"}}}
    • {"jsonrpc":"2.0","id":1,"method":"Player.Open","params":{"item":{"playlistid":2},"options":{"repeat":"all"}}}

    Auch beachten: Einstellungen -> Player -> Bilder -> Anzeigedauer pro Bild

    PS Es wäre schön wenn du nächstes mal die Requests direkt postest statt der Umschreibungen.


  • Dann waren meine Requests bis auf die PlaylistID eigentlich schon richtig. Ich hätte eigentlich darauf kommen können, da im Flow auch die PlayerID abgefragt wird, und diese bei Bildern ja 2 ist.

    Mit ID 1 funktioniert es auch. Ich hatte bei 1 nur schon ein YouTube-Video drin und war zu faul die erst zu leeren und das war dann blöd zu testen. Deshalb bin ich dann auf 2 gegangen.

  • @TehTux
    Hallo nochmal,
    prinzipiell läuft's ja, aber vielleicht kennst du noch die Lösungen für 2 kleine Schönheitsfehler.

    Hier ist erstmal mein Beispiel Batch-Request:

    Code
    [
        {"jsonrpc": "2.0", "method": "Player.Stop", "params": { "playerid": 2 }, "id": 1},
        {"jsonrpc": "2.0", "id": 1, "method": "Playlist.Clear", "params": {"playlistid": 2}},
        {"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":2,"item":{"file":"https://live.staticflickr.com/65535/49178152657_3308458e11_k.jpg"}}},
        {"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":2,"item":{"file":"https://file-examples.com/wp-content/uploads/2017/10/file_example_JPG_500kB.jpg"}}},
        {"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":2,"item":{"file":"https://file-examples.com/wp-content/uploads/2017/10/file_example_TIFF_1MB.tiff"}}},
        {"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":2,"item":{"file":"https://file-examples.com/wp-content/uploads/2017/10/file_example_PNG_500kB.png"}}},
        {"jsonrpc":"2.0","id":1,"method":"Player.Open","params":{"item":{"playlistid":2},"options":{"repeat":"off"}}},
        {"jsonrpc":"2.0","id":1,"method":"Player.SetRepeat","params":{"playerid":2,"repeat":"off"}}
    ]

    Hierbei werden Bilder verschiedener Erweiterungen (jpg, png, tiff) zur Playlist gesendet und diese dann gestartet.

    1. Bei einer lokalen Diaschau, wo sich Dateien verschiedener Erweiterungen in einem Ordner befinden, werden alle Dateien berücksichtigt. Hier beim Hinzufügen aus den Onlinequellen werden jedoch nur die 2 JPGs abgespielt. Das TIFF und das PNG Bild sind nicht in der Playlist, obwohl der Request ein {"id":1,"jsonrpc":"2.0","result":"OK"} zurückgibt. Gibt es dafür eine Erklärung?
    2. Der Repeat OFF Parameter wird ignoriert. Ich habe ihn sowohl im Player.Open, als auch im Player.SetRepeat Request mit drin. Die Diaschau wird trotzdem nach dem letzten Bild wieder von vorne gestartet. Ich finde auch keine Option dazu bezüglich in den Einstellungen.

    Vielen Dank,
    Stefan

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!