我有一个嵌入式播放器,可以通过trackId工作,但是:
由于这两个原因,玩家需要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。
答案 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);
})