Skip to content

Instantly share code, notes, and snippets.

@vectorserver
Created August 25, 2016 19:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save vectorserver/5963ee1ef145c19da63e7a8906a05ff6 to your computer and use it in GitHub Desktop.
Save vectorserver/5963ee1ef145c19da63e7a8906a05ff6 to your computer and use it in GitHub Desktop.
Парсер истории треков с Радио Рекорд
<?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