#!/usr/bin/php <?php // // v0.3: extension-check, commandline-optionen, zenity-message // v0.2: bessere zufallszahlen // $pfad="/media/ENI14/lib/Movie/Serien/Die Simpsons/"; $player="totem"; $extensions="avi,mov,mpeg,mpg,divx,fla"; $args=parseArgs($argv); if ($args['pfad']) $pfad=$args['pfad']; if ($args['player']) $player=$args['player']; if ($args['extensions']) $extensions=$args['extensions']; $arr=listdir($pfad); $ok=array(); $extensions=explode(",",$extensions); foreach ($arr as $file){ $extension=strtolower(file_extension($file)); foreach ($extensions as $allowed){ if ($allowed==$extension) array_push($ok,$file); } } $item=$ok[mt_rand(0,count($ok)-1)]; $item=str_replace("//","/",$item); $bn=basename($item); if ($args['msg']){ $answer=str_replace("\n","", shell_exec('if ! zenity --question --text "Datei \\n<b>'.$bn.'</b>\\nabspielen?\\n\\n<small>Ort: '.$item.'</small>"; then echo "false"; fi;')); if ($answer=="false"){ die; } } shell_exec("$player '$item' &"); function listdir($start_dir='.') { $files = array(); if (is_dir($start_dir)) { $fh = opendir($start_dir); while (($file = readdir($fh)) !== false) { if (strcmp($file, '.')==0 || strcmp($file, '..')==0) continue; $filepath = $start_dir . '/' . $file; if ( is_dir($filepath) ) //$nix=$nix; $files = array_merge($files, listdir($filepath)); else array_push($files, $filepath); } closedir($fh); } else { $files = false; } return $files; } function parseArgs($argv){ array_shift($argv); $out = array(); foreach ($argv as $arg){ if (substr($arg,0,2) == '--'){ $eqPos = strpos($arg,'='); if ($eqPos === false){ $key = substr($arg,2); $out[$key] = isset($out[$key]) ? $out[$key] : true; } else { $key = substr($arg,2,$eqPos-2); $out[$key] = substr($arg,$eqPos+1); } } else if (substr($arg,0,1) == '-'){ if (substr($arg,2,1) == '='){ $key = substr($arg,1,1); $out[$key] = substr($arg,3); } else { $chars = str_split(substr($arg,1)); foreach ($chars as $char){ $key = $char; $out[$key] = isset($out[$key]) ? $out[$key] : true; } } } else { $out[] = $arg; } } return $out; } function file_extension($filepath) { preg_match('/[^?]*/', $filepath, $matches); $string = $matches[0]; $pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); if(count($pattern) == 1){ return ""; } if(count($pattern) > 1){ $filenamepart = $pattern[count($pattern)-1][0]; preg_match('/[^?]*/', $filenamepart, $matches); return $matches[0]; } } ?> |
|