Получить плейлист или библиотеку текущего пользователя, а также треки / исполнителей
Я исследовал это изрядное количество и не смог найти ничего, касающегося этой конкретной темы.
Я хочу получить всех исполнителей из библиотеки текущего пользователя или даже из определенного плейлиста, например, "помеченного" плейлиста.
Когда я пытаюсь попасть в исполнителей или треки в плейлисте, я получаю 'undefined'
назад.
Я делаю что-то неправильно?
Вот некоторый основной javascript, который я использую для отображения объекта библиотеки, и все, что я получаю, - это то, что на изображении, но я не знаю, как попасть в отдельные треки и исполнителей. Любая помощь?
require(['$api/models','$api/library'], function(models, library){
'use strict';
var Library = library.Library.forCurrentUser();
console.log(Library.starred);
});
Вот изображение модели, которую я возвращаю: http://i.imgur.com/ERo0Cx9.png
1 ответ
Это немного сложнее, чем это. Library.starred
это Playlist
ленивый объект загружает атрибуты. Таким образом, вам нужно передать, какие атрибуты вы хотите загрузить, в этом случае tracks
, Так как треки - это коллекция, вам нужно сделать моментальный снимок, а когда у вас есть треки, вам нужно указать, какие атрибуты загружать с треков.
Вот код для извлечения всех треков из вашего избранного плейлиста и распечатки их имени и имени:
require(['$api/models','$api/library'], function(models, library){
'use strict';
var Library = library.Library.forCurrentUser();
Library.starred.load('tracks').done(function(playlist) {
playlist.tracks.snapshot().done(function(tracks) {
var promises = [];
// we fetch all the tracks
for (var i = 0, l = tracks.length; i < l; i++) {
var track = tracks.get(i);
// fetch the information we need from the tracks
// e.g. uri and name
promises.push(track.load('uri', 'name'));
}
models.Promise.join(promises).done(function(tracksPromises) {
tracksPromises.forEach(function(tp) {
console.log(tp.uri + ' - ' + tp.name);
});
});
});
});
});