ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

Передача кирилической информации о треке в TuneIn

 

39
dkova @dkova
Добрый день. У меня есть icecast сервер. Я хочу передавать информацию об играющем треке в tunein. Написал такой скрипт:

<?php



$file = file("/var/log/icecast2/playlist.log");
$file_array = $file;
$far = array_slice($file, -1);
$far = array_reverse($far);
foreach ($far as $arr1 => $arr2){
$elem = explode('|', $arr2);

$song = $elem[3];
$infos_artist = explode(' - ', $song);
$infos_artist[0] = urlencode(trim($infos_artist[0]));
$infos_artist[1] = urlencode(trim($infos_artist[1]));
$partnerId = "1";

$partnerKey = "1";

$stationId = "1";

$artist_tunein = str_replace(' ','+', $infos_artist[0]);

$title_tunein = str_replace(' ','+', $infos_artist[1]);

$commercial = false;



if (($infos_artist[0] == "HCore+FM") || ($infos_artist[0] == "Promo")) $commercial = true;






$url_tunein = "http://air.radiotime.com/Playing.ashx?partnerId=".$partnerId."&partnerKey=".$partnerKey."&id=".$stationId."&title=".$title_tunein."&artist=".$artist_tunein."&commercial=".$commercial;




$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url_tunein);

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($ch);

$server_output = simplexml_load_string($data);

curl_close($ch);

?>

Но именно русские песни он не передаёт. Какое может быть решение? Заранее спасибо.

382
Grigorij @gyurgin_1
В начале скрипта header('Content-type: text/html; charset=UTF-8');
Ну и заменить $data = utf8_decode(curl_exec($ch));
Попробуйте, может и прокатит. Вобще конечно зверский способ - парсить логи, не забывайте: отсылать информацию для каждого трека можно только один раз.

39
dkova @dkova
gyurgin_1 пишет:

В начале скрипта header('Content-type: text/html; charset=UTF-8');
Ну и заменить $data = utf8_decode(curl_exec($ch));
Попробуйте, может и прокатит. Вобще конечно зверский способ - парсить логи, не забывайте: отсылать информацию для каждого трека можно только один раз.


У меня уже 3 недели каждые 15 сек отправляет, всё нормально)

Не работает

Отредактировано dkova - 07.06.2015
382
Grigorij @gyurgin_1
Ну понятно что работает, но наглеть все же не рекомендую, правила есть правила. Попробуйте из $url_tunein вот это ."&title=".$title_tunein."&artist=".$artist_tunein."&commercial=".$commercial убрать и отправить данные вот таким curl_setopt($ch, CURLOPT_URL, $url_tunein);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "&title=".$title_tunein."&artist=".$artist_tunein."&commercial=".$commercial);
способом.
И смотрите что прилетает в ответ, помогает иногда))

39
dkova @dkova
Тестировал таким же способом треки с умляутами - ромбами отображаются.