Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl Скрипт, Скрипт проигрывания музыки 
V
    Опции темы
Louie
Дата 28.2.2011, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Вем добрый день.

Сразу приступлю к теме.

Имеется скрипт проигрывания музыки. Он беред рандомную музыку из папки и через кажды 5 песенок вставляет другую песенку. Но суть в другом. 
Как я уже подметил , скрипт играет рандомно, но мне надо чтобы всё шло по порядку. вот код:

Код

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

    }
        $num = scalar (@music);
        $play=int(rand($num));
        chomp $music[$play];
        return $music[$play];
}




Можете помочь и поправить этот код?

Это сообщение отредактировал(а) Louie - 28.2.2011, 16:53
PM MAIL   Вверх
powerfox
Дата 28.2.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Как-то так:
Код

    sub ices_get_next {
        state $cur_track = -1;
        print "Perl subsystem quering for new track:\n";
        if($jingle < 5){
            $jingle++;
            @music=`/bin/ls -1 /home/rmuzika/*.mp3`;
        }else{
            $jingle = 0;
            @music=`/bin/ls -1 /home/muzika/vstavki/*.mp3`;
        }
        $num = scalar (@music);
        if (cur_track == @music) {
            cur_track = -1;
        cur_track++;
        chomp $music[$cur_track];
        return $music[$cur_track];
    }


Это сообщение отредактировал(а) powerfox - 28.2.2011, 17:19


--------------------
user posted image
PM WWW   Вверх
Louie
Дата 28.2.2011, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



так. походу что-то не так.
выложу полностью плагин
Код

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 < 5){
        $jingle ++;
        @music=`/bin/ls -1 /home/rmusic/*.mp3`;
    }else{
        $jingle = 0;
        @music=`/bin/ls -1 /home/music/vstavki/*.mp3`;

    }
        $num = scalar (@music);
        $play=int(rand($num));
        chomp $music[$play];
        return $music[$play];
}

return 1;



после замены он выглядит так: 

Код

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 < 5){
        $jingle ++;
        @music=`/bin/ls -1 /home/rmusic/*.mp3`;
    }else{
        $jingle = 0;
        @music=`/bin/ls -1 /home/music/vstavki/*.mp3`;

    }
        $num = scalar (@music);
        if (cur_track == @music) {
            cur_track = -1;
        cur_track++;
        chomp $music[$cur_track];
       return $music[$cur_track];

}
sub ices_get_metadata {
       return "blablabla";
}
return 1;


и тогда Перл начинает ругаться:

Код

Logfile opened
Can't modify constant item in scalar assignment at /usr/local/etc/modules/ices.pm line 23, near "1;"
Missing right curly or square bracket at /usr/local/etc/modules/ices.pm line 32, at end of line
syntax error at /usr/local/etc/modules/ices.pm line 32, at EOF
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []

PM MAIL   Вверх
powerfox
Дата 28.2.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Стр. 22-24:
Код

        if (cur_track == @music) {
            cur_track = -1;
        }
        cur_track++;


Это сообщение отредактировал(а) powerfox - 28.2.2011, 17:55


--------------------
user posted image
PM WWW   Вверх
Louie
Дата 28.2.2011, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Код

Logfile opened
Can't modify constant item in scalar assignment at /usr/local/etc/modules/ices.pm line 23, near "1;"
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []


PM MAIL   Вверх
powerfox
Дата 28.2.2011, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Извиняюсь, ошибся smile
Надо так (не забудьте скобки в начали в конце):
Код

{
    my $cur_track = -1;
    sub ices_get_next {
        state 
        print "Perl subsystem quering for new track:\n";
        if($jingle < 5){
            $jingle++;
            @music=`/bin/ls -1 /home/rmuzika/*.mp3`;
        }else{
            $jingle = 0;
            @music=`/bin/ls -1 /home/muzika/vstavki/*.mp3`;
        }
        $num = scalar (@music);
        if (cur_track == @music) {
            cur_track = -1;
        }
        cur_track++;
        chomp $music[$cur_track];
        return $music[$cur_track];
}    



--------------------
user posted image
PM WWW   Вверх
Louie
Дата 28.2.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Код

Logfile opened
syntax error at /usr/local/etc/modules/ices.pm line 15, near "state
        print"
Missing right curly or square bracket at /usr/local/etc/modules/ices.pm line 37, at end of line
syntax error at /usr/local/etc/modules/ices.pm line 37, at EOF
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []


Наверное уже достал Вас =( 

Общий код теперь выглядит так -

Код

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

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

{
    my $cur_track = -1;
    sub ices_get_next {
        state 
        print "Perl subsystem quering for new track:\n";
        if($jingle < 5){
            $jingle++;
            @music=`/bin/ls -1 /home/rmusic/*.mp3`;
        }else{
            $jingle = 0;
            @music=`/bin/ls -1 /home/music/vstavki/*.mp3`;
        }
        $num = scalar (@music);
        if (cur_track == @music) {
            cur_track = -1;
        }
        cur_track++;
        chomp $music[$cur_track];
        return $music[$cur_track];


sub ices_get_metadata {
       return "blabla";
}
return 1;



PM MAIL   Вверх
powerfox
Дата 1.3.2011, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Цитата(Louie @  28.2.2011,  21:38 Найти цитируемый пост)
Наверное уже достал Вас =( 

Да это я косячу smile

Код

{
    my $cur_track = -1;
    sub ices_get_next {
        print "Perl subsystem quering for new track:\n";
        if($jingle < 5){
            $jingle++;
            @music=`/bin/ls -1 /home/rmuzika/*.mp3`;
        }else{
            $jingle = 0;
            @music=`/bin/ls -1 /home/muzika/vstavki/*.mp3`;
        }
        $num = scalar (@music);
        if (cur_track == @music) {
            $cur_track = -1;
        }
        $cur_track++;
        chomp $music[$cur_track];
        return $music[$cur_track];
    }
}




Это сообщение отредактировал(а) powerfox - 1.3.2011, 00:43


--------------------
user posted image
PM WWW   Вверх
Louie
Дата 1.3.2011, 04:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



так.. код работает. считывает все по порядку!! но теперь он ненаходит вставки .
Тобишь через каждые 5 песен он играет "вставку". Но когда дело доходит до этого, то перл выдает вот это.

Код

Perl subsystem quering for new track:
Playlist file name is empty, shutting down.
Perl subsystem shutting down:



Хотя до этого находил так же рандомно из папки и никакой плейлист ему не нужен был.. 

Исправили одно, нарисовался другой косяк +(

Эх... достал уже этот скрипт...


_-------------------------------------------

Хотя если поменять название папки - vstavki , на основную папку, то все продолжает играть дальше, по порядку. Т.е. Перл "потерял" папку. Права поставил 777 и на все песни в ней (ради проверки), всё равно не находит =( Он хочет играть только с одной папки =(

Это сообщение отредактировал(а) Louie - 1.3.2011, 04:13
PM MAIL   Вверх
powerfox
Дата 1.3.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Нужно так:
Код

if (cur_track == @music) {

--->
Код

if (cur_track >= @music) {




--------------------
user posted image
PM WWW   Вверх
arto
Дата 1.3.2011, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



my @mp3;

sub ices_init {
   my @j = </home/muzika/vstavki/*.mp3>
   my ( $i,$j );
   @mp3 = map { if (++$i%5 == 0) { $j[++$j%$#j] } else { $_ } } </home/muzika/*.mp3>;
}

sub ices_get_next { return shift @mp3; }

проверить крайние эффекты.
PM MAIL ICQ   Вверх
Louie
Дата 2.3.2011, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



arto - 
Код

my @mp3;

sub ices_init {
   my @j = </home/muzika/vstavki/*.mp3>
   my ( $i,$j );
   @mp3 = map { if (++$i%5 == 0) { $j[++$j%$#j] } else { $_ } } </home/muzika/*.mp3>;
}


sub ices_shutdown {
        print "Perl subsystem shutting down:\n";
}
sub ices_get_next { return shift @mp3; }



sub ices_get_metadata {
       return "GunGames.Lv Radio";
}



Код

Logfile opened
syntax error at /usr/local/etc/modules/ices.pm line 5, near "my "
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []

powerfox - Поменял код, выдаёт тоже-самое +(



Это сообщение отредактировал(а) Louie - 2.3.2011, 01:20
PM MAIL   Вверх
arto
Дата 2.3.2011, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



а чыто там до 5'ой строчки?
PM MAIL ICQ   Вверх
Louie
Дата 2.3.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Это весь код, который я вставил. Тобишь всё что есть, написано выше
PM MAIL   Вверх
arto
Дата 2.3.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



my @j = </home/muzika/vstavki/*.mp3>;
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1055 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.