目的
利用 iOS 的 shortcut, 自動執行 Spotify 特定歌單或專輯. 或者藉由 siri 播放特定歌曲.
取得 Spotify access token
可參考 doc 的 Authorization Guide (https://developer.spotify.com/documentation/general/guides/authorization-guide/)
1. 到 Spotify dev 申請一個APP
填好資料後, 記住 Client ID 和 Secret.
2. 點擊 EDIT SETTINGS, 在 Redirect URIs 這欄填入隨便自己的一個 Github 網址
3. 將剛剛 GitHub URL encode 一下, 藉由此網址
4. 選則該 token可以使用的權限(Scopes)
我選了這幾個. 記住中間都使用一個空白隔開
playlist-read-private user-modify-playback-state user-read-playback-state
5. 將前面幾步驟的東西組成一個網址, 貼到瀏覽器
https://accounts.spotify.com/authorize?client_id={第1步取得的Client ID}&response_type=code&redirect_uri={第3步encode的github url}&scope={第4步的scopes}
6. 按下同意, 會導向先前填的 Github 網址, 並且後面會出現code=”xxxx”
7. 組出 API header Authorization 格式
第一步的Client ID:第一步的Client Secret
並用此網址來做 base64 encode
8. 可以開始打申請 Token 的API了~用 Postman 或者 Terminal 的 curl 來打. 並記住refresh_token 跟 access_token
curl --location --request POST 'https://accounts.spotify.com/api/token' \--header 'Authorization: Basic {第7步的 API header Authorization 格式}' \--header 'Content-Type: application/x-www-form-urlencoded' \--data-urlencode 'grant_type=authorization_code' \--data-urlencode 'code={第6步取得的 code}' \--data-urlencode 'redirect_uri={你的github url}'
可參考 Spotify doc
request 參數
Respone 參數
因為access_token, 有效期限只有3600秒. 所以要記住 refresh_token. 藉由refresh_token重新去要access_token
撰寫 IOS Shortcut
1. 呼叫API:從refresh_token取得新的access_token
https://www.icloud.com/shortcuts/29dba791327c42e9bdbdf13fcac86355
有三個變數需要帶入: 在”文字”上面分別填入第8步的 refresh_token與 先前的client_id, secret.
2. 呼叫API:取得現在正在執行spotify的裝置id (device_id) . 這個捷徑是取正在行動裝置上執行的ID
3.呼叫API: 設定是否隨機播放API
4. 呼叫API: 播放指定歌單, 目前設定此歌單(https://open.spotify.com/playlist/1AL0bu2zPr1GXn4TE9toBU?si=akwdzQ_sRRShCAL2bPlqng)
Spotify uri 為: spotify:playlist:1AL0bu2zPr1GXn4TE9toBU
要更換歌單可以修改context_uri
5. 整合上面的捷徑
步驟1取的token. 打開 iPhone 的 Spotify app. 目的是為了讓後面的取得 devcie id API 可以使用
步驟2取得device id
將 device id 跟 access token 帶入辭典. 此變數可以給步驟3跟 步驟4的捷徑使用. state: true代表隨機播放
6.設定完之後可以在自動化那邊新增鬧中停止時觸發捷徑, 或者對著 Siri 大聲喊 Danny go demo (你的捷徑名稱). 就可以自動執行腳本了!
Reference
https://www.igeeksblog.com/best-spotify-siri-shortcuts/