curl 使用命令行连接到Spotify API

jrcvhitl  于 2023-03-08  发布在  其他
关注(0)|答案(2)|浏览(158)

我想用命令行从Spotify API检索信息,例如:

curl "https://api.spotify.com/v1/search?type=artist&q=<someartist>"

但当我这么做的时候,我得到了:

{
  "error": {
    "status": 401,
    "message": "No token provided"
  }
}

我已经在我的Spotify开发者帐户中创建了一个应用程序。有人能告诉我如何通过搜索请求传递我的凭据吗?我不想编写应用程序或任何东西。我只想从命令行检索信息。
希望有人能帮忙!

deyfvvtc

deyfvvtc1#

所以,我花了更多的时间破译https://developer.spotify.com/documentation/general/guides/authorization-guide/上的指令,实际上我找到了一个相当简单的解决方案。
我想做的是通过搜索特定的专辑从Spotify Web API中检索Spotify专辑URI。因为我不需要可刷新的访问令牌,也不需要访问用户数据,所以我决定使用客户端凭据授权流程(https://developer.spotify.com/documentation/general/guides/authorization-guide/#client-credentials-flow)。以下是我所做的:
1.在控制面板上的https://developer.spotify.com/dashboard/applications位置创建应用程序,并复制客户端ID和客户端密码
1.使用base64编码客户端ID和客户端密码:

echo -n <client_id:client_secret> | openssl base64

1.使用编码的凭据请求授权,这为我提供了一个访问令牌:

curl -X "POST" -H "Authorization: Basic <my_encoded_credentials>" -d grant_type=client_credentials https://accounts.spotify.com/api/token

1.使用该访问令牌,可以向API端点发出请求,而无需用户授权,例如:

curl -H "Authorization: Bearer <my_access_token>" "https://api.spotify.com/v1/search?q=<some_artist>&type=artist"

所有可用的端点都可以在这里找到:https://developer.spotify.com/documentation/web-api/reference/
在我的例子中,我希望以“艺术家专辑”的格式读取终端中的输入,并输出相应的spotify URI,这正是下面的shell脚本所做的:

#!/bin/bash
artist=$1
album=$2
creds="<my_encoded_credentials>"
access_token=$(curl -s -X "POST" -H "Authorization: Basic $creds" -d grant_type=client_credentials https://accounts.spotify.com/api/token | awk -F"\"" '{print $4}')
result=$(curl -s -H "Authorization: Bearer $access_token" "https://api.spotify.com/v1/search?q=artist:$artist+album:$album&type=album&limit=1" | grep "spotify:album" | awk -F"\"" '{print $4 }')

然后,我可以像这样运行脚本:

myscript.sh some_artist some_album

并且它将输出相册URI。

of1yzvn4

of1yzvn42#

现在问这个问题可能为时已晚,但是您是如何传递包含空格的艺术家和专辑的呢?我发现“和“不起作用,所以我不得不以Deep%20Purple Made%20In%20Japan为例。

相关问题