Soundcloud嵌入流URL(Node,JSON)

时间:2013-11-25 21:04:07

标签: javascript json node.js iframe soundcloud

我目前正在使用Node来抓取一个将所选数据存储在JSON文件中的博客。当从Soundcloud中抓取包含嵌入式轨道的博客文章时,我似乎只能收集iframe src而不是实际的跟踪链接(声音云链接或流链接)。

当我刮取iframe src网址时,我似乎只能获得以下格式的链接: https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/120261008&color=000000&auto_play=false&show_artwork=false

如果我无法抓取曲目网址,我是否有办法操纵上述链接如何存储到数组中?为了使这个链接可用,我只需要存储url = https%3A // api.soundcloud.com / tracks / 120261008(减去url =)。

但问题是%3A需要替换为:

在存储或调用url时,操作url以获得所需输出url的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

我不确定您计划使用跟踪网址后计划的内容,但要获得跟踪/播放列表的永久链接网址,您需要采用两步法。首先,您需要解析iframe src中查询字符串中的url参数:

CLIENT_ID = 'client_id=b45b1aa10f1ac2941910a7f0d10f8e28';
var src = 'https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/120261008&color=000000&auto_play=false&show_artwork=false',
    match = src.match(/url=([^&]*)/),
    resource = match[0],
    stream = decodeURIComponent(match[1])+'/stream/?'+CLIENT_ID;

然后,您需要向SoundCloud的解析API发出HTTP请求,以实际将该资源转换为永久链接URL:

var url = 'http://api.soundcloud.com/resolve.json?'+resource+'&'+CLIENT_ID;
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onload = function(){
  var data = JSON.parse(xhr.responseText);
  // do something with the data
  console.log(data.permalink_url);
};
xhr.send();