#!/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];
		}
} 
 
?>