如何使用 Spotify Web API 获取当前播放曲目的音频特征?
How do I get the audio features of current playing track with Spotify Web API?
https://developer.spotify.com/documentation/web-api/reference/tracks/get-audio-features/
嗨,我正在使用 spotify 网络 api 来获取曲目的音频特征。在上面提到的网站中,有一个关于它是如何工作的解释。问题是它只能从一个特定的轨道获取音频特征,这取决于 id。
但是我希望在播放不同曲目时更改 id,以便获得当前播放曲目的音频功能。有人知道怎么做吗?在下面的代码中,您可以看到 url。在 link 的末尾,您会看到:06AKEBrKUckW0KREUWRnvT
那就是曲目的id。
这是我的代码:
$.ajax({
url: 'https://api.spotify.com/v1/audio-features/06AKEBrKUckW0KREUWRnvT',
headers: {
'Authorization': 'Bearer ' + access_token
},
success: function(response) {
audioFeaturesPlaceholder.innerHTML = audioFeaturesTemplate(response);
console.log(response);
$('#login').hide();
$('#loggedin').show();
}
});
描述了一个相对较新的 Spotify Web API 端点 here。它将 return 与所使用的访问令牌相对应的用户当前播放的曲目。
以下代码段展示了如何结合两个端点以实现您想要的效果。此代码段中使用的访问令牌必须包含 user-read-currently-playing
范围。
var access_token = "<YOUR_ACCESS_TOKEN_HERE>";
(async () => {
var currentTrack = await ajax("https://api.spotify.com/v1/me/player/currently-playing");
var audioFeatures = await ajax(`https://api.spotify.com/v1/audio-features/${currentTrack.item.id}`);
console.log(audioFeatures);
})();
function ajax(url) {
return $.ajax({
url: url,
headers: {
'Authorization': 'Bearer ' + access_token
}
});
}
setInterval(function(){
callAjax();
}, 1000);
var apiData;
var audioData;
var callAjax = function(){
$.ajax({
url: 'https://api.spotify.com/v1/me/player/currently-playing',
headers: {
'Authorization': 'Bearer ' + access_token
},
success: function(response) {
currentPlayingPlaceholder.innerHTML = currentPlayingTemplate(response);
apiData = response;
console.log(response);
$('#login').hide();
$('#loggedin').show();
}
});
if(apiData != undefined){
$.ajax({
url: "https://api.spotify.com/v1/audio-features/" + apiData.item.id,
//url: "https://api.spotify.com/v1/audio-features/06AKEBrKUckW0KREUWRnvT",
headers: {
'Authorization': 'Bearer ' + access_token
},
success: function(response) {
audioFeaturesPlaceholder.innerHTML = audioFeaturesTemplate(response);
//audioData = response;
console.log(response);
$('#login').hide();
$('#loggedin').show();
}
});
}
我创建了一个名为 apiData 的变量。然后你可以通过使用 item.id 来识别当前播放曲目的 id
请参阅控制台日志的此屏幕截图:
enter image description here
您可以看到子文件夹 'item',在该文件夹中您可以找到 'id'。
所以我替换了这个:url:“https://api.spotify.com/v1/audio-features/06AKEBrKUckW0KREUWRnvT”
为此:url: "https://api.spotify.com/v1/audio-features/" + apiData.item.id
好像有用,说不定能帮到别人。
https://developer.spotify.com/documentation/web-api/reference/tracks/get-audio-features/
嗨,我正在使用 spotify 网络 api 来获取曲目的音频特征。在上面提到的网站中,有一个关于它是如何工作的解释。问题是它只能从一个特定的轨道获取音频特征,这取决于 id。 但是我希望在播放不同曲目时更改 id,以便获得当前播放曲目的音频功能。有人知道怎么做吗?在下面的代码中,您可以看到 url。在 link 的末尾,您会看到:06AKEBrKUckW0KREUWRnvT 那就是曲目的id。
这是我的代码:
$.ajax({
url: 'https://api.spotify.com/v1/audio-features/06AKEBrKUckW0KREUWRnvT',
headers: {
'Authorization': 'Bearer ' + access_token
},
success: function(response) {
audioFeaturesPlaceholder.innerHTML = audioFeaturesTemplate(response);
console.log(response);
$('#login').hide();
$('#loggedin').show();
}
});
描述了一个相对较新的 Spotify Web API 端点 here。它将 return 与所使用的访问令牌相对应的用户当前播放的曲目。
以下代码段展示了如何结合两个端点以实现您想要的效果。此代码段中使用的访问令牌必须包含 user-read-currently-playing
范围。
var access_token = "<YOUR_ACCESS_TOKEN_HERE>";
(async () => {
var currentTrack = await ajax("https://api.spotify.com/v1/me/player/currently-playing");
var audioFeatures = await ajax(`https://api.spotify.com/v1/audio-features/${currentTrack.item.id}`);
console.log(audioFeatures);
})();
function ajax(url) {
return $.ajax({
url: url,
headers: {
'Authorization': 'Bearer ' + access_token
}
});
}
setInterval(function(){
callAjax();
}, 1000);
var apiData;
var audioData;
var callAjax = function(){
$.ajax({
url: 'https://api.spotify.com/v1/me/player/currently-playing',
headers: {
'Authorization': 'Bearer ' + access_token
},
success: function(response) {
currentPlayingPlaceholder.innerHTML = currentPlayingTemplate(response);
apiData = response;
console.log(response);
$('#login').hide();
$('#loggedin').show();
}
});
if(apiData != undefined){
$.ajax({
url: "https://api.spotify.com/v1/audio-features/" + apiData.item.id,
//url: "https://api.spotify.com/v1/audio-features/06AKEBrKUckW0KREUWRnvT",
headers: {
'Authorization': 'Bearer ' + access_token
},
success: function(response) {
audioFeaturesPlaceholder.innerHTML = audioFeaturesTemplate(response);
//audioData = response;
console.log(response);
$('#login').hide();
$('#loggedin').show();
}
});
}
我创建了一个名为 apiData 的变量。然后你可以通过使用 item.id 来识别当前播放曲目的 id 请参阅控制台日志的此屏幕截图: enter image description here
您可以看到子文件夹 'item',在该文件夹中您可以找到 'id'。
所以我替换了这个:url:“https://api.spotify.com/v1/audio-features/06AKEBrKUckW0KREUWRnvT” 为此:url: "https://api.spotify.com/v1/audio-features/" + apiData.item.id
好像有用,说不定能帮到别人。