Случайный файл из папки

Обсуждение программ nnCron и nnCron LITE

Случайный файл из папки

Postby Morituruz » Sat, 28 Jun 2014, 15:31

В дополнении к официальному плагину:
http://www.nncron.ru/download/plugins/files_pick.spf
предлагаю это решение, которое сканирует папку только при первом обращении, а в дальнейшем возвращает случайный элемент из сохранённого списка:
Code: Select all
<%
\ \\\\\\\\\\\\\\\\\\\\\\\\\\ поиск случайного файла в папке
USER grf_list   \ список
USER grf_counter \ количество файлов в папке
USER grf_random   \ случайный номер
USER grf_counter2   \ счётчик
USER-CREATE grf_path_buffer 256 USER-ALLOT
: grf_action { \ nv -- }
NodeValue TO nv
grf_counter2 1+!
grf_counter2 @ grf_random @ =
IF
   nv ASCIIZ> grf_path_buffer PLACE
THEN
;
: get_random_file { a u -- }
\ a u — путь с маской файлов
\ сканирует папку только при первом вызове, имена сохраняет в список
\ возвращает строку с именем файла
grf_list @ 0=
IF
   \ список пуст, собираем файлы в список:
   a u FOR-FILES
      IS-DIR? 0=
      IF
         FOUND-FULLPATH S>ZALLOC grf_list AddNode
         grf_counter 1+!
      THEN
   ;FOR-FILES
THEN
grf_counter @ RANDOM 1 + grf_random !
0 grf_counter2 !
['] grf_action grf_list DoList
grf_path_buffer COUNT
;
\ ///////////////////////////////// поиск случайного файла в папке
%>


С помощью этого решения мы можем проигрывать случайный аудиофайл при каком-либо событии:
Code: Select all
<%
: play_random_sound ( a u -- )
\ асинхронное воспроизведение случайного звука из папки
\ a u — путь с маской
get_random_file
1 0 2SWAP   \ 1 — асинхронное воспроизведение
DROP PlaySound DROP
;
%>

... или менять обои с помощью, например, Irfan View:
Code: Select all
#( CLASSIC-TASK-#-change_wallpaper
\ 1:23 28.06.2014
SingleInstance
Time: */15
\ если пользователь был активен в последние 15 минут
Rule: IDLE: 9000 NOT ;
Action:
S" c:\beautiful_girls\*" get_random_file
SWHide BelowNormalPriority
START-APPW: %ProgramFiles%\IrfanView\i_view32.exe %1 esPICKS% /wall=3 /killmesoftly
)#


В качестве бонуса :) вот моя коллекция звуков для новых сообщений:
https://yadi.sk/d/YBnjb_WQVDC2t
в архиве несколько папок, где файлы нормализованы под разную громкость.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 4 guests

cron