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

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

 

228
zabawa @zabawa
Доброго времени суток, нужна ваша помощь. Необходимо выводить последние n песен, но на php.
Раньше использовался код js.
  1.  
  2. <script src=http://myradio24.com/informer.php?port=8020&get=0&utf8=0&timezone=0&songs=10></script>
  3. <script>
  4. //Last Songs
  5. var lastsongs="";
  6. if(infosongs && infosongs.length>0) {
  7. lastsongs="<table><tr><td width=50>Время</td><td>Название</td></tr>";
  8. for(var i=0;i<infosongs.length;i++) {
  9. lastsongs+="<tr><td>"+infosongs[i][0]+"</td><td>"+infosongs[i][1]+"</td></tr>";
  10. }
  11. lastsongs+="</table><br>";
  12. }
  13. else lastsongs="Ничего не найдено.<br><br>";
  14. document.write(""+lastsongs);
  15. </script>


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

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

  1.  
  2. <meta http-equiv="refresh" content="30;url=lastsongs.php">
  3. <?
  4. error_reporting(0);
  5. //cache info
  6. $cp1251=1;
  7. $cachefile="cache8020.dat";
  8. if(@filemtime($cachefile)<time()-10) {
  9. $informer=@file_get_contents("http://myradio24.com/users/8020/status.txt");
  10. if($utf8) $informer=@iconv("windows-1251","utf-8//TRANSLIT",$informer);
  11. file_put_contents($cachefile,$informer);
  12. }
  13. //get info
  14. $informer=explode("|",file_get_contents($cachefile));
  15. $informer[lastsongs]=$informer[10];
  16. //print
  17. echo "<table>
  18. <tr><td>$informer[lastsongs]</td></tr>
  19. </table>";
  20. ?>


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

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

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


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

  1. $cachefile="cache8020.dat";


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

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

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

0
228
zabawa @zabawa
insun пишет:

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


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

  1. $cachefile="cache8020.dat";


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


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

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

0
228
zabawa @zabawa
нет, lastsongs.php

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

Отредактировано zabawa - 11.07.2014
0
36
insun @insun
Из тех данных, что вы предоставили, можно попробовать такие костыли:
  1. <meta http-equiv="refresh" content="30;url=lastsongs.php">
  2. <?php
  3. $data=explode("|",file_get_contents("http://myradio24.com/users/8020/status.txt")); //берем текущий трек
  4. $arr=explode("|",file_get_contents("cache8020.dat")); //парсим файл cache8020.dat
  5. $last=count($arr);
  6. if ($data[9]!=$arr[($last-1)]) //если текущий трек не совпадает с последним треком в файле cache8020.dat
  7. {
  8. $cache=file_get_contents("cache8020.dat").'|'.$data[9]; //добавляем последний трек в файл cache8020.dat
  9. file_put_contents("cache8020.dat",$cache); //перезаписываем файл cache8020.dat
  10. }
  11. $lastsongs=explode("|",file_get_contents("cache8020.dat"));
  12. $i=(count($lastsongs)-1);
  13. $n=10; //сколько последних треков будем выводить
  14. $a=0;
  15. while ($i>0 AND $a<10) //выводим последние треки
  16. {
  17. echo $lastsongs[$i].'<br />';
  18. $i--;
  19. $a++;
  20. }
  21. ?>


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

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

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

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

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.