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

djIn и shoutcast!

 

78
djmarkus @djmarkus
да есть

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

djmarkus пишет:

да есть


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



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

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

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

0
382
Grigorij @gyurgin_1
Пролистал назад немного тему, если применить к парсеру, то получается вот так:
  1. <?php
  2. $xml = @simplexml_load_file('title.xml'); //Где лежит файл ХМЛ
  3. if ($xml)
  4. {
  5. $artist = $xml->ELEM->ARTIST;
  6. $title = $xml->ELEM->NAME;
  7. echo '<span>' . $artist . '</span>';
  8. echo '<span>' . $title . '</span>';
  9. }
  10. else
  11. {
  12. }
  13. $file = fopen("/docs/title.txt", "w"); //Путь к созд. файлу и его название
  14. $str = $artist . " - " . $title;
  15. if (!$file)
  16. {
  17. echo ("Ошибка открытия файла");
  18. }
  19. else
  20. {
  21. fputs($file, $str);
  22. }
  23. fclose($file);
  24. $tunein_artist = str_replace(" ", "+", $artist);
  25. $tunein_title = str_replace(" ", "+", $title);
  26. $curl = curl_init();
  27. curl_setopt($curl, CURLOPT_URL, 'http://air.radiotime.com/Playing.ashx?partnerId=Ваш PartnerID&partnerKey=Ваш PartnerKey');
  28. curl_setopt($curl, CURLOPT_HEADER, 1);
  29. curl_setopt($curl, CURLOPT_POST, 1);
  30. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  31. curl_setopt($curl, CURLOPT_POSTFIELDS, '&title=' . $tunein_title . '&artist=' . $tunein_artist);
  32. $res = curl_exec($curl);
  33. if (!$res)
  34. {
  35. $error = curl_error($curl) . '(' . curl_errno($curl) . ')';
  36. echo $error;
  37. }
  38. else
  39. {
  40. echo $res;
  41. }
  42. curl_close($curl);
  43. ?>

Отредактировано gyurgin_1 - 02.11.2013
0
382
Grigorij @gyurgin_1
Сразу исправления - на сервер tunein слать данные можно только один раз при смене трека, да и переписывать по нескольку раз Ваш текстовой файл тоже не нужно. Вот вариант с проверкой:
  1. <?php
  2. $xml = @simplexml_load_file('/title.xml'); //Где лежит файл ХМЛ
  3. if ($xml)
  4. {
  5. $artist = $xml->ELEM->ARTIST;
  6. $title = $xml->ELEM->NAME;
  7. echo '<span>' . $artist . '</span>';
  8. echo '<span>' . $title . '</span>';
  9. }
  10. else
  11. {
  12. }
  13. $file_link = "/docs/title.txt"; //Путь к созд. файлу и его название
  14. $str = $artist . " - " . $title;
  15. if (file_get_contents($file_link) !== $str) { // Проверяем изменился ли трек
  16. $file = fopen($file_link, "w");
  17. if (!$file)
  18. {
  19. echo ("Ошибка открытия файла");
  20. }
  21. else
  22. {
  23. fputs($file, $str);
  24. }
  25. fclose($file);
  26. $tunein_artist = str_replace(" ", "+", $artist);
  27. $tunein_title = str_replace(" ", "+", $title);
  28. $curl = curl_init();
  29. curl_setopt($curl, CURLOPT_URL, 'http://air.radiotime.com/Playing.ashx?partnerId=Ваш PartnerID&partnerKey=Ваш PartnerKey');
  30. curl_setopt($curl, CURLOPT_HEADER, 1);
  31. curl_setopt($curl, CURLOPT_POST, 1);
  32. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  33. curl_setopt($curl, CURLOPT_POSTFIELDS, '&title=' . $tunein_title . '&artist=' . $tunein_artist);
  34. $res = curl_exec($curl);
  35. if (!$res)
  36. {
  37. $error = curl_error($curl) . '(' . curl_errno($curl) . ')';
  38. echo $error;
  39. }
  40. else
  41. {
  42. echo $res;
  43. }
  44. curl_close($curl);
  45. }
  46. ?>

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

0
78
djmarkus @djmarkus
  1. <?php
  2. $xml = @simplexml_load_file('/title.xml'); //Где лежит файл ХМЛ
  3. if ($xml)
  4. {
  5. $artist = $xml->ELEM->ARTIST;
  6. $title = $xml->ELEM->NAME;
  7. echo '<span>' . $artist . '</span>';
  8. echo '<span>' . $title . '</span>';
  9. }
  10. else
  11. {
  12. }
  13. $file_link = "/docs/title.txt"; //Путь к созд. файлу и его название
  14. $str = $artist . " - " . $title;
  15. if (file_get_contents($file_link) !== $str) { // Проверяем изменился ли трек
  16. $file = fopen($file_link, "w");
  17. if (!$file)
  18. {
  19. echo ("Ошибка открытия файла");
  20. }
  21. else
  22. {
  23. fputs($file, $str);
  24. }
  25. fclose($file);
  26. $tunein_artist = str_replace(" ", "+", $artist);
  27. $tunein_title = str_replace(" ", "+", $title);
  28. $curl = curl_init();
  29. curl_setopt($curl, CURLOPT_URL, 'http://air.radiotime.com/Playing.ashx?partnerId=Ваш PartnerID&partnerKey=Ваш PartnerKey'&id=Айди Станции);
  30. curl_setopt($curl, CURLOPT_HEADER, 1);
  31. curl_setopt($curl, CURLOPT_POST, 1);
  32. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  33. curl_setopt($curl, CURLOPT_POSTFIELDS, '&title=' . $tunein_title . '&artist=' . $tunein_artist);
  34. $res = curl_exec($curl);
  35. if (!$res)
  36. {
  37. $error = curl_error($curl) . '(' . curl_errno($curl) . ')';
  38. echo $error;
  39. }
  40. else
  41. {
  42. echo $res;
  43. }
  44. curl_close($curl);
  45. }
  46. ?>



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


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

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

А так все верно, про id я не доглядел. Ну главное заработало, с чем и поздравляю!

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

0
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
0
78
djmarkus @djmarkus
Вот и я тож щас в Германии, приеду протестирую!
кстати id оч долго не выдают я ждал около месяца!

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

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

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


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

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

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

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


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

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

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

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


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

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

djmarkus пишет:

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


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



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

0
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]
Удачи, если что обращайтесь, в моем профиле есть скайп

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

0