如何在Spotify应用程序中禁用上下文(因此禁用上一个/下一个按钮)

时间:2012-05-09 20:51:52

标签: spotify

有人在这里问同样的问题。 iKenndac回答了这个问题。但是我需要更多细节,我找不到添加评论的方法,所以我在这里创建了一个新问题。

我希望能够控制spotify播放的曲目。所以我想禁用上一个和下一个按钮。

似乎解决方案是在没有给玩家上下文的情况下播放曲目。我做了但是下一个/上一个没有被禁用。 Spotify作为当前上下文是我的已加星标的播放列表。

这是一些代码

var sp = getSpotifyApi(1);
var models = sp.require('sp://import/scripts/api/models');
var player = models.player;
var pl_starred = models.library.starredPlaylist;

exports.init = init;

function init() {
    var header = document.getElementById("header");
    var index = Math.floor(Math.random()*pl_starred.length)
    var track = pl_starred.get(index);

    if (pl_starred == null) {
        header.innerText = "starred not found";
    } else if (track == null) {
        header.innerHTML = "cannot get track from starred";
    } else {
        header.innerHTML = "starred " + index + "/" + pl_starred.length + " : " + track.name;
    }

    player.play(track,null);
}

编辑:来自iKenndac

的答案后的一些新测试

我尝试将音轨与其上下文分开,但它不起作用。 所以我尝试使用硬编码的URI加载轨道。所以我没有加载已加星标的播放列表。但它也不起作用

这是我的代码

function init() {

    var header = document.getElementById("header");

    var player = models.player;

    models.Track.fromURI("spotify:track:3ZfW4Z3MEvd82pv5J0rN2l", function(trackNotInStarred) {
        console.log("Track loaded", trackNotInStarred.name);
        player.play(trackNotInStarred, null);
        header.innerHTML = "starred: " + trackNotInStarred.name;
    }); 
}

新编辑:实际上上一个/下一个按钮没有被禁用但是如果我点击上一个它重启轨道然后它跳转到“无轨道”状态然后上一个/播放/接下来是禁用的。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

看起来它正在从您从星标播放列表中获取曲目的事实开始推断上下文。

尝试将轨道与上下文分开:

var player = models.player;
var trackInStarred = pl_starred.get(index);

models.Track.fromURI(trackInStarred.uri, function(trackNotInStarred) {
    console.log("Track loaded", trackNotInStarred.name);
    player.play(trackNotInStarred, null);
});