0

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

  1. 但我试图让非技术用户将曲目或播放列表嵌入到页面中。
  2. 我有时需要重新生成播放列表

由于这两个原因,播放器需要 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$参数永久链接"

我可以使用更好的东西吗?我认识到我可能需要对 url=...url= 做一些事情,但我不清楚 resolve 是否适用于此播放器,或者答案是否仅适用于我制作自定义播放器的情况。

再次感谢,M。

4

1 回答 1

1

请参阅SoundCloud 的 API 文档resolve

当您只知道 SoundCloud.com URL 时,解析资源允许您查找和访问 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 资源 URL 。只需按照重定向,您将获得所需的表示。解析器支持以下 URL:

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

您可以从用户那里获取永久链接并获取曲目或播放列表 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);
})
于 2013-10-14T00:58:55.270 回答