ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
6   •   Посмотреть все темы

djIn и shoutcast!

 

78
djmarkus @djmarkus
да есть

78
djmarkus @djmarkus
ubuntu-studio пишет:

djmarkus пишет:

да есть


Не обещаю, что быстро, но обещаю что напишу вам код на PHP, чтобы вы дополнили свой.



Это супер!!!)))

382
Grigorij @gyurgin_1
Помогу ускорить процесс, вот кусок кода который у меня отправляет данные на Tunein.
$tunein_title = str_replace(" ", "+", $title);
$tunein_artist = str_replace(" ", "+", $artist);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://air.radiotime.com/Playing.ashx?partnerId=Ваш PartnerID&partnerKey=Ваш PartnerKey');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, '&title=' . $tunein_title . '&artist=' . $tunein_artist);
$res = curl_exec($curl);
if (!$res)
{
$error = curl_error($curl) . '(' . curl_errno($curl) . ')';
echo $error;
}
else
{
echo $res;
}
curl_close($curl);

Отредактировано gyurgin_1 - 02.11.2013
78
djmarkus @djmarkus
а как его применять ?

382
Grigorij @gyurgin_1
Пролистал назад немного тему, если применить к парсеру, то получается вот так:
<?php
$xml = @simplexml_load_file('title.xml'); //Где лежит файл ХМЛ

if ($xml)
{
$artist = $xml->ELEM->ARTIST;
$title = $xml->ELEM->NAME;
echo '<span>' . $artist . '</span>';
echo '<span>' . $title . '</span>';
}
else
{
}

$file = fopen("/docs/title.txt", "w"); //Путь к созд. файлу и его название
$str = $artist . " - " . $title;

if (!$file)
{
echo ("Ошибка открытия файла");
}
else
{
fputs($file, $str);
}

fclose($file);

$tunein_artist = str_replace(" ", "+", $artist);
$tunein_title = str_replace(" ", "+", $title);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://air.radiotime.com/Playing.ashx?partnerId=Ваш PartnerID&partnerKey=Ваш PartnerKey');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, '&title=' . $tunein_title . '&artist=' . $tunein_artist);
$res = curl_exec($curl);

if (!$res)
{
$error = curl_error($curl) . '(' . curl_errno($curl) . ')';
echo $error;
}
else
{
echo $res;
}

curl_close($curl);
?>

Отредактировано gyurgin_1 - 02.11.2013
382
Grigorij @gyurgin_1
Сразу исправления - на сервер tunein слать данные можно только один раз при смене трека, да и переписывать по нескольку раз Ваш текстовой файл тоже не нужно. Вот вариант с проверкой:
<?php
$xml = @simplexml_load_file('/title.xml'); //Где лежит файл ХМЛ

if ($xml)
{
$artist = $xml->ELEM->ARTIST;
$title = $xml->ELEM->NAME;
echo '<span>' . $artist . '</span>';
echo '<span>' . $title . '</span>';
}
else
{
}

$file_link = "/docs/title.txt"; //Путь к созд. файлу и его название
$str = $artist . " - " . $title;

if (file_get_contents($file_link) !== $str) { // Проверяем изменился ли трек
$file = fopen($file_link, "w");
if (!$file)
{
echo ("Ошибка открытия файла");
}
else
{
fputs($file, $str);
}

fclose($file);
$tunein_artist = str_replace(" ", "+", $artist);
$tunein_title = str_replace(" ", "+", $title);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://air.radiotime.com/Playing.ashx?partnerId=Ваш PartnerID&partnerKey=Ваш PartnerKey');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, '&title=' . $tunein_title . '&artist=' . $tunein_artist);
$res = curl_exec($curl);
if (!$res)
{
$error = curl_error($curl) . '(' . curl_errno($curl) . ')';
echo $error;
}
else
{
echo $res;
}

curl_close($curl);
}

?>

78
djmarkus @djmarkus
пробую - все передается - подожду туда ли передается и обновится ли инфо в tunein!
кстати Ваш PartnerID & partnerKey без ID Station достаточно. ?

78
djmarkus @djmarkus
<?php
$xml = @simplexml_load_file('/title.xml'); //Где лежит файл ХМЛ

if ($xml)
{
$artist = $xml->ELEM->ARTIST;
$title = $xml->ELEM->NAME;
echo '<span>' . $artist . '</span>';
echo '<span>' . $title . '</span>';
}
else
{
}

$file_link = "/docs/title.txt"; //Путь к созд. файлу и его название
$str = $artist . " - " . $title;

if (file_get_contents($file_link) !== $str) { // Проверяем изменился ли трек
$file = fopen($file_link, "w");
if (!$file)
{
echo ("Ошибка открытия файла");
}
else
{
fputs($file, $str);
}

fclose($file);
$tunein_artist = str_replace(" ", "+", $artist);
$tunein_title = str_replace(" ", "+", $title);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://air.radiotime.com/Playing.ashx?partnerId=Ваш PartnerID&partnerKey=Ваш PartnerKey'&id=Айди Станции);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, '&title=' . $tunein_title . '&artist=' . $tunein_artist);
$res = curl_exec($curl);
if (!$res)
{
$error = curl_error($curl) . '(' . curl_errno($curl) . ')';
echo $error;
}
else
{
echo $res;
}

curl_close($curl);
}

