簡體   English   中英

如何使用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 Web 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();
  }
});

存在被描述一種相對較新的Spotify的Web API端點這里 它將為用戶返回與使用的訪問令牌相對應的當前播放曲目。

以下代碼段顯示了如何組合兩個端點以實現所需的功能。 此代碼段中使用的訪問令牌必須包括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。請參閱控制台日志的此屏幕快照: 在此處輸入圖像描述

您可以看到一個子文件夾“ item”,在該文件夾中可以找到“ id”。

因此,我替換為:url:“ https://api.spotify.com/v1/audio-features/06AKEBrKUckW0KREUWRnvT ”為此:url:“ https://api.spotify.com/v1/audio-features/ ” + apiData.item.id

它似乎有效,也許可以幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM