Страница 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 при проигрывании файла по сети?
В скрипте можно тоже использоваться путь с диском -- это я для примера сетевой путь указал.