通过PHP CURL检索Soundcloud媒体URL?

时间:2011-10-12 09:32:19

标签: php api curl soundcloud

我正在使用Soundcloud API + PHP来提取有关soundcloud曲目的信息,以便将jPlayer用作播放列表的mp3播放器。现在,我可以完全访问有关该轨道的所有信息,除了实际的mp3链接,以便播放该轨道。

根据API,如果轨道允许流式传输,您只需要cURL流URL(即:http://api.soundcloud.com/tracks/24887826/stream?client_id=xxx)。

现在,如果我尝试cURL,我的结果是一个简单的HTML位<html><body>You are being <a href="http://ak-media.soundcloud.com/sjkn57c6gAA5.128.mp3?AWSAccessKeyId=AKIAJBHW5FB4ERKUQUOQ&amp;Expires=1318411541&amp;Signature=yaX7Noe%2F8c5dFF0H%2BGfhZ%2FX0130%3D&amp;__gda__=1318411541_6ed9d2af39e51b5f1e94e659eff0495d">redirected</a>.</body></html>

我想要的链接是整个media.soundcloud.com/sjkn57c6gAA5,就是这样。但是,如果我尝试xpath '//a/@href',我得不到返回的结果。任何人都可以指出我如何获取此链接的正确方向,以便我可以生成文件的相应链接?

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您在HTML上使用xpath(不推荐使用,因为HTML不是XML的子集,除非它是XHTML并且不需要关闭某些标记),不应该是// html /体/一个/ @ HREF?

否则,您可以使用正则表达式来提取URL:

if(preg_match('/href="(.*?)"/', $m)) {
    $url = $m[1];
}

或者您可以将其缩小以剥离其他部分,但您需要非常小心,因为我怀疑API保证URL始终具有相同的格式(例如,子域将始终以媒体结束)。