1

Тема: ices + perl

Стоит perl следующего вида:

sub ices_init {
        print "Perl subsystem Initializing:\n";
        $jingle = 0;
        return 1;
}

sub ices_shutdown {
        print "Perl subsystem shutting down:\n";
}

sub ices_get_next {
        print "Perl subsystem quering for new track:\n";
  if($jingle < 12){
        $jingle ++;
        @music=`/bin/ls -1 /home/r4l/music/*.mp3`;
    }else{
        $jingle = 0;
        @music=`/bin/ls -1 /home/r4l/jingles/*.mp3`;

    }
        $num = scalar (@music);
        $play=int(rand($num));
        chomp $music[$play];
        $a=`wget http://url/now_cron.php`;
        return $music[$play];
}

sub ices_get_metadata {
        use MP3::Info;
        $tag = get_mp3tag($music[$play]) or die "No TAG info";
        return "$tag->{ARTIST} - $tag->{TITLE}";
}

return 1;

Проблемы две:
- названия треков выводятся 20/80 крокозябры/нормальные (теги все массово перекодировал)
- строчка "$a=`wget ..." запускает скрипт, который парсит инфу о треке со страницы статуса радио. Проблема в том, что парсинг выполняется чуть-чуть раньше запуска трека, соответственно информация об играющей композиции запаздывает.

Кто что может посоветовать?

Отредактировано Eclipse (05-01-2013 05:06:58)

2

Re: ices + perl

а если $a=`wget http://url/now_cron.php`; вставить в sub ices_get_metadata?
и почему так по идиотски запускать этот скрипт через wget ? Неужели сайт и ices на разных машинах?

3

Re: ices + perl

Не помогло, также запаздывает. Да, на разных.

4

Re: ices + perl

так запаздывает или раньше?

5

Re: ices + perl

скрипт выполняется сразу перед сменой, инфа запаздывает на 1 трек.

6

Re: ices + perl

можно тогда через $a=`wget http://url/now_cron.php`; передать и название текущего трека, или запускать другой скрипт в бекграунд с задержкой на выполнение wget http://url/now_cron.php