我已经知道网址是https://spclient.wg.spotify.com/color-lyrics/v2/track/${TRACK_ID}?format=json&vocalRemoval=false
了
它需要两个标头。app-platform: WebPlayer
和authorization: Bearer TOKEN
.
所以,使用卷曲,我可以得到这样的歌词信息:
$ TRACK_ID=3z8h0TU7ReDPLIbEnYhWZb
$ BEARER_TOKEN=xxxxxxxxxxxxxx
$ curl "https://spclient.wg.spotify.com/color-lyrics/v2/track/${TRACK_ID}?format=json&vocalRemoval=false" -H "app-platform: WebPlayer" -H "authorization: Bearer ${BEARER_TOKEN}"
{
"lyrics": {
"syncType": "LINE_SYNCED",
"lines": [
{
"startTimeMs": "110",
"words": "Is this the real life? Is this just fantasy?",
"syllables": [],
"endTimeMs": "0"
},
{
"startTimeMs": "6990",
"words": "Caught in a landslide, no escape from reality",
"syllables": [],
"endTimeMs": "0"
},
...
实际问题是如何以编程方式获得所需的承载令牌?我尝试使用这个站点上的Get令牌按钮请求一个令牌:https://developer.spotify.com/console/get-track/
但是这个标记似乎只适用于官方API。对于歌词API,我总是得到以下对该标记的响应:
{
"error": {
"status": 403,
"message": "Client not allowed"
}
}
另外,来自上述链路的承载令牌要短得多,并且不包含破折号。
我知道我可以复制web客户端在https://open.spotify.com上使用的Bearer,但是令牌总是在很短的时间内过期。
因此,我要么寻找一种获得永久令牌的手动方式,要么寻找一种以编程方式获得短暂令牌的方法。
我并不是在寻找特定编程语言中的解决方案。任何一种语言都能做到,或者是一种抽象的解释。
发布于 2022-09-26 12:01:26
这个API不是为公众使用而设计的,也不是文档化的,也不是许可的(请参阅六火柴的API,其中Spotify获取歌词),所以使用它(或者吹嘘在StackOverflow上找到它)可能只会让Spotify进一步锁定他们的API,而您(不太可能,但可能)会陷入法律问题。
尽管如此,这些Bearer xxx
令牌与从Spotify的官方API创建的令牌不同,找到这些令牌的最简单方法就是自动登录(可能是在浏览器中)并发出请求(这些令牌可能需要每隔几分钟/小时/天刷新一次,因此自动化是这里的关键)。我建议开始在无头浏览器上查看Puppeteer或MS剧作家,然后从那里检索Bearer令牌。如果API似乎与那些Bearer令牌断绝,那么最好在浏览器中执行来自Puppeteer本身的请求,方法是复制原始请求,并修改歌曲ID。
我知道这是多么恼人的比赛,所以我完全理解如果第二段是你要去的方式。
发布于 2022-11-17 13:15:32
您可以从这里使用令牌:令牌
唯一的缺点是,它没有文档化,但spclient.wg.spotify.com也是如此。
https://stackoverflow.com/questions/73704499
复制相似问题