创建播放列表

时间:2013-03-30 17:03:14

标签: javascript spotify

我正在尝试构建自定义播放列表。有一个带轨道路径的数组。

这是我的试用代码。

var c = new models.BridgeCollection(models.Track,"CustomList");     
c.load('type','uri').done(function(){
    for (var i = 0; i < data.length; i++) {
        var artist = data[i];
        var s = models.Track.fromURI(artist.song); // this is track path
        s.load('name').done(function(){
            var d = c.add(s);
        });
    }
});

在此之后,我试图查看数据是否存在像这样的快照,但没有成功。

c.snapshot().done(function(snapshot) {
    var len = Math.min(snapshot.length, 50);
    for (var i = 0; i < len; i++) {
        var d = snapshot.get(i);
    }
});

经过大量的编辑后,我发现添加曲目时的响应如下所示。错误消息“未知请求:undefined_append”。 enter image description here

1 个答案:

答案 0 :(得分:2)

现在我终于开始工作了。必须说新的API有点奇怪!

这会使用对象{song:'spotify:track:xxxxxx'}循环一个数组。将它们添加到临时播放列表中,完成所有操作后,创建一个列表视图并添加到html。

require(['$api/models','$api/models#Playlist','$views/list'], function(models,playlists,lists) {

    var listClass = lists.List;
    var sList = data;
    var p = models.Playlist.createTemporary("CustomList");
    p.done(function(pList){
        pList.load('tracks').done(function(loadedPlaylist){
            for (var i = 0; i < sList.length; i++) {
                var artist = sList[i];
                var track = models.Track.fromURI(artist.song); // this is track path
                track.load('name','uri').done(function(loadedTrack){
                    loadedPlaylist.tracks.add(loadedTrack);
                });
            }

            var listObj = listClass.forPlaylist(loadedPlaylist,{header:'fixed',type:'tracks',fetch:'scroll',fields:['artist'], height:'fixed', unplayable:'disabled'});
            document.getElementById('playlistHolder').appendChild(listObj.node);
            listObj.init();

        });
    });


});