【问题标题】:Spotify API: Create Radio Button from Temporary Playlist Not supported?Spotify API:从临时播放列表创建单选按钮不支持?
【发布时间】:2014-03-30 07:36:57
【问题描述】:

我正在构建一个生成临时曲目播放列表的应用。然后我尝试为该临时播放列表创建一个“开始广播”按钮。

按钮已生成,但当我单击它时,屏幕变为广播,但不播放也不加载任何广播电台。

我的猜测是这不受支持,因为如果我创建一个常规播放列表并执行此操作,它会播放收音机...

但我在 API 中找不到任何信息来证实或否认我的猜测。

是否有人确定是否不支持此功能?

我真的宁愿从一个临时播放列表中执行此操作,而不是维护一个真实的播放列表...

【问题讨论】:

    标签: spotify spotify-app


    【解决方案1】:

    你是对的。 Start Radio Button 不支持临时播放列表。而且,不幸的是,文档没有提到这一点。

    似乎无法将附加到临时播放列表的曲目数据传递给 Radio 应用,因此 Radio 应用加载时没有上下文信息。

    如您所说,实现此目的的唯一方法是创建一个持久播放列表并为此创建一个单选按钮。为了不每次都创建新的播放列表,您也可以尝试在用户的库中查找您之前创建的播放列表。

    查看这段代码sn-p:

    require(['$api/models', '$api/library#Library', '$views/buttons#StartRadioButton'],
      function(models, Library, StartRadioButton) {
    
      // create a temporary playlist with some tracks
      var playlistName = 'Some name';
    
      models.Playlist.create(playlistName).done(function(playlist) {
        playlist.load('tracks').done(function(loadedPlaylist) {
          var track1 = models.Track.fromURI('spotify:track:5EB60KIbYgL8nWrHoYbfv4');
          var track2 = models.Track.fromURI('spotify:track:7GPuYTiBA5BloBnFaQBjbw');
          loadedPlaylist.tracks.add(track1);
          loadedPlaylist.tracks.add(track2);
    
          // now we can add a button to start a radio base on the newly
          // created playlist
          var button = StartRadioButton.forPlaylist(loadedPlaylist);
          document.body.appendChild(button.node);
    
          // bonus: we can also search for the playlist in the user's library
          // so we don't have to create a new one all the time.
          // this will work as long as we can find the playlist we created by name
          // (i.e. it hasn't been renamed).
          var currentLibrary = Library.forCurrentUser();
            console.log(currentLibrary);
            currentLibrary.playlists.snapshot().done(function(p) {
              for (var i = 0; i < p.length; i++) {
                var playlistFromLibrary = p.get(i);
                if (playlistFromLibrary && playlistFromLibrary.name == playlistName) {
                  var button = StartRadioButton.forPlaylist(playlistFromLibrary);
                  document.body.appendChild(button.node);
                }
              }
            });
          });
      });
    });
    

    【讨论】:

    • 嘿,谢谢,这是完美的!我试图通过要求他们将 URI 提交到他们的播放列表之一来解决这个问题,因为我找不到任何方法来按名称搜索该用户的播放列表。但这应该可以解决问题!谢谢!
    • 欢迎您@Josh。使用名称搜索播放列表并不是最可靠的方法,但它是迄今为止最好的选择。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 2012-04-29
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多