2016-04-22 81 views
2

這裏是我的「小」項目,因爲我不是一個開發人員我自己請不要怪我愚蠢的問題。使用Spotify的webAPI播放藝術家(ID)的隨機專輯

我想創建一個「音頻書機」。

我想使用一個網站,顯示幾個藝術家的有聲讀物。如果我點擊一位藝術家,應播放隨機點擊的藝術家的有聲讀物。

我看了一下這個代碼示例:http://jsfiddle.net/qlmhuge/t7a1sh4u/

// find template and compile it 
var templateSource = document.getElementById('results-template').innerHTML, 
    template = Handlebars.compile(templateSource), 
    resultsPlaceholder = document.getElementById('results'), 
    playingCssClass = 'playing', 
    audioObject = null; 

var fetchTracks = function (albumId, callback) { 
    $.ajax({ 
     url:  'https://api.spotify.com/v1/artists/61qDotnjM0jnY5lkfOP7ve/albums/', 
     success: function (response) { 
      callback(response); 
     } 
    }); 
}; 

var searchAlbums = function (query) { 
    $.ajax({ 
     url: 'https://api.spotify.com/v1/search', 
     data: { 
      q: 'artist:' + query, 
      type: 'album', 
      market: "DE" 
     }, 
     success: function (response) { 
      resultsPlaceholder.innerHTML = template(response); 
     } 
    }); 
}; 

results.addEventListener('click', function(e) { 
    var target = e.target; 
    if (target !== null && target.classList.contains('cover')) { 
     if (target.classList.contains(playingCssClass)) { 
      audioObject.pause(); 
     } else { 
      if (audioObject) { 
       audioObject.pause(); 
      } 
      fetchTracks(target.getAttribute('data-album-id'), function(data)  {    
       audioObject = new Audio(data.tracks.items[0].preview_url); 
       audioObject.play(); 
       target.classList.add(playingCssClass); 
       audioObject.addEventListener('ended', function() { 
        target.classList.remove(playingCssClass); 
       }); 
       audioObject.addEventListener('pause', function() { 
        target.classList.remove(playingCssClass); 
       }); 
      }); 
     } 
    } 
}); 

searchAlbums('TKKG'); 

,但我無法弄清楚如何去改變它由一個藝術家扮演一個隨機的專輯。

藝術家將被spotify ID定義爲藝術家是正確的。

有人可以幫我解決我的問題嗎?還需要什麼信息才能完成我的目標?

我會非常感激,如果有人能給我一個提示,或者其他什麼,去正確的方向。

最好的問候, goeste

回答

0

您必須修改fetchTracks功能在這裏:

var fetchTracks = function (albumId, callback) { 
    $.ajax({ 
     url: 'https://api.spotify.com/v1/albums/' + albumId, 
     success: function (response) { 
      callback(response); 
     } 
    }); 
}; 

的jsfiddle link

+0

謝謝,但這隻會列出一位藝術家的所有專輯... – goeste

+0

@goeste你試過附加jsfiddle嗎? –

+0

嗨奧列格,是的,我做到了,但那實際上是來自spotify的示例腳本。我想獲得一張(我選擇的)圖像,並在其後面加上鍊接。該鏈接應該比開始播放某個音樂家/藝術家的隨機專輯;) – goeste

0

我有點接近終點線......好吧,我猜:

我在GitHub找到以下內容:

var SpotifyWebApi = require('spotify-web-api-node'); 

var spotifyApi = new SpotifyWebApi(); 

// credentials are optional 
// var spotifyApi = new SpotifyWebApi({ 
// clientId : '', 
// clientSecret : '', 
// redirectUri : '' 
// }); 

// Get albums by a certain artist 
spotifyApi.getArtistAlbums('3meJIgRw7YleJrmbpbJK6S') 
    .then(function(data) { 
    console.log('Artist albums', data.body); 
    }, function(err) { 
    console.error(err); 
    }); 

但是,我只獲得20張專輯中的35張。我需要增加限制。當我在Spotify的開發者網站上閱讀時,最大限制爲50。由於我只需要從35張專輯中隨機抽出一張,我該如何實現隨機化功能以及播放功能才能工作?

我仍然在想出如何從結果中創建一個鏈接,以便用node.js在網站上顯示。

此致敬意,並提前感謝您的任何幫助/幫助! -goeste

+0

好吧,得出了極限。我需要更改請求行:'spotifyApi.getArtistAlbums('3meJIgRw7YleJrmbpbJK6S',{limit:50})' – goeste

相關問題