Created
August 25, 2016 19:44
-
-
Save vectorserver/5963ee1ef145c19da63e7a8906a05ff6 to your computer and use it in GitHub Desktop.
Парсер истории треков с Радио Рекорд
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Created by PhpStorm. | |
* User: endi | |
* Date: 25.08.2016 | |
* Time: 23:18 | |
* Скрипт для закачки музыки с http://history.radiorecord.ru | |
* Запускать строго в консольном режиме иначе пизда серваку | |
*/ | |
$chanel = "brks"; /*Имя канала*/ | |
$data = "2016-08-24"; /*Дата архива*/ | |
$url = "http://history.radiorecord.ru/air/$chanel/$data/"; /*Формируем ссылку для парсера*/ | |
$savePatch = "radioRecord/download/$chanel"; /*Папка для закачки музыки*/ | |
/*Создаем папку с каналом*/ | |
if (!file_exists($savePatch)) { | |
mkdir($savePatch, 0777, true); | |
} | |
/*Парсер ссылок музыки*/ | |
$dom = new DOMDocument; | |
$dom->loadHTML(file_get_contents($url)); | |
$xpath = new DOMXPath($dom); | |
$nodes = $xpath->query('//a/@href'); | |
foreach ($nodes as $href) { | |
$mystring = $href->nodeValue; | |
$findme = ".mp3"; | |
/*Ищем ссылки с музыкой*/ | |
$pos = strpos($mystring, $findme); | |
if ($pos !== false) { | |
$mp3name = urldecode($mystring); /*Декодируем в человоекопонятный читаемый формат*/ | |
$mp3Url = $url . $mp3name; /*Создаем ссылку для скачивания*/ | |
$fileSize = round((int)file_size($mp3Url) / 1024 / 1024); /*Получаем размер файла в мегабайтах*/ | |
$newMp3name = preg_replace("/\d{2}:\d{2}:\d{2}\s-\s(.*\.mp3)/", "$1", $mp3name); | |
/*Отсекаем джинглы*/ | |
if ($fileSize >= 3) { | |
/*Прверка сущесвования файла и закачка его | |
Проверка размера файла на сервере с уже закачаным*/ | |
if (!file_exists($savePatch . "/" . $newMp3name)) { | |
file_put_contents($savePatch . "/" . $newMp3name, file_get_contents($mp3Url)); | |
echo "Закачан файл: $newMp3name, размер:$fileSize\n"; | |
} else { | |
if (fileSize($savePatch . "/" . $newMp3name) == file_size($mp3Url)) { | |
echo "Файл $newMp3name уже сеществует!\n"; | |
} else { | |
file_put_contents($savePatch . "/" . $newMp3name, file_get_contents($mp3Url)); | |
echo "Заного качаем файл : $newMp3name, размер:$fileSize\n"; | |
} | |
} | |
/*задержка выполнения цыкла загрузок*/ | |
sleep(2); | |
} | |
} | |
} | |
/*Функция для получения размера файла на удаленном сервере*/ | |
function file_size($url) | |
{ | |
$ch = curl_init($url); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); | |
curl_setopt($ch, CURLOPT_HEADER, TRUE); | |
curl_setopt($ch, CURLOPT_NOBODY, TRUE); | |
$data = curl_exec($ch); | |
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); | |
curl_close($ch); | |
return $size; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment