Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
it:iot:nodered:spotify [2023/01/05 21:28] – vytvořeno Petr Nosekit:iot:nodered:spotify [2023/01/05 21:46] (aktuální) Petr Nosek
Řádek 3: Řádek 3:
 Zajímaly mě scénáře, kde mohu pracovat se Spotify. V seznamu pluginů jsem našel [[https://github.com/pckhib/node-red-contrib-spotify|nod-red-contrib-spotify]] a rozhodl jsem se ho vyzkoušet. Je pro začátek - vřele doporučuji číst dokumentaci pluginu - člověk si tím ušetří spoustu hodin pokusů a omylů. Zajímaly mě scénáře, kde mohu pracovat se Spotify. V seznamu pluginů jsem našel [[https://github.com/pckhib/node-red-contrib-spotify|nod-red-contrib-spotify]] a rozhodl jsem se ho vyzkoušet. Je pro začátek - vřele doporučuji číst dokumentaci pluginu - člověk si tím ušetří spoustu hodin pokusů a omylů.
  
 +První náročná záležitost je autentizace. V Node Red jsou vidět u modulu k vyplnění tato políčka:
 +
 +  * Client ID
 +  * Client secret
 +  * Scopes
 +
 +{{:it:iot:nodered:pasted:20230105-223055.png}}
 +
 +V [[https://flows.nodered.org/node/node-red-contrib-spotify|dokumentaci]] je napsáno, že nejprve má člověk přejít na tuto stránku: https://developer.spotify.com/dashboard/ . Přihlásit se, jít na nástěnku a vytvořit novou aplikaci a tím získám **Client ID** a **Client secret**. 
 +
 +Ještě je důležité kliknout na **Edit settings** a nastavit **Redirect URIs**. Url musí být adresa Node RED serveru a musí se za to přidat **/spotify-credentials/auth/callback**. Nezapomenout, že pokud běží Node RED přes SSL, tak se musí uvést https. Takže například URL bude: 
 +
 +<code>
 +http://192.168.1.20:1880/spotify-credentials/auth/callback
 +</code>
 +
 +Tím ovšem nemáme hotovo. Znovu se musíme vrátit do Node REDu a vyplnit **scopes**. Tedy práva, která chci aplikaci povolit - respektive o které žádá. Tady je přehled [[https://developer.spotify.com/documentation/general/guides/authorization/scopes/|Authorization Scopes]].
 +
 +Takže do políčka Scopes například doplním toto:
 +
 +<code>
 +user-read-playback-state
 +user-modify-playback-state
 +user-read-currently-playing
 +app-remote-control
 +streaming
 +playlist-read-private
 +playlist-read-collaborative
 +playlist-modify-private
 +playlist-modify-public
 +user-follow-modify
 +user-follow-read
 +user-read-playback-position
 +user-top-read
 +user-read-recently-played
 +user-library-modify
 +user-library-read
 +</code>
 +
 +Tím mohu autentizaci úspěšně dokončit. 
 +
 +
 +===== Přehrávání audia =====
 +
 +Původně jsem posílal do nodu Spotify json injecty, dle [[https://developer.spotify.com/documentation/web-api/reference/#/operations/transfer-a-users-playback|Spotify API dokumentace]]. To byl chybný krok a kdybych se tady vrátil hned k dokumentaci pluginu, ušetřil bych více času.
 +
 +Vyčítání zařízení připojených ke Spotify nebyl problém, ale zavolání funkce [[https://developer.spotify.com/documentation/web-api/reference/#/operations/transfer-a-users-playback|Transfer Playback]], která způsobuje přenesení audio streamu na konkrétní zařízení vykazovalo pořád chyby.
 +
 +Po nějakém čase hledání jsem narazil na diskusi, kde je psáno, že do nodu Spotify se má posílat nod funkce, ve které bude následující obsah:
 +
 +<code JavaScript>
 +msg.params = [
 +    ['319827319827391823981732'], /* DeviceIds Array (but it can only handle one device id) */
 +    { play: true } /* Options Object */
 +];
 +</code>
 +
 +
 +To rozbilo moji představu o vstupu jako Json objektech a vrátil jsem se k [[https://github.com/pckhib/node-red-contrib-spotify|dokumentaci]], kde je na konci napsáno, jak se vstupy mají používat - včetně doporučení o přečtení [[https://github.com/thelinmichael/spotify-web-api-node/blob/master/src/spotify-web-api.js|API description pluginu]]
  
  
  • it/iot/nodered/spotify.1672954121.txt.gz
  • Poslední úprava: 2023/01/05 21:28
  • autor: Petr Nosek