Soundcloud: How do I know the sound cloud track ID

2020-07-13 07:30发布

问题:

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

When I look at the API docs, I see

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

When I look at the track I uploaded, it only provides me the permalink. How do I get the track ID from the website? Do I always have to do a /resolve to get the ID?

回答1:

This is probably more manual steps than /resolve, but it is "from the website." The sound id also appears in the embed code when you go to the sound and click "Share".

For example, if you go to a sound page, e.g.:

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

Then click "Share", which brings up a pop up. Click "Embed" to switch to the embed tab, and copy the Embed code, which will look something like:

<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>

Note the ID in the value of the url query parameter:

url=https%3A//api.soundcloud.com/tracks/47580057


回答2:

I'd use jquery ajax call to grab the data from Soundcloud. Say you save your variables permalink_url and client_id:

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

This should log an array of the songs. Check out this bin for reference http://jsbin.com/viviza/4/edit

Update: This answer is pretty old.

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

The SC object now allows for getting the id's directly

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
    })
})


回答3:

You could also get all the tracks from a given user id. Then use $.map() to place each of the tracks into an array. Call SC.stream() with song[i].id to play a random song from the array from the array of tracks.

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();
  });
});


回答4:

Using JavaScript to find the track data from a soundcloud song 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)
})


标签: soundcloud