Приложения Spotify - Получение треков плейлистов - PullRequest
0 голосов
/ 20 февраля 2012

Я занимаюсь разработкой приложения Spotify и хочу получить треки для плейлиста.Есть функция playlist.tracks, но она, кажется, кешируется и получает неправильный список треков.Он также должен быть медленным и не рекомендуется для использования в документации API.Но какой другой вариант я должен получить треки плейлиста?В данный момент я использую playlist.tracks один раз и информирую свой бэкэнд списка треков.

Спасибо.

Ответы [ 3 ]

1 голос
/ 20 августа 2013

Для API 1.0:

require([
  '$api/models'
], function (models) { 

 var addList = function(list) {
    list.load('tracks').done(function(list) {
        list.tracks.snapshot().done(function(trackSnapshot){
            var tracks = trackSnapshot.toArray();
            for(var i=0; i<tracks.length; i++) {
                addTrack(tracks[i]);
            }
        });
    });
 }

 var addTrack = function(track) {
    track.load('name','artists').done(function(track) {
        var artists = track.artists;
        var artistsList = [];
        for (var i=0; i<artists.length; i++) {
            artistsList.push(artists[i].name);
        }
        // Print out info if desired
        var addedTrackRow = document.createElement('p');
        addedTrackRow.innerHTML = "Added track: " + artistsList.join(', ') + ' - ' + track.name;
        document.getElementById('addedTracks').appendChild(addedTrackRow);

    });
 }

 exports.addList = addList;
 exports.addTrack = addTrack;
}

// Example of use:
addList(models.Playlist.fromURI(...))
addTrack(models.Track.fromURI(...))

Я протестировал его, как описано выше, и он работает.

Я потратил некоторое время на поиски ответа на этот вопрос сам, а также искал, как получить доступ к трекам в списке, хотя это объясняется в учебном приложении , доступном на github в разделераздел «Метаданные»;«Получить метаданные исполнителя, альбома, дорожки или плейлиста».

Надеюсь, это полезно.

0 голосов
/ 18 марта 2012

Класс Playlist реализует интерфейс Collection.Таким образом, вы можете вызвать функцию get над объектом списка воспроизведения в цикле, чтобы получить все дорожки.Пример кода:

var i=0;
for (i=0;i<models.library.starredPlaylist.length;i++)
{
    var track = models.library.starredPlaylist.get(i);
}
0 голосов
/ 20 февраля 2012

Вот небольшой образец:

pl = new m.Playlist();
alb = m.Album.fromURI(uri, function(album) { 
   pl.name = album.name;
   $.each(album.tracks,function(index,track){
      pl.add(m.Track.fromURI(track.uri));   
   });

Надеюсь, это может помочь ....

$.each(pl.data.all(),function(i,track){ myAwesomePlaylist.add(track); }); 

, где pl - плейлист

...