diff options
Diffstat (limited to 'TOOLS/wma2ogg.pl')
-rwxr-xr-x | TOOLS/wma2ogg.pl | 340 |
1 files changed, 0 insertions, 340 deletions
diff --git a/TOOLS/wma2ogg.pl b/TOOLS/wma2ogg.pl deleted file mode 100755 index dcd4d7e994..0000000000 --- a/TOOLS/wma2ogg.pl +++ /dev/null @@ -1,340 +0,0 @@ -#!/usr/bin/perl - -################################# -# wma converter 0.3.6 for Linux # -################################# - -# Made by Peter Simon <simon.peter@linuxuser.hu> -# License: GNU GPL -# -# Needed programs: -# -# Getopt::Long - Perl Module -# MPlayer - http://www.mplayerhq.hu -# BladeEnc - http://bladeenc.mp3.no -# oggenc - http://www.vorbis.com -# mp3info - http://www.ibiblio.org/mp3info - -# changelog: -# 0.1.0 -# decoding all files to wav without any switches and encoders -# 0.2.0 -# converting to mp3 or ogg with bitrate, delete options -# 0.2.1 -# L.A.M.E. support for fanatics -# Default output filetype: ogg -# Some error warnings -# 0.3.0 -# Reading the wma tags out and puting into the mp3 or the ogg tags. (What the MPlayer shows of those.) -# Default output bitrate: the original bitrate -# Simlink for the default encode mode (wma2ogg = ogg, wma2mp3 = mp3) -# 0.3.1 -# Neglecting missing encoders if those are not in use. -# 0.3.2 -# Using mp3info for the mp3 tags -# 0.3.3 -# Convert more then one files in the start dir. -# 0.3.4-5 -# Some bugfixes. -# 0.3.6 -# Some bugfixes by Diego Biurrun - -# Why BladeEnc? -# Eg.: The L.A.M.E.'s code isn't compatible for some hardwer-decoders. Makes noise and clashings. -# I never met this trouble using BladeEnc. -# That's it. - -use Getopt::Long qw(:config pass_through); - -$ver="0.3.6"; - -GetOptions("help|?",\&showhelp, 'a' => \$all, "file|f=s" => \@files,"t=s" => \$mtype, "lame" => \$needlame, "del" => \$delete, "br=i" => \$sbrate); - -if (@ARGV) { - foreach (@ARGV) { - error ("Missing parameter after the $_ switch!"); - } - exit; -} - -print "wma2ogg $ver\nPeter Simon <simon.peter\@linuxuser.hu>"; - -if (!$all && !@files) { - error ("There is no selected file!"); - exit; -} - -if ($0 =~/wma2mp3/ && !$mtype) { - $mtype="mp3"; -} - -if ($mtype eq "ogg") { - $ttype{"ogg"}="oggenc"; - needed_prgs (oggenc, "http://www.vorbis.com"); -} - -if ($needlame && $mtype eq "ogg") { - error ("\nYou can not use L.A.M.E. & oggenc together!\n"); - exit; -} - -if (!$mtype && !$needlame) { - $mtype="ogg"; - $ttype{"ogg"}="oggenc"; - needed_prgs (oggenc, "http://www.vorbis.com"); -} - - -if (!$needlame && $mtype eq "mp3") { - $ttype{"mp3"}="BladeEnc"; - needed_prgs (BladeEnc, "http://bladeenc.mp3.no", mp3info, "http://www.ibiblio.org/mp3info"); -} - -if ($needlame) { - $mtype="mp3"; - $ttype{"mp3"}="lame"; - needed_prgs (lame, "http://lame.sourceforge.net", mp3info, "http://www.ibiblio.org/mp3info"); -} - -# Main program - print "\nUsing lame - WARNING - this is not optimal!\n"; - ch_needed (); - ch_type (); - ch_files (); - decode(); -# the end. - - -sub ch_type { - $o_type=$ttype{$mtype}; - - if ($mtype ne "wav") { - $def_path=$ENV{PATH}; - @exec_path=split /\:/, $def_path; - foreach $temp_path (@exec_path) { - if (-d $temp_path && !$enc_ok) { - $enc_ok=`find $temp_path -name $o_type -type f -maxdepth 1 2>/dev/null`; - chomp ($enc_ok); - } - } - } - if ((!$o_type || !$enc_ok) && $mtype ne "wav") { - error("Unknown encoder."); - exit; - } -} - -sub ch_br { - if ($sbrate && ((($sbrate <32 || $sbrate>350) && $mtype eq "mp3") || (($sbrate<64 || $sbrate>500) && $mtype eq "ogg") )) { - error("Invalid, missing or redundant bitrate."); - exit; - } -} - -sub ch_files { - if ($all && @files) { - error ("You can't use -a switch and -f together!"); - exit; - } - - if ($all) { - @enc_files=`ls | grep '.wma'\$`; - foreach (@enc_files) { - chomp $_; - } - } - - if (@files) { - @enc_files=@files; - } - -} - -sub showhelp { -print "\n\nUsage: wma2ogg [OPTIONS] (-f FILE1 | -f FILE2 ... | -a)\n --f, -file filename --a converts all wma files in the current directory\n -OPTIONS: --t output filetype (ogg, mp3) [default=ogg] --lame I wanna use L.A.M.E. sure enough! --br bitrate (kb/s) [default=from the wma] --del remove wma file(s) after the transcoding\n"; -print $miss_text; -print "\n$errtext\nExiting program.\n"; -} - -sub error { - $errtext=@_[0]; - showhelp (); - -} - -sub missing_prg { - $what=$keys; - $that=$needed{$keys}; - $miss_text.="\nThe needed \'$what\' program is missing, see: $that!"; -} - -sub ch_needed { - - `perl -e 'use Getopt::Long;' 2>./err`; - open (FILE, "<./err"); - while ($sor=<FILE>) { - if ($sor =~ /Can\'t locate/) { - missing_prg ("Getopt::Long", ": your Perl is too old... (uhhh... get a new one!)"); - } - } - `rm ./err`; - - - foreach $keys (keys %needed) { - `$keys 2>./err`; - open (FILE, "<./err"); - while ($sor=<FILE>) { - if ($sor =~ /$keys\: command not found/) { - missing_prg (); - $error=1; - } - } - `rm ./err`; - } - - close FILE; - if ($error) { - showhelp (); - exit; - } -} - -sub get_tags { - my $outfile; - open (FILE, "<./1"); - while ($sor=<FILE>) { - $outfile.=$sor; - } - close FILE; - - $outfile=~ s/\((\d+\,\d+)\ kbit\)/$1/e; - print "\noriginal bitrate: $1"; - $kept_orig_brate=$1; - $kept_orig_brate=~ s/(\d+)/$1/e; - $kept_orig_brate=$1; - - if (!$sbrate) { - $brate=$kept_orig_brate; - print " (kept as default)"; - } else { - $brate=$sbrate; - print " (new: $brate,0)"; - } - - ch_br (); - - `rm ./1`; - my @temp_info=split /Clip\ info\:/, $outfile; - my @temp2_info=split /\n/, @temp_info[1]; - my @temp_title=split /\ /, $temp2_info[1],3; - my @temp_author=split /\ /, $temp2_info[2],3; - my @temp_copyright=split /\ /, $temp2_info[3],3; - my @temp_comments=split /\ /, $temp2_info[4],3; - return ($temp_title[2], $temp_author[2], $temp_copyright[2], $temp2_comments[2]); -} - -sub needed_prgs { - %needed=( - $_[0]=>$_[1], - $_[2]=>$_[3], - mplayer=>"http://www.mplayerhq.hu", - ); -} - -sub mp3_info { - if ($title) { - $infofile=" -t '$title'"; - } - if ($author) { - $infofile.=" -a '$author'"; - } - if ($comments) { - $infofile.=" -c '$comments'"; - } - - `mp3info "$p_name.$mtype" $infofile`; - - undef ($infofile); -} - - -sub decode { - foreach (@enc_files) { - $wav_name=$_; - $wav_name=~ s/(.+)\./$1/e; - $p_name=$1; - $wav_name=$p_name.".wav"; - $pwd=`pwd`; - chomp $pwd; - $pwd.="/t2"; - print "\nConverting $_ to \"wav\" file.\n"; - print "Using MPlayer...\n"; - - `mplayer "$_" -ao pcm -input conf="$pwd" 2>/dev/null >./1`; - `mv "audiodump.wav" "$wav_name"`; - - @tags=get_tags (); - - $title=$tags[0]; - print "\ntitle: $title"; - $author=$tags[1]; - print "\nauthor: $author"; - $copyright=$tags[2]; - print "\ncopyright: $copyright"; - $comments=$tags[3]; - print "\ncomments: $comments"; - - $comments=$copyright." ".$comments."Transcoded by wma2ogg"; - - print "\n\nConverting $wav_name to \"$mtype\" file."; - - print "\nUsing $o_type..."; - - if ($mtype eq "ogg") { - $br_sw="b"; - if ($title) { - $infofile=" -t '$title'"; - } - if ($author) { - $infofile.=" -a '$author'"; - } - if ($comments) { - $infofile.=" -c COMMENT='$comments'"; - } - - `"$o_type" "-$br_sw" "$brate" "-Q" "./$wav_name" $infofile "-o" "$p_name.$mtype"`; - `rm -f "$wav_name"`; - } - if ($mtype eq "mp3" && !$needlame) { - $br_sw="br"; - `"$o_type" "$wav_name" "$p_name.$mtype" "-$br_sw" "$brate" 2>/dev/null >/dev/null`; - - mp3_info (); - - `rm -f "$wav_name"`; - } - if ($mtype eq "mp3" && $needlame) { - - $br_sw="b"; - `"$o_type" "-$br_sw" "$brate" "-f" "$wav_name" "$p_name.$mtype" 2>/dev/null >/dev/null`; - - mp3_info (); - - `rm -f "$wav_name"`; - } - if ($delete) { - `rm -f "$_"`; - } - if (-e "./err") { - `rm ./err`; - } - } - print "\n\nDone.\n\n"; -} |