3

我的问题与此处的问题相同但是由于该问题从未得到解决,我无法私下向 PeeHaa 发送消息以询问答案,我将在此处再次询问。

我已经成功查询了 soundcloud api 并获得了每首曲目的 stream_url 并将其添加到我的 360 播放器的所有 href (demo here)中。我的元素代码如下所示:

<div class="ui360">
 <a href="/path/to/an.mp3" data-title="Track title">play "an.mp3"</a>
</div>

我有这个脚本来查找所有具有 data-title 属性的 a 标签,并根据 stream_url 为它们提供正确的 href,但是当我尝试单击浏览器中的 soundmanager 图标并播放曲目时,它只会被重定向到 . mp3 网址。

SC.initialize({
  client_id: 'MY_CLIENT_ID'
});

SC.get('/playlists/2450655', 'allow_redirects=False', function(playlist) {

  var titles = $('.audio .ui360 a').each(function(index){
    this.index = index;
  });

  for (var i = 0; i < playlist.tracks.length; i++) {    
    var id = '?client_id=MY_CLIENT_ID'    
    for (var j = 0; j < titles.length; j++) {      
      if (playlist.tracks[i].title === $(titles[j]).attr('data-title')) {
        $(titles[j]).attr('href', playlist.tracks[i].stream_url+id)
      }            
    }    
  }

});

有谁知道如何以这种方式获取正确的 URL 以播放托管在 soundcloud 上的曲目?

4

2 回答 2

5

我知道这是一个老问题,但问题让我陷入困境,我终于想通了,所以这是我对其他人的回答:

如果您在链接中指定 mp3 mimetype,Soundmanager 将起作用:

<div class="ui360">
    <a type="audio/mp3" href="https://api.soundcloud.com/tracks/49349198/stream?client_id=YOUR_CLIENT_ID" data-title="Track title">play "an.mp3"</a>
</div>
于 2013-06-26T18:59:30.050 回答
1

为什么不直接使用 SoundCloud JavaScript SDK 流式传输曲目?就像是:

SC.get('/playlists/2450655', function(playlist) {
  $(playlist.tracks).each(function(index, track) {
    $('a[href="' + track.stream_url + '"]').click(function(e) {
       e.preventDefault();
       SC.stream('/tracks/' + track.id, function(sound) {
         sound.play();
       });
    });
  });
});

这会解决您的问题,还是您需要解析 URL 的特定原因?

于 2012-10-18T05:38:23.070 回答