Страница 1 из 2

Нужен скрипт

Добавлено: Вт ноя 13, 2012 7:43 pm
Alex
Нужен скрипт, который проигрывает 1 файл из заданной папки, при следующем вызове — 2-й и т. д. по порядку. Так удобно прослушивать (например раз в час или раз в полчаса или раз в день или по событиям) _по частям_ книги, сказки, обучающие программы или музыку. Что то вроде радиовещания получается.

Думается труд, затраченный на создание такого скрипта, окупится сторицей.

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 11:46 am
sergejey
Alex писал(а):Нужен скрипт, который проигрывает 1 файл из заданной папки, при следующем вызове — 2-й и т. д. по порядку. Так удобно прослушивать (например раз в час или раз в полчаса или раз в день или по событиям) _по частям_ книги, сказки, обучающие программы или музыку. Что то вроде радиовещания получается.

Думается труд, затраченный на создание такого скрипта, окупится сторицей.

Код ниже. Написал навскидку -- возможности проверить прямо сейчас нету. Но должен работать :)

Код: Выделить всё

$folder='\\\\home\\media\\folder1'; // путь к папке, откуда последовательно надо брать файлы (заменяем на свой)

$alreadyPlayed=gg("AlreadyPlayedFiles"); // берём список уже проигранных файлов из переменной ThisComputer.AlreadyPlayedFiles (если что, можно вручную очистить через модуль Классы объектов)

if (!$alreadyPlayed) {
 $alreadyPlayed='0';
}
$tmp=explode('|',$alreadyPlayed);
$total=count($tmp);
for($i=0;$i<$total;$i++) {
 $seen[$tmp[$i]]=1;
}

$path='';

  @$d=openDir($folder);
  
  $files=array();

// читаем файлы в папке
  if ($d) {
  while ($file=readDir($d)) {
   if (($file==".") || ($file=="..") || ($file=="Descript.ion")) {
    continue;
   }
   $files[]=$file;
   }  
  }

// сортируем по имени

   function sort_files($a, $b) {
    return strcmp(strtoupper($a), strtoupper($b)); 
   }
  usort($files, 'sort_files');
  
// выбираем файл на проигрывание
$total=count($files);
for($i=0;$i<$total;$i++) {
  $file=$files[$i];
   if ($path) {
    continue;
   }
   if (!$seen[$file]) {
    $alreadyPlayed.='|'.$file;
    $path=$folder.'\\'.$file;
   }
}  

// проигрываем файл
if ($path) {
 playMedia($path);
 sg("AlreadyPlayedFiles",$alreadyPlayed);
} else {
 sg("AlreadyPlayedFiles",''); // если всё уже проиграно, то очищаем историю
}
добавляем в сценарии этот код и называем его, например, playNextFileInFolder

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 11:58 am
Alex
Большое спасибо. Сейчас попробуем.

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 1:21 pm
Alex
Почти всё работает. Файлы попадают в проигрыватель, прослушанные попадают в свойство. Но проигрывание автоматически не включается, нужно нажать на знак PAUSE на проигрывателе и тогда проигрывается нужный файл.

Если просто вызвать playMedia, то всё работает правильно, т. е. воспроизведение вклюсается сразу, без нажатия на PAUSE.

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 1:42 pm
sergejey
Alex писал(а):Почти всё работает. Файлы попадают в проигрыватель, прослушанные попадают в свойство. Но проигрывание автоматически не включается, нужно нажать на знак PAUSE на проигрывателе и тогда проигрывается нужный файл.
Если просто вызвать playMedia, то всё работает правильно, т. е. воспроизведение вклюсается сразу, без нажатия на PAUSE.
А какой плэер используется?

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 1:53 pm
Alex
Используется foobar. Почему то отдельно вызываемый playMedia работает правильно а playMedia в этом скрипте сразу не воспроизводит файл.

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 3:18 pm
Alex
Заметил такую штуку. playMedia

"\\COMPUTER\Folder\Folder\file.mp3” - не играет
“DISK:\Folder\Folder\file.mp3” - играет

Как правильно задавать пути? И почему не играет первый вариант?

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 4:16 pm
sergejey
Возможно дело в том, что надо дублировать знак "\", а если нужно \\ то вообще использовать \\\\
Это особенности php.

По поводу проигрывания -- и там и там playmedia должен по идее отрабатывать одинаково, это ж одна функция. С foobar я не работал вплотную, т.к. сам пользуюсь VLC. Но попробую поставить Foobar дома, посмотреть в чём может быть дело.

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 4:51 pm
Alex
Удвоение не помогло.

playMedia играет потому, что путь там указан в формате disk:\....

А в скрипте используется формат \\\\computer\\... с которым проблемы. С другой стороны файлы правильно попадают в foobar, только не играют без ручного нажатия кнопки PAUSE.

Re: Нужен скрипт

Добавлено: Ср ноя 14, 2012 5:00 pm
sergejey
Может это особенность foobar при проигрывании файла по сети?
В скрипте можно тоже использоваться путь с диском -- это я для примера сетевой путь указал.