Spotify App API:从艺术家创建顶级曲目的播放器

时间:2014-02-20 05:36:45

标签: javascript jquery api spotify spotify-app

我现在遇到Toplists和Image的困难,我希望有人可以帮助我。基本上,我想做的就是创建一个播放器和播放列表与艺术家的顶级曲目。我尝试使用搜索,因为我无法从Toplists中获得所需的行为,但这并没有让我更接近我所以我想在这里问。

基本上,功能应该:

  1. 获取艺术家姓名或艺术家ID
  2. 找到艺术家前10首曲目
  3. 创建新的临时播放列表并添加10首曲目
  4. 创建并插入播放器和播放列表
  5. 这看起来很简单,但它让我有点疯狂。

2 个答案:

答案 0 :(得分:3)

您可以使用Toplist.forArtist功能获取艺术家的前10首曲目。

以下代码获取艺术家的前10首曲目,并呈现列表视图和播放器:

require(['$api/toplists#Toplist', '$views/list#List', '$views/image#Image'],
  function(Toplist, List, Image) {

  var artist = models.Artist.fromURI('spotify:artist:2qk9voo8llSGYcZ6xrBzKx');
  var toplist = Toplist.forArtist(artist);

  // fetch the 10 most played tracks
  toplist.tracks.snapshot(0, 10).done(function(tracks) {

    // create temporary playlist
    models.Playlist
      .createTemporary('myTempList')
      .done(function(playlist){ 
        playlist.load('tracks').done(function(){
          for (var i = 0, l = tracks.length; i < l; i++) {
              var track = tracks.get(i);
              playlist.tracks.add(track);
          }

          // append a list view
          var listWrapper = document.getElementById('list-wrapper');
          var list = List.forPlaylist(playlist);
          listWrapper.appendChild(list.node);
          list.init();

          // append a player
          // note that you might have a grey placeholder
          // see https://stackoverflow.com/questions/17477655
          var playerWrapper = document.getElementById('player-wrapper');
          var player = Image.forPlaylist(playlist, {player: true});
          playerWrapper.appendChild(player.node);
      });
    });
  });
});

JS代码引用了包含视图的2个占位符:

    <div id="list-wrapper"></div>
    <div id="player-wrapper"></div>

请注意,由于mosaic cover images for temporary playlist出现问题,您可能需要将默认封面占位符替换为其他图片。

答案 1 :(得分:-1)

不幸的是,你似乎必须暴力破解它。

  • 通过以下方式获取艺术家的所有曲目:
    • 迭代所有Artist's专辑,外观,合辑,单曲和收集所有曲目
    • 使用记录不佳但可能很容易猜到的Search模块并搜索艺术家,希望能够获得他们所有的音乐。这是advanced search docs
  • 检索所有曲目的受欢迎程度
  • 找出十大最受欢迎的曲目