Нужен скрипт

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Нужен скрипт

Сообщение Alex » Вт ноя 13, 2012 7:43 pm

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

Думается труд, затраченный на создание такого скрипта, окупится сторицей.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Ср ноя 14, 2012 11:46 am

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

Сообщение Alex » Ср ноя 14, 2012 11:58 am

Большое спасибо. Сейчас попробуем.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

Сообщение Alex » Ср ноя 14, 2012 1:21 pm

Почти всё работает. Файлы попадают в проигрыватель, прослушанные попадают в свойство. Но проигрывание автоматически не включается, нужно нажать на знак PAUSE на проигрывателе и тогда проигрывается нужный файл.

Если просто вызвать playMedia, то всё работает правильно, т. е. воспроизведение вклюсается сразу, без нажатия на PAUSE.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Ср ноя 14, 2012 1:42 pm

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

Сообщение Alex » Ср ноя 14, 2012 1:53 pm

Используется foobar. Почему то отдельно вызываемый playMedia работает правильно а playMedia в этом скрипте сразу не воспроизводит файл.
Последний раз редактировалось Alex Ср ноя 14, 2012 3:19 pm, всего редактировалось 1 раз.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

Сообщение Alex » Ср ноя 14, 2012 3:18 pm

Заметил такую штуку. playMedia

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

Как правильно задавать пути? И почему не играет первый вариант?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Ср ноя 14, 2012 4:16 pm

Возможно дело в том, что надо дублировать знак "\", а если нужно \\ то вообще использовать \\\\
Это особенности php.

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

Сообщение Alex » Ср ноя 14, 2012 4:51 pm

Удвоение не помогло.

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

А в скрипте используется формат \\\\computer\\... с которым проблемы. С другой стороны файлы правильно попадают в foobar, только не играют без ручного нажатия кнопки PAUSE.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Ср ноя 14, 2012 5:00 pm

Может это особенность foobar при проигрывании файла по сети?
В скрипте можно тоже использоваться путь с диском -- это я для примера сетевой путь указал.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить