Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use Options;
- my (@files_to_convert, @dir_of_files);
- my $output_dir;
- my %input_map = ('shn' => ['shorten -x "', '" -'],
- 'ogg' => ['oggdec -o - "', '"'],
- 'flac' => ['flac -s -d -c "', '"']);
- my %output_map = ('mp3' => ['ffmpeg -i - -f mp3 -acodec mp3 -ab 256 "', '"']);
- my @inout = ($0 =~ m/(\w+?)2(\w+)/);
- unless(defined $input_map{$inout[0]}){
- print "$inout[0] is not a supported input type.\n";
- exit(1);
- }
- unless(defined $output_map{$inout[1]}){
- print "$inout[1] is not a supported output type.\n";
- exit(1);
- }
- if(-d $ARGV[0]){
- $ARGV[0] =~ s/\/$//;
- opendir(DIR, $ARGV[0]);
- @dir_of_files = readdir DIR;
- closedir DIR;
- if(-e "$ARGV[0]/.converted"){
- print "This directory has been converted already. (Delete the .converted file if you wish to convert again.)\n";
- exit(1);
- }
- if(grep /DO_NOT_EDIT/, @dir_of_files){
- print "This is an incomplete Furthur directory.\n";
- exit(1);
- }
- @files_to_convert = grep /.$inout[0]$/, map "$ARGV[0]/$_", @dir_of_files;
- unless(@files_to_convert){
- print "There are no .$inout[0] files in the specified directory.\n";
- exit(1);
- }
- }
- elsif(-e $ARGV[0] && $ARGV[0] =~ m/\.$inout[0]$/){
- @files_to_convert = ($ARGV[0]);
- }
- else{
- print "You must specify a .$inout[0] file, or a directory of files to convert.\n";
- exit(1);
- }
- if($ARGV[1] && -d $ARGV[1]){
- $output_dir = $ARGV[1];
- }
- foreach my $file (@files_to_convert){
- $file =~ m/(.*?)\.$inout[0]$/;
- my $output_file = "$1.$inout[1]";
- if($output_dir){
- if($output_file =~ /\//){
- ($output_file) = ($output_file =~ m/\/([^\/]*)$/);
- }
- if($output_dir =~ /\/$/){
- chop($output_dir);
- }
- $output_file = "$output_dir/$output_file";
- }
- print "Output file is $output_file\n";
- my $command = $input_map{$inout[0]}->[0] . $file . $input_map{$inout[0]}->[1] . ' | ' .
- $output_map{$inout[1]}->[0] . $output_file . $output_map{$inout[1]}->[1];
- my $result = system($command);
- if($result != 0){
- print "Subprocess ended with non-zero result: $result...exiting.\n";
- exit(1);
- }
- }
- if(-d $ARGV[0]){
- open(FILE, ">$ARGV[0]/.converted");
- print FILE "DONE";
- close(FILE);
- }
Add Comment
Please, Sign In to add comment