gpt4 book ai didi

javascript - 如何使用 Spotify Web API 制作音频播放器?

转载 作者:行者123 更新时间:2023-12-03 00:51:01 24 4
gpt4 key购买 nike

我试图从播放按钮开始制作一个音频播放器。在我的 HTML 代码中,我制作了一个按钮:

<a href="#" id="play" alt="animate" class="btnstyle">Play</a>

然后我用这段代码让它播放歌曲,但似乎不起作用。

document.getElementById('play').addEventListener('click', function() {
$.ajax({
url: 'https://api.spotify.com/v1/me/player/play',
type: 'PUT',
headers: {
'Authorization': 'Bearer ' + access_token
},
dataType: "json",
contentType: "application/json",
data: JSON.stringify({
"uris": ["spotify:track:"] + apiData.item.id,
"position_ms": apiData.progress_ms
})
});
});

apiData.item.id 指当前播放轨道的idapiData.progress_ms 指当前播放轨道的进度(以毫秒为单位)。

当我运行代码并单击播放按钮时,没有任何反应。我不知道我做错了什么。

但是我尝试通过首先制作一个带有名为“pause”的 id 的按钮来制作暂停按钮。然后我做了以下事情:

document.getElementById('pause').addEventListener('click', function() {
$.ajax({
url: 'https://api.spotify.com/v1/me/player/pause',
type: 'PUT',
headers: {
'Authorization': 'Bearer ' + access_token
},
dataType: "json",
contentType: "application/json",
data: JSON.stringify({
"uris": ["spotify:track:"] + apiData.item.id,
"position_ms": apiData.progress_ms
})
});
});

这确实有效!但我不明白为什么播放按钮不起作用而暂停按钮起作用。这是我用于这两个按钮的文档: https://developer.spotify.com/documentation/web-api/reference/player/start-a-users-playback/ https://developer.spotify.com/documentation/web-api/reference/player/pause-a-users-playback/

对于播放按钮,我在控制台日志中收到此错误: error 400

有人可以帮我吗?

最佳答案

tl;dr:此答案底部的工作片段!

<小时/>

uris 字段采用包含 Spotify uri 的数组。此 "uris": ["spotify:track:"] + apiData.item.id 不会解析为数组,而是解析为不是端点等待的字符串。因此,使用 [`spotify:track:${id}`] 就可以了。

This代码片段显示了两者之间的差异。

console.log(["spotify:track:"] + id);
// Output with id = 1234: "spotify:track:1234" -> String

console.log([`spotify:track:${id}`]);
// Output with id = 1234: ["spotify:track:1234"] -> Array of strings
<小时/>

停止按钮起作用的原因是 Spotify 的 pause 端点不使用您传入的任何数据。pause 端点只有一个可选查询参数,称为device_id。因此,您传递的数据将被忽略。因此,可以简化 Ajax 暂停调用,如以下代码片段所示。

<小时/>

这里有两个工作片段,假设使用的访问 token 已授权 user-modify-playback-state 范围。

播放

$.ajax({
url: 'https://api.spotify.com/v1/me/player/play',
type: 'PUT',
headers: {
'Authorization': 'Bearer ' + access_token
},
dataType: "json",
contentType: "application/json",
data: JSON.stringify({
"uris": [`spotify:track:${apiData.item.id}`],
"position_ms": apiData.progress_ms
})
});

暂停

$.ajax({
url: 'https://api.spotify.com/v1/me/player/pause',
type: 'PUT',
headers: {
'Authorization': 'Bearer ' + access_token
}
});

关于javascript - 如何使用 Spotify Web API 制作音频播放器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53044674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com