0

誰かがここで同じ質問をします。iKendac はそれに答えます。しかし、もっと詳細が必要で、質問にコメントを追加する方法が見つからないため、ここで新しい質問を作成します。

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;
    }); 
}

新しい編集: 実際には、前/次のボタンは無効ではありませんが、前をクリックするとトラックが再開され、次に「トラックなし」状態にジャンプしてから、前/再生/次が無効になります。何か案は ?

4

1 に答える 1

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);
});
于 2012-05-09T21:37:42.737 に答える