! Copyright (C) 2009 Brit Butler ! See http://factorcode.org/license.txt for BSD license. USING: kernel namespaces sequences arrays random command-line combinators io io.pathnames io.launcher io.directories.search ; IN: randomfile : display-usage ( -- ) "Usage: randomfile " print ; : video? ( extension -- ? ) { "avi" "mp4" "mov" "flv" "m4v" "mpg" "mkv" "ogm" "ogv" } member? ; : image? ( extension -- ? ) { "jpg" "png" } member? ; : mp3? ( extension -- ? ) "mp3" = ; : ogg? ( extension -- ? ) "ogg" = ; : play ( filepath -- process ) { { [ dup file-extension video? ] [ { "smplayer" "-fullscreen" } ] } { [ dup file-extension image? ] [ { "feh" "--bg-scale" } ] } { [ dup file-extension mp3? ] [ { "mpg123" } ] } { [ dup file-extension ogg? ] [ { "ogg123" } ] } [ "Error: Not implemented yet." ] } cond swap suffix run-process ; : choose-file ( dirpath -- filepath ) t recursive-directory-files 1 sample first ; : randomfile ( -- object ) command-line get [ current-directory get choose-file ] [ choose-file ] if-empty play ; MAIN: randomfile