如何使用 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

好像有用,说不定能帮到别人。