iPhone Shortcut Play Spotify Playlist by Spotify API

Kimi
8 min readSep 18, 2020

--

目的

利用 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://medium.com/%E6%B5%B7%E5%A4%A7-ios-app-%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88/%E4%B8%B2%E6%8E%A5%E5%A4%9A%E7%A8%AE-api-%E8%A3%BD%E4%BD%9Clady-gaga-app-spotify%E7%AF%87-2d39c52da7e4

https://www.igeeksblog.com/best-spotify-siri-shortcuts/

--

--