【问题标题】:Retrieving Soundcloud media URL via PHP CURL?通过 PHP CURL 检索 Soundcloud 媒体 URL?
【发布时间】:2011-10-12 09:32:19
【问题描述】:

我正在使用 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&Expires=1318411541&Signature=yaX7Noe%2F8c5dFF0H%2BGfhZ%2FX0130%3D&__gda__=1318411541_6ed9d2af39e51b5f1e94e659eff0495d">redirected</a>.</body></html>

我想要的链接是整个media.soundcloud.com/sjkn57c6gAA5,就是这样。但是,如果我尝试对'//a/@href' 进行 xpath,则不会返回任何结果。谁能指出我如何获取此链接的正确方向,以便我可以生成指向该文件的适当链接?

提前谢谢!

特雷

【问题讨论】:

    标签: php api curl soundcloud


    【解决方案1】:

    如果你在 HTML 上使用 xpath(顺便不推荐,因为 HTML 不是 XML 的子集,除非它是 XHTML 并且不需要关闭某些标签),不应该是 //html/正文/a/@href?

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

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

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

    【讨论】:

    • 那么你会推荐什么来解析 HTML?我一直主要使用 XPath,直到现在还没有遇到问题。只是正则表达式?
    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 2010-11-25
    • 2019-10-28
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    相关资源
    最近更新 更多