Получение URL-адреса Soundcloud media через PHP CURL?

Я использую Soundcloud API + PHP для извлечения информации о треках Soundcloud, чтобы использовать jPlayer в качестве mp3-плеера для списков воспроизведения. Теперь я могу полностью получить доступ ко всей информации о треке, кроме фактической ссылки на mp3, чтобы воспроизвести трек.

Согласно API, если дорожка разрешает потоковую передачу, вам просто нужно указать 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', я не получу никаких результатов. Может ли кто-нибудь указать мне правильное направление, как получить эту ссылку, чтобы я мог создать соответствующую ссылку на файл?

Спасибо заранее!

Тре


person tr3online    schedule 12.10.2011    source источник


Ответы (1)


Если вы используете xpath для HTML (кстати, не рекомендуется, поскольку HTML не является подмножеством XML, если только это не XHTML и не требует закрытия некоторых тегов), разве это не должно быть //html/body/a /@href?

В противном случае вы можете использовать регулярное выражение для извлечения URL-адреса:

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

Или вы можете сузить его, чтобы удалить другие части, но вам нужно быть очень осторожным, потому что я сомневаюсь, что API гарантирует, что URL-адрес всегда будет иметь один и тот же формат (например, субдомен всегда будет заканчиваться на медиа).

person Dave    schedule 12.10.2011
comment
Что бы вы порекомендовали для парсинга HTML тогда? В основном я использовал XPath и до сих пор не сталкивался с проблемой. Просто регулярное выражение? - person tr3online; 12.10.2011