Files
Yuba/Tester/Tester.php
2019-10-19 05:54:29 -07:00

136 lines
6.6 KiB
PHP

<?
// Yuba Preview Tester 0.1.5
//print_r($argv);
$mode = $argv[1];
// Bundled tools
$bin_gfi = __DIR__."/bin/GetFileInfo";
$bin_mediainfo = __DIR__."/bin/mediainfo";
$bin_exiftool = __DIR__."/bin/exiftool";
$bin_ffmpeg = __DIR__."/bin/ffmpeg";
$bin_qlthumb = __DIR__."/bin/ql-thumbnail";
$bin_qlicon = __DIR__."/bin/ql-icon";
$bin_qltool = __DIR__."/bin/qltool";
$bin_sox = __DIR__."/bin/sox";
$bin_pngquant = __DIR__."/bin/pngquant";
$bin_parallel = __DIR__."/bin/parallel";
$bin_convert = __DIR__."/bin/convert";
// System tools
$bin_php = "php";
$bin_qlmanage = "qlmanage";
$bin_sips = "sips";
// External tools
$bin_vips = "/opt/local/bin/vipsthumbnail";
//////////////////////////////////////////////////////////////////////
if (empty(shell_exec("which ".$bin_vips))) { echo "Binary not found: ".$bin_vips."\n"; }
if (empty($argv[2])) { echo "Nothing dragged"; die; }
$p['icon_size'] = 512;
$p['thumb_size'] = 1024;
$shellpath = escapeshellarg($argv[2]);
$tprefix = "/tmp/".md5($shellpath.time())."/";
$wprefix = "/tmp/".md5($shellpath.time())."_work/";
mkdir($tprefix);
mkdir($wprefix);
if ($mode == "thumb") {
$cmd['ql-thumbnail'][] = $bin_qlthumb." ".$shellpath." ".$tprefix."ql-thumbnail.jpg public.jpeg ".$p['thumb_size']." ".$p['thumb_size']." .8";
$cmd['ql-thumbnail'][] = $tprefix."ql-thumbnail.jpg";
$cmd['sips'][] = $bin_sips." -s format jpeg -s formatOptions 80 -Z ".$p['thumb_size']." ".$shellpath." --out ".$tprefix."sips.jpg"; // add ?? "-d profile --deleteColorManagementProperties"
$cmd['sips'][] = $tprefix."sips.jpg";
$cmd['convert'][] = $bin_convert." -density 300 ".$shellpath."[0] -scale ".$p['thumb_size']."x".$p['thumb_size']." -quality 95 ".$tprefix."convert.jpg";;
$cmd['convert'][] = $tprefix."convert.jpg";
$cmd['vips'][] = $bin_vips." ".$shellpath." -o ".$tprefix."vips.jpg[Q=90,optimize_coding] --size=".$p['thumb_size'];
$cmd['vips'][] = $tprefix."vips.jpg";
$cmd['qltool'][] = $bin_qltool." dp ".$shellpath." ".$p['thumb_size']." ".$p['thumb_size']." | base64 --decode | ".$bin_convert." - -scale 50% -strip -define png:compression-level=9 ".$tprefix."qltool.png";
$cmd['qltool'][] = $tprefix."qltool.png";
$cmd['qlmanage'][] = $bin_qlmanage." -t -s ".$p['thumb_size']." -o ".$wprefix." ".$shellpath." ; mv ".escapeshellarg($wprefix.basename($argv[2]).".png")." ".$tprefix."qlmanage.png";
$cmd['qlmanage'][] = $tprefix."qlmanage.png";
$cmd['sox_q'][] = $bin_sox." ".$shellpath." -n trim 0 $(".$bin_exiftool." -s -s -s -duration# ".$shellpath." | awk '{print $1/10}') spectrogram -o - | ".$bin_pngquant." - -o ".$tprefix."sox-quant.png";
$cmd['sox_q'][] = $tprefix."sox-quant.png";
$cmd['sox_c'][] = $bin_sox." ".$shellpath." -n trim 0 $(".$bin_exiftool." -s -s -s -duration# ".$shellpath." | awk '{print $1/10}') spectrogram -o - | ".$bin_convert." - -quality 85% ".$tprefix."sox-convert.jpg";
$cmd['sox_c'][] = $tprefix."sox-convert.jpg";
$cmd['sox_cx'][] = $bin_sox." ".$shellpath." -n remix - trim 0 $(".$bin_exiftool." -s -s -s -duration# ".$shellpath." | awk '{print $1/20}') spectrogram -r -o - | ".$bin_convert." - -quality 85% ".$tprefix."sox-convert_x.jpg";
$cmd['sox_cx'][] = $tprefix."sox-convert_x.jpg";
$cmd['sox_cy'][] = $bin_sox." ".$shellpath." -n remix - trim 0 $(".$bin_exiftool." -s -s -s -duration# ".$shellpath." | awk '{print $1/4}') spectrogram -r -o - | ".$bin_convert." - -quality 85% ".$tprefix."sox-convert_y.jpg";
$cmd['sox_cy'][] = $tprefix."sox-convert_y.jpg";
$cmd['sox_cz'][] = $bin_sox." ".$shellpath." -n remix - spectrogram -r -o - | ".$bin_convert." - -quality 85% ".$tprefix."sox-convert_all.jpg";
$cmd['sox_cz'][] = $tprefix."sox-convert_all.jpg";
$cmd['sox_s'][] = $bin_sox." ".$shellpath." -n trim 0 $(".$bin_exiftool." -s -s -s -duration# ".$shellpath." | awk '{print $1/10}') spectrogram -o ".escapeshellarg($wprefix.basename($argv[2]).".png")."; ".$bin_sips." -s format jpeg -s formatOptions 80 ".escapeshellarg($wprefix.basename($argv[2]).".png")." --out ".$tprefix."sox-sips.jpg";
$cmd['sox_s'][] = $tprefix."sox-sips.jpg";
$cmd['ffmpeg'][] = $bin_ffmpeg." -ss $(( $(".$bin_mediainfo." --Inform='Video;%Duration%' ".$shellpath." | cut -d'.' -f1) / 10000 )) -i ".$shellpath." -vframes 1 -filter:v scale='".$p['thumb_size'].":-2' -q:v 3 ".$tprefix."ffmpeg.jpg"; // only works properly on horizontal videos
$cmd['ffmpeg'][] = $tprefix."ffmpeg.jpg";
} elseif ($mode == "icon") {
$cmd['qltool'][] = $bin_qltool." di ".$shellpath." ".$p['icon_size']." ".$p['icon_size']." | base64 --decode | ".$bin_convert." - -scale 50% -strip -define png:compression-level=9 ".$tprefix."qltool.png";
$cmd['qltool'][] = $tprefix."qltool.png";
$cmd['qltool_q'][] = $bin_qltool." di ".$shellpath." ".$p['icon_size']." ".$p['icon_size']." | base64 --decode | ".$bin_convert." - -scale 50% - | ".$bin_pngquant." - -o ".$tprefix."qltool_quant.png";
$cmd['qltool_q'][] = $tprefix."qltool_quant.png";
$cmd['ql-icon'][] = $bin_qlicon." --input=".$shellpath." --width=".$p['icon_size']." --height=".$p['icon_size']." --output=".$tprefix."ql-icon.png";
$cmd['ql-icon'][] = $tprefix."ql-icon.png";
$cmd['ql-icon_q'][] = $bin_qlicon." --input=".$shellpath." --width=".$p['icon_size']." --height=".$p['icon_size']." | ".$bin_pngquant." - -o ".$tprefix."ql-icon_quant.png";
$cmd['ql-icon_q'][] = $tprefix."ql-icon_quant.png";
$cmd['qlmanage_sx'][] = $bin_qlmanage." -ti -s ".$p['icon_size']." -o ".$wprefix." ".$shellpath." ; mv ".escapeshellarg($wprefix.basename($argv[2]).".png")." ".$tprefix."qlmanage_size.png";
$cmd['qlmanage_sx'][] = $tprefix."qlmanage_size.png";
$cmd['qlmanage_fx'][] = $bin_qlmanage." -ti -f ".floor($p['icon_size']/128)." -o ".$wprefix." ".$shellpath." ; mv ".escapeshellarg($wprefix.basename($argv[2]).".png")." ".$tprefix."qlmanage_multiplier.png";
$cmd['qlmanage_fx'][] = $tprefix."qlmanage_multiplier.png";
$cmd['qlmanage_zx'][] = $bin_qlmanage." -ti -F ".floor($p['icon_size']/64)." -o ".$wprefix." ".$shellpath." ; sips -z ".$p['icon_size']." ".$p['icon_size']." ".escapeshellarg($wprefix.basename($argv[2]).".png")." --out ".$tprefix."qlmanage_multiplierlarge.png";
$cmd['qlmanage_zx'][] = $tprefix."qlmanage_multiplierlarge.png";
}
$i = 1;
foreach ($cmd as $exec) {
$start = microtime(true);
echo $exec[0]."\n";
shell_exec($exec[0]);
$elapsed = substr((microtime(true)-$start),0,4);
$ext = pathinfo($exec[1], PATHINFO_EXTENSION);
$file = pathinfo($exec[1], PATHINFO_FILENAME);
$dir = pathinfo($exec[1], PATHINFO_DIRNAME);
if(!filesize($exec[1])) {
echo "NO RESULT\n";
unlink($exec[1]);
} else {
rename($exec[1],$dir."/".$i."_".$file."_".$elapsed."msec.".$ext);
}
echo "\n \n";
$i++;
}
shell_exec("qlmanage -p ".$tprefix."/* > /dev/null 2>&1");
shell_exec("open ".$tprefix);
?>