вопрос
Есть сайт www.soundclick.com, с него нужно ретранслировать две ссылки:
- первая на прослушивание трека (битрейт ниже)
- вторая на скачивание, соответственно качество получше
Что бы рестранслировать первую ссылку достаточно прописывать куки с главной страницы soundclick.com
А вот чтобы получить ссылку на скачивание, куки нужно писать с страницы https://www.soundclick.com/utils_download/download_song.cfm?ID=14061226 , а потом уже по ссылке https://www.soundclick.com/utils_download/download_songDeliver.cfm?songID=14061226&ppID=0&selectLevel=320 получать сам трек
Для этого написан парсер:
Проблема заключается в том что ссылка на прослушивание (/test.php?type=play) ретранслируется норм, а вот ссылка на скачивание (/test.php?type=dowload) отдает пустой файл с содержимым:
Просьба помочь в решении проблемы дельным советом.
Забыл уточнить что на локалхосте все работает и все дело в версии Curl (не работает на свежих версиях). Не особо хочу менять ОС на сервере на более старую из-за этого.
- первая на прослушивание трека (битрейт ниже)
- вторая на скачивание, соответственно качество получше
Что бы рестранслировать первую ссылку достаточно прописывать куки с главной страницы soundclick.com
А вот чтобы получить ссылку на скачивание, куки нужно писать с страницы https://www.soundclick.com/utils_download/download_song.cfm?ID=14061226 , а потом уже по ссылке https://www.soundclick.com/utils_download/download_songDeliver.cfm?songID=14061226&ppID=0&selectLevel=320 получать сам трек
Для этого написан парсер:
<!--?php
$id = '14061226';
$track_name = isset($_GET['name']) ? $_GET['name'] : 'test';
$type = isset($_GET['type']) ? $_GET['type'] : null;
if ($type == 'play') {
$file = getCurl('https://www.soundclick.com/playerV5/panels/audioStream.cfm?songID='. $id);
file_download($file, $track_name);
} else if ($type == 'donwload') {
$link = 'https://www.soundclick.com/utils_download/download_song.cfm?ID='. $id;
$link_download = 'https://www.soundclick.com/utils_download/download_songDeliver.cfm?songID='. $id. '&ppID=0&selectLevel=320';
getCurl($link);
file_download( getCurl($link_download) , $track_name);
}
function getCurl($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$header_size = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
function file_download($file, $track_name) {
header('Content-Type: audio/mpeg');
header("Accept-Ranges: bytes");
header("Content-Length: ". mb_strlen($file, '8bit') );
header("Cache-Control: max-age=0");
header("Range: bytes=0-58367");
header('Content-Disposition: attachment; filename="'. $track_name. '.mp3"');
echo $file;
}
?-->
Проблема заключается в том что ссылка на прослушивание (/test.php?type=play) ретранслируется норм, а вот ссылка на скачивание (/test.php?type=dowload) отдает пустой файл с содержимым:
<?xml version="1.0" encoding="UTF-8"?><Error><Code>HttpVersionNotSupported</Code><Message>The HTTP version specified is not supported.</Message><RequestId>4B988A15EDC9D2FE</RequestId><HostId>MWexueSVjDOfOaVdYRGG5qGcBBiNxRrH0Z1k3B+/d1L7IMeKXHVcXjNb7BgJ0TzvyJYXNDqKjCTjNuTT1f3as74e3O7w8uHJ</HostId></Error>
Просьба помочь в решении проблемы дельным советом.
Забыл уточнить что на локалхосте все работает и все дело в версии Curl (не работает на свежих версиях). Не особо хочу менять ОС на сервере на более старую из-за этого.