为特定播放列表返回的快照长度不正确

Incorrect snapshot length returned for a specific playlist

本文关键字:快照 不正确 返回 播放列表      更新时间:2024-04-28

使用此spotify播放列表时遇到问题spotify:user:juan20150:播放列表:5rl5QaWjWtPv9a057w3qc

这是我看到的第一个有这个问题的播放列表。返回的快照长度是290,但当我执行snapshot.loadAll时,它只返回289个曲目。

知道为什么会这样吗?

    var playlist = models.Playlist.fromURI("spotify:user:juan20150:playlist:5rl5QaWjWtEPv9a057w3qc");
playlist.load('tracks').done(function() {
      playlist.tracks.snapshot().done(function(snapshot) {
        console.log("snapshot length " , snapshot.length);
        $i=0;
        snapshot.loadAll('name').each(function(track) {

            console.log("i=" , i++);

        });
    });
});

结果:

快照长度290i=289(最后)

感谢

因为您从零开始,然后递增。如果播放列表长度为3,则会打印

0
1
2

对于3个轨道。


更新自己尝试首先,将实际代码而不是伪代码放在一起会有所帮助。我把你的代码扔进了我的应用程序,但它不起作用。一旦我修复了它,它就会从0打印到288。所以,我删除了.each并放入了.done,它没有打印任何内容。然而,.fail确实返回了一些内容。不幸的是,该错误未定义。以下内容:

require(['$api/models'], function(models) {
    var playlist = models.Playlist.fromURI("spotify:user:juan20150:playlist:5rl5QaWjWtEPv9a057w3qc");
    playlist.load('tracks').done(function() {
    playlist.tracks.snapshot().done(function(snapshot) {
        console.log("snapshot length " + snapshot.length);
        var i=0;
        snapshot.loadAll('name')
            //.each(function(t) { console.log(i++); })
           .done(function(snap_tracks) { console.log("loaded tracks length " + snap_tracks.length); })
           .fail(function(track, error) { console.log(error + ". " + track.length); });
        });
    });
});

输出:

14:39:15.898 I [sp://67456db3aaa5a1c25a619472cdb2cbc3f52da3ed.album-radio/js/alb
umradio.js:507] snapshot length 290
14:39:16.236 I [sp://67456db3aaa5a1c25a619472cdb2cbc3f52da3ed.album-radio/js/alb
umradio.js:512] undefined. 290

我的最佳猜测是,你有一首歌已经无法访问了(许可证纠纷或其他什么)。