通过永久链接播放播放列表或曲目而不是trackid

时间:2013-10-14 00:14:16

标签: javascript soundcloud

我有一个嵌入式播放器,可以通过trackId工作,但是:

  1. 我但是我想让非技术用户将曲目或播放列表嵌入到页面中。
  2. 我有时需要重新生成播放列表
  3. 由于这两个原因,玩家需要trackId是不方便的。有没有办法可以玩永久链接?

    谢谢,    马丁。

    PS。我当前的iframe代码如下所示:

    SRC = “https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F$paramPlaylistID”

    此iFrame代码(来自评论#1)不起作用:

    SRC =“https://w.soundcloud.com/player/?url=http://api.soundcloud.com/resolve.json?url=http%3A%2F%2Fapi.soundcloud.com%2Fplaylists %2F $ paramPermalink“

    我可以使用更好的东西吗?我知道我可能需要对url = ... url =做一些事情但是我不清楚解析是否适用于这个播放器,或者答案是否适用于我是否制作了自定义播放器。

    再次感谢,M。

1 个答案:

答案 0 :(得分:1)

请参阅SoundCloud's API docs on resolve

  

当您只知道SoundCloud.com网址时,解析资源允许您查找和访问API资源。

$ curl -v 'http://api.soundcloud.com/resolve.json?url=http://soundcloud.com/matas/hobnotropic&client_id=YOUR_CLIENT_ID'

< HTTP/1.1 302 Moved Temporarily
< Location: http://api.soundcloud.com/tracks/49931.json
     

此请求将解析并重定向到曲目http://soundcloud.com/matas/hobnotropic的API资源网址。只需按照重定向,您就可以获得所需的表示。解析器支持以下网址:

     
      
  • 用户
  •   
  • 轨道
  •   
  • 播放列表(套)
  •   
  •   
  • 应用
  •   

您可以从用户那里获取永久链接并获取曲目或播放列表ID,如下所示:

function getSoundCloudId(permalink, callback) {
  var resolve = 'http://api.soundcloud.com/resolve.json?client_id=YOUR_CLIENT_ID&url=';
  var request = new XMLHttpRequest();
  request.onreadystatechange = function(){
    if (this.readyState === 4 && this.responseText) {
      var response = JSON.parse(this.responseText);
      if (response.id) callback(response.id);
    }
  };
  request.open('get', resolve+permalink, true);
  request.send();
}

然后你就这样使用它:

getSoundCloudId('https://soundcloud.com/matas/sets/library-project', function(id){
  // Do stuff with the ID
  console.log(id);
})