0
我正在嘗試創建一個幫助文件,該文件將返回任何藝術家相關藝術家的最佳曲目。我只想用1個藝術家的URI來表達他們的相關藝術家的名字,流行度和頂級曲目。我希望將頂部曲目功能劃分爲一個單獨的文件,我可以隨時調用。返回熱門曲目Spotify API
但是,我似乎無法弄清楚如何正確地返回相關藝術家的最佳曲目。
在我的 「GET-toptrack.js」 文件:
require([
'$api/models',
'$api/toplists#Toplist'
], function(models, Toplist) {
'use strict';
var doGetTopTrack = function(uri, num) {
var artistURI = uri;
var artist = models.Artist.fromURI(artistURI);
var artistTopList = Toplist.forArtist(artist);
artistTopList.tracks.snapshot().done(function(snapshot){
snapshot.loadAll('name').done(function(tracks) {
var i, num_toptracks;
num_toptracks = num;
for(i = 0; i < num_toptracks; i++){
console.log("top track: " + tracks[i].name);
// WHERE DO I RETURN THE TOP TRACKS??
}
});
});
};
exports.doGetTopTrack = doGetTopTrack;
});
在我的 「artist.js」 文件「:
require([
'$api/models',
'scripts/get-toptrack'
], function(models, getTopTrack) {
'use strict';
var showRelated = function() {
var artist_properties = ['name', 'popularity','related', 'uri'];
models.Artist
.fromURI('spotify:artist:11FY888Qctoy6YueCpFkXT')
.load(artist_properties)
.done(function(artist){
artist.related.snapshot().done(function(snapshot){
snapshot.loadAll('name').done(function(artists) {
for(var i = 0; i < artists.length; i++){
var u, p, n, t, listItem;
// store artist details
p = artists[i].popularity;
n = artists[i].name;
u = artists[i].uri;
// am I missing something here?
t = getTopTrack.doGetTopTrack(u, 1);
listItem = document.createElement("li");
listItem.innerHTML = "<strong>Name</strong>: " + n.decodeForText() + " | <strong>Popularity: </strong> " + p + " | <strong>Top Track: </strong>" + t;
// undefined name
$('#artistsContainer').append(listItem);
}
});
});
});
};
exports.showArtists = showArtists;
});
而在 'main.js' 文件,我調用函數的藝術家開始。
require([
'$api/models',
'scripts/artist'
], function(models, initArtist) {
'use strict';
initArtist.showRelated();
});
謝謝你。解釋很多! – cusejuice
是否有一個特別的理由來保留抓住軌道的「秩序」?如果是這樣,你能指出我在Spotify Docs中尋找什麼的正確方向嗎? – cusejuice
在這種情況下,我認爲沒有理由維持秩序。但是,如果您確實想確保您的藝術家列表條目與'相關'的順序相同,那麼您需要重做邏輯以存儲每條曲目並在最後輸出它們。 – Thomas