! 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 video? ] [ { "smplayer" "-fullscreen" } swap suffix run-process ] } { [ dup image? ] [ { "feh" "--bg-scale" } swap suffix run-process ] } { [ dup mp3? ] [ "mpg123" swap 2array run-process ] } { [ dup ogg? ] [ "ogg123" swap 2array run-process ] } [ "Error: Not implemented yet." ] } cond ; : 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