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

Последние песни на php

 

228
zabawa @zabawa
Доброго времени суток, нужна ваша помощь. Необходимо выводить последние n песен, но на php.
Раньше использовался код js.

<script src=http://myradio24.com/informer.php?port=8020&get=0&utf8=0&timezone=0&songs=10></script>
<script>
//Last Songs
var lastsongs="";
if(infosongs && infosongs.length>0) {
lastsongs="<table><tr><td width=50>Время</td><td>Название</td></tr>";
for(var i=0;i<infosongs.length;i++) {
lastsongs+="<tr><td>"+infosongs[i][0]+"</td><td>"+infosongs[i][1]+"</td></tr>";
}
lastsongs+="</table><br>";
}
else lastsongs="Ничего не найдено.<br><br>";
document.write(""+lastsongs);
</script>


Но теперь нужен вывод, но без содержимого с сайта http.

Пыталась сделать так:


<meta http-equiv="refresh" content="30;url=lastsongs.php">
<?
error_reporting(0);
//cache info
$cp1251=1;
$cachefile="cache8020.dat";
if(@filemtime($cachefile)<time()-10) {
$informer=@file_get_contents("http://myradio24.com/users/8020/status.txt");
if($utf8) $informer=@iconv("windows-1251","utf-8//TRANSLIT",$informer);
file_put_contents($cachefile,$informer);
}

//get info
$informer=explode("|",file_get_contents($cachefile));
$informer[lastsongs]=$informer[10];


//print
echo "<table>
<tr><td>$informer[lastsongs]</td></tr>
</table>";

?>


Но ничего не получилось.
Просмотрела всю ветку "Скрипты для айскаст", но там представлены скрипты для тех, у кого есть доступ ко всем файлам, а я использую радиохостинг.

Всем заранее спасибо.

Отредактировано zabawa - 11.07.2014
36
insun @insun
$informer=@file_get_contents("http://myradio24.com/users/8020/status.txt");

Попробуйте открыть в браузере адрес http://myradio24.com/users/8020/status.txt. Где там n песен? Там только текущая.

$cachefile="cache8020.dat";

Файл cache8020.dat должен присутствовать в папке скрипта php, код которого вы приводите. Он там есть?

Отредактировано insun - 11.07.2014
228
zabawa @zabawa
а как тогда сделать?

36
insun @insun
В вашем случае нужно обратиться к админам вашего радиохостинга. Нужно знать, откуда информацию об n последних песен брать.

228
zabawa @zabawa
insun пишет:

$informer=@file_get_contents("http://myradio24.com/users/8020/status.txt");

Попробуйте открыть в браузере адрес http://myradio24.com/users/8020/status.txt. Где там n песен? Там только текущая.

$cachefile="cache8020.dat";

Файл cache8020.dat должен присутствовать в папке скрипта php, код которого вы приводите. Он там есть?


Этот файл есть.
А никак не вытащить информацию из представленного js скрипта?

36
insun @insun
А файл, код которого вы предоставили называется efirvedet.php?

228
zabawa @zabawa
нет, lastsongs.php

ошибку в рефреше я исправила, все равно не получается

Отредактировано zabawa - 11.07.2014
36
insun @insun
Из тех данных, что вы предоставили, можно попробовать такие костыли:
<meta http-equiv="refresh" content="30;url=lastsongs.php">

<?php

$data=explode("|",file_get_contents("http://myradio24.com/users/8020/status.txt")); //берем текущий трек

$arr=explode("|",file_get_contents("cache8020.dat")); //парсим файл cache8020.dat
$last=count($arr);

if ($data[9]!=$arr[($last-1)]) //если текущий трек не совпадает с последним треком в файле cache8020.dat
{
$cache=file_get_contents("cache8020.dat").'|'.$data[9]; //добавляем последний трек в файл cache8020.dat
file_put_contents("cache8020.dat",$cache); //перезаписываем файл cache8020.dat
}

$lastsongs=explode("|",file_get_contents("cache8020.dat"));
$i=(count($lastsongs)-1);
$n=10; //сколько последних треков будем выводить
$a=0;
while ($i>0 AND $a<10) //выводим последние треки
{
echo $lastsongs[$i].'<br />';
$i--;
$a++;
}

?>


Только объем файла cache8020.dat будет постоянно увеличиваться. В нем нужно будет вычищать самые старые треки. А можно оставить как базу всех прозвучавших треков.

И обязательно посмотрите права на запись файла cache8020.dat. Нужно, чтобы скрипт мог его перезаписывать. Кстати, возможно, что и ваш скрипт не отрабатывал из-за отсутствия прав на запись этого файла.

Но сам метод изначально ущербный. Что вашего скрипта, что этого. Чтобы постоянно обновлялась база последних треков в файле cache8020.dat, нужно, чтобы, как минимум, у одного слушателя была открыта страница. Чтобы по рефрешу перезагружалась и перезапускала скрипт. Иначе, если какое-то время, никто не откроет в браузере эту страницу, скрипт не будет отрабатывать, и база устареет. Ведь скрипт php сам по себе не запускается. Лучше запускать скрипт по крону, допустим, каждую минуту.

Отредактировано insun - 12.07.2014
228
zabawa @zabawa
Доброго времени суток, большое спасибо за помощь. Вопрос решила)