All2mp3
From xbe wiki
This is a simple php shell script which converts all media files in a given directory (i.e. wma, flac, aac, etc.) to mp3. Basically it converts everything that mplayer supports, as it's a wrapper for mplayer & lame.
At the moment it only accepts an entire directory, not single files. And it doesn't check if the source type is mp3, it will convert it to mp3 again ;-). It checks if mplayer could produce an valid output though, so you can have not-audio file in the directory (i.e. cover shots) without running into problems..
[edit] Installation
Very simple, just copy&paste the source below into a new file and correct the first line of the script with the path to your php binary (if it's /usr/bin/php you don't have to change anything). Then do:
at t cp all2mp3.php /usr/bin/all2mp3 chmod +x /usr/bin/all2mp3
And it's done!
You don't have to copy it to /usr/bin naturally (can be any directory in your $PATH). If you don't want to have it in a directory in your $PATH, just execute it where you want ;-)
[edit] Usage
all2mp3 [directory]
Directory is the source & destination directory at the same time. If you do not provide this parameter, the script will take the current cwd (current directory you're in) as the working directory.
[edit] Source V1.0
Here's the source (don't copy the enclosing "<?php" and "?>"! That's added by the php highlight extension in the wiki and isn't necessary in your file..)
<?php
#!/usr/bin/php
<?
set_time_limit(0);
echo "--------------------------\n";
echo "all2mp3 v1.0\n";
echo "--------------------------\n";
checkTools();
$def_path = $argv[1];
if(isset($def_path)) $path = $def_path;
else $path = getcwd();
if(!is_dir($path)) die("Error: Path \"{$path}\" is not a valid directory.\n");
// let's start..
if(substr($path,-1) != "/") $path .= "/";
$output = array();
if($dir = opendir($path)) {
while (($file = readdir($dir)) !== false) {
if($file != "." && $file != "..") {
$filename = substr($file, 0, strrpos($file, "."));
$mplayer_target = $path.$filename.".wav";
$lame_target = $path.$filename.".mp3";
echo "[mplayer] {$file} => {$filename}.wav ... ";
exec("mplayer -ao pcm:file=\"{$mplayer_target}\" \"{$path}{$file}\" 2>&1", $output, $return);
if(file_exists($mplayer_target)) {
$mklame = true;
echo "OK!\n";
echo "[lame] {$filename}.wav => {$filename}.mp3 ... ";
exec("lame -h -b 160 \"{$mplayer_target}\" \"{$lame_target}\" 2>&1", $output, $return);
if(file_exists($mplayer_target)) echo "OK!\n";
echo "[general] Unlinking {$filename}.wav ... ";
unlink($mplayer_target);
if(!file_exists($mplayer_target)) echo "OK!\n";
else echo "FAILURE!\n";
}else{
$mklame = false;
echo "Not valid!\n";
}
}
}
closedir($dir);
}else{
die("Error: Could not open directory handle for \"{$path}\"!\n");
}
function checkTools() {
$tools = array(
"mplayer",
"lame"
);
$output = array();
foreach($tools as $tool) {
exec($tool." 2>&1", $output, $return);
if($return != 0 && $return != 1) {
die("Error: Could not find needed app \"{$tool}\" in \$PATH! Has to be there..\n");
}
}
}
?>
?>