?>



Добавил Айди Станции и заработало !
********** PartnerID&partnerKey=Ваш PartnerKey'&id=Айди Станции);

Всем Спасибо)))

382
Grigorij @gyurgin_1
Ну тогда уж, (у вас одинарные кавычки не на месте) ********** PartnerID&partnerKey=Ваш PartnerKey&id=Айди Станции')
А так все верно, про id я не доглядел. Ну главное заработало, с чем и поздравляю!

Отредактировано gyurgin_1 - 03.11.2013
78
djmarkus @djmarkus
Спасибо Дядь

398
ubuntu-studio @ubuntu-studio
Ухххх, вот это я загулял в Германии =)

Хорошо, что уже есть решение на PHP, но мне захотелось написать это на C#

В поездке соорудил парсер, выполняющий все эти функции. [url=ircstudio.com/tmp/CDDXP.ZIP]Скачать тут[/url] Ссылка обновлена (15.11.2013 / 19:00 мск)
В файле ReadME.txt есть описание полей конфигурационного файла.
Работает это чудо в консольном режиме и обо всех действиях обязательно говорит.

XML файл джина опрашивается с задержкой в 3 секунды (в конфигурационном файле можно менять длину задержки)
Производится проверка на тип играемого элемента. ("Р", "Д", "М","П","Н"). Если играет "Реклама", "Джингл", "Программа", "Новости" или "Фал добавленный в плейлист из проводника" (любой немузыкальный элемент), то в текстовый файл записывается название радиостанции и слоган в формате "Название станции - Слоган", а в TuneIn ничего не отсылается.

Если играет музыкальный элемент, то производится проверка текущего и только что полученного артиста и названия трека из xml
Если они разные, то данные сохраняются в текстовый файл и управление передается функции, которая отправляет данные в TuneIn.
Сразу анализируется ответ и если сервер не принял данные либо сообщил об ошибке, то с интервалом в 10 секунд
будет предпринято 3 попытки отправить текущие данные заново. Если от сервера получено сообщение "200", что означает успех, либо все 3 попытки были безуспешными, всё начинается сначала со считывания xml джина.

Все пожелания с изменениями и исправлениями можно смело писать мне в почту.
Программа распространяется бесплатно.

П.С: Поскольку мне TuneIn так и не выдал PartnerID в течении недели (не знаю почему), то я не тестировал парсер на реальных данных.
Буду очень благодарен если кто-то это сделает.

Отредактировано ubuntu-studio - 15.11.2013
78
djmarkus @djmarkus
Вот и я тож щас в Германии, приеду протестирую!
кстати id оч долго не выдают я ждал около месяца!

было бы неплохо если была бы такая штука: артисты с тэгами через слеш посылались одним именем
: например
: Jay Sean/Pitbull - Im all Yours
а в итоге - Jay Sean - Im all Yours

398
ubuntu-studio @ubuntu-studio
djmarkus пишет:

: Jay Sean/Pitbull - Im all Yours
а в итоге - Jay Sean - Im all Yours


Почему бы не указывать правильно? Jay Sean feat. Pitbull - Im all Yours

78
djmarkus @djmarkus
tunein не всегда считает это правильным тэгом - не находит картинку в last.fm и совподения с плейлистами других радио

398
ubuntu-studio @ubuntu-studio
djmarkus пишет:

tunein не всегда считает это правильным тэгом - не находит картинку в last.fm и совподения с плейлистами других радио


То, что он не всегда находит, не означает что тег неправильный ;-)

78
djmarkus @djmarkus
ну вообщем неправильнее через слэш!

398
ubuntu-studio @ubuntu-studio
djmarkus пишет:

ну вообщем неправильнее через слэш!


Если приоритетный артист стоит у вас всегда первым до слеша, то выводить только первого - нет проблем, только маякните

78
djmarkus @djmarkus
ubuntu-studio пишет:

djmarkus пишет:

ну вообщем неправильнее через слэш!


Если приоритетный артист стоит у вас всегда первым до слеша, то выводить только первого - нет проблем, только маякните



буду очень признателен!!

398
ubuntu-studio @ubuntu-studio
djmarkus пишет:

буду очень признателен!!


В этой версии отрезается все что идет после слеша в артисте, по этому все главные исполнители должны стоять в начале.

"Jay Sean/Pitbull - Im all Yours" будет конвертирован в "Jay Sean - Im all Yours",
"DIMITRI VEGAS/LIKE MIKE/PROMISE LAND/MITCH CROWN - Alarma (Make Your Body Sing) (Vocal Mix)"
будет конвертировано в "DIMITRI VEGAS - Alarma (Make Your Body Sing) (Vocal Mix)"

[url=http://ircstudio.com/tmp/CDDXP - DJMARKUS.ZIP]>> тык-тык <<[/url]
Удачи, если что обращайтесь, в моем профиле есть скайп

382
Grigorij @gyurgin_1
Про запрещенные символы в запросе не забываем)) какой слеш - кто Вас этому научил?