5

http://developers.soundcloud.com/docs/api

当我查看 API 文档时,我看到

 SC.stream("/tracks/293", function(sound){
      sound.play();
 });

当我查看我上传的曲目时,它只为我提供了永久链接。如何从网站获取曲目 ID?我是否总是需要执行 /resolve 才能获得 ID?

4

4 回答 4

11

这可能是比 /resolve 更多的手动步骤,但它是“来自网站”。当您转到声音并单击“共享”时,声音 ID 也会出现在嵌入代码中。

例如,如果您转到声音页面,例如:

https://soundcloud.com/lowcountrykingdom/another-ordinary-day

然后单击“共享”,这会弹出一个弹出窗口。单击“嵌入”切换到嵌入选项卡,然后复制嵌入代码,如下所示:

<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/47580057&amp;color=ff6600&amp;auto_play=false&amp;show_artwork=true"></iframe>

注意 url 查询参数值中的 ID:

url=https%3A//api.soundcloud.com/tracks/47580057
于 2013-12-14T07:30:21.510 回答
3

我会使用 jquery ajax 调用从 Soundcloud 中获取数据。假设您保存变量 permalink_url 和 client_id:

$.get('http://api.soundcloud.com/resolve.json?url='+
    permalink_url+'/tracks&client_id='+client_id , function (result) {
        console.log(result);
    });

这应该记录一系列歌曲。查看此 bin 以供参考http://jsbin.com/viviza/4/edit

更新:这个答案很老了。

Soundclick 文档https://developers.soundcloud.com/docs/api#uploading

SC 对象现在允许直接获取 id

SC.connect().then(function(){
    return SC.get('/me/tracks');
}).then(function(tracks){
    return tracks.map(function(track){
       console.log("you can log the id here too: " + track.id")
       return track.id
    })
})
于 2014-04-05T22:45:16.750 回答
1

您还可以从给定的用户 ID 中获取所有曲目。然后使用 $.map() 将每个轨道放入一个数组中。使用 song[i].id 调用 SC.stream() 以从曲目数组的数组中播放一首随机歌曲。

SC.get('/users/123456/tracks/', function(tracks) {

  // get an array of tracks
  var song = $.map(tracks, function(i){
    return i;
  });

  var i = Math.floor(Math.random() * song.length)  // get a random value between 0 & the  of songs in SC account -1


  SC.stream(song[i].id, function(sound){
    sound.play();
  });
});
于 2014-03-02T01:26:37.417 回答
1

使用 JavaScript 从 soundcloud 歌曲 url 中查找曲目数据:

let trackUrl = 'https://soundcloud.com/user-869590724/talk-to-animals-sentra-remix'
let client_id = '<your-client-id>'

let resolveUrl = `http://api.soundcloud.com/resolve.json?url=${trackUrl}/tracks&client_id=${client_id}`
fetch(resolveUrl, {
  method: 'get'
}).then((response) => {
  return response.json()
}).then((result) => {
  /* now you have the track */
  console.log(result)
})
于 2017-01-31T12:16:09.837 回答