如何使用Spotify Web API获得当前播放曲目的音频功能?

时间:2018-10-17 12:43:14

标签: javascript spotify

https://developer.spotify.com/documentation/web-api/reference/tracks/get-audio-features/

嗨,我正在使用Spotify网络API来获取曲目的音频功能。在上面提到的网站中,有关于其工作原理的解释。问题在于,它只能从一个特定的轨道获取音频功能,具体取决于ID。 但是我想在播放其他曲目时更改ID,以便获得当前正在播放曲目的音频功能。有人知道该怎么做吗?在下面的代码中,您可以看到URL。在链接的末尾,您将看到: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();
  }
});

2 个答案:

答案 0 :(得分:0)

有一个相对较新的Spotify Web API端点,描述为here。它将为用户返回与使用的访问令牌相对应的当前播放曲目。

以下代码段显示了如何组合两个端点以实现所需的功能。此代码段中使用的访问令牌必须包含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
    }
  });
}

答案 1 :(得分:0)

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

这似乎行得通,也许可以帮助其他人。