Skip to content

Instantly share code, notes, and snippets.

@vectorserver
Created August 25, 2016 20:27
Show Gist options
  • Save vectorserver/27a7615cc74fce02e7967388717708c9 to your computer and use it in GitHub Desktop.
Save vectorserver/27a7615cc74fce02e7967388717708c9 to your computer and use it in GitHub Desktop.
Качалка треков с history.radiorecord
<?php
/**
* Created by PhpStorm.
* User: endi
* Date: 25.08.2016
* Time: 23:18
* Скрипт для закачки музыки с http://history.radiorecord.ru
* Запускать строго в консольном режиме иначе пизда серваку
*/
header('Content-Type: text/html; charset=utf-8');
$chanels = array("brks", "gop");
//$chanel = "brks"; /*Имя канала*/
$data = "2016-08-24"; /*Дата архива*/
foreach ($chanels as $chanel) {
echo "Качаем канал $chanel!!!\n";
$url = "http://history.radiorecord.ru/air/$chanel/$data/"; /*Формируем ссылку для парсера*/
$savePatch = "D:\\YandexDisk\\Music\\record\\$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); /*Декодируем в человоекопонятный читаемый формат*/
$mp3name = iconv("utf-8", "cp1251", $mp3name);
$mp3Url = $url . $mystring; /*Создаем ссылку для скачивания*/
$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));
$log = "Закачан файл: " . iconv("cp1251", "utf-8", $newMp3name) . ", размер:$fileSize";
sleep(1);
} else {
if (fileSize($savePatch . "/" . $newMp3name) == file_size($mp3Url)) {
$log = "Файл " . iconv("cp1251", "utf-8", $newMp3name) . " уже сеществует!";
sleep(0);
} else {
file_put_contents($savePatch . "/" . $newMp3name, file_get_contents($mp3Url));
$log = "Заного качаем файл : " . iconv("cp1251", "utf-8", $newMp3name) . ", размер:$fileSize";
sleep(1);
}
}
/*задержка выполнения цыкла загрузок*/
echo date("Y-m-d H:i:s") . " | " . $log . "\n";
}
}
}
}
/*Функция для получения размера файла на удаленном сервере*/
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