Guest User

Untitled

a guest
Jun 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use Options;
  5.  
  6. my (@files_to_convert, @dir_of_files);
  7. my $output_dir;
  8.  
  9. my %input_map = ('shn' => ['shorten -x "', '" -'],
  10. 'ogg' => ['oggdec -o - "', '"'],
  11. 'flac' => ['flac -s -d -c "', '"']);
  12. my %output_map = ('mp3' => ['ffmpeg -i - -f mp3 -acodec mp3 -ab 256 "', '"']);
  13.  
  14. my @inout = ($0 =~ m/(\w+?)2(\w+)/);
  15.  
  16. unless(defined $input_map{$inout[0]}){
  17. print "$inout[0] is not a supported input type.\n";
  18. exit(1);
  19. }
  20. unless(defined $output_map{$inout[1]}){
  21. print "$inout[1] is not a supported output type.\n";
  22. exit(1);
  23. }
  24.  
  25. if(-d $ARGV[0]){
  26. $ARGV[0] =~ s/\/$//;
  27. opendir(DIR, $ARGV[0]);
  28. @dir_of_files = readdir DIR;
  29. closedir DIR;
  30.  
  31. if(-e "$ARGV[0]/.converted"){
  32. print "This directory has been converted already. (Delete the .converted file if you wish to convert again.)\n";
  33. exit(1);
  34. }
  35.  
  36. if(grep /DO_NOT_EDIT/, @dir_of_files){
  37. print "This is an incomplete Furthur directory.\n";
  38. exit(1);
  39. }
  40.  
  41. @files_to_convert = grep /.$inout[0]$/, map "$ARGV[0]/$_", @dir_of_files;
  42. unless(@files_to_convert){
  43. print "There are no .$inout[0] files in the specified directory.\n";
  44. exit(1);
  45. }
  46. }
  47. elsif(-e $ARGV[0] && $ARGV[0] =~ m/\.$inout[0]$/){
  48. @files_to_convert = ($ARGV[0]);
  49. }
  50. else{
  51. print "You must specify a .$inout[0] file, or a directory of files to convert.\n";
  52. exit(1);
  53. }
  54.  
  55. if($ARGV[1] && -d $ARGV[1]){
  56. $output_dir = $ARGV[1];
  57. }
  58.  
  59. foreach my $file (@files_to_convert){
  60. $file =~ m/(.*?)\.$inout[0]$/;
  61. my $output_file = "$1.$inout[1]";
  62. if($output_dir){
  63. if($output_file =~ /\//){
  64. ($output_file) = ($output_file =~ m/\/([^\/]*)$/);
  65. }
  66. if($output_dir =~ /\/$/){
  67. chop($output_dir);
  68. }
  69. $output_file = "$output_dir/$output_file";
  70. }
  71. print "Output file is $output_file\n";
  72. my $command = $input_map{$inout[0]}->[0] . $file . $input_map{$inout[0]}->[1] . ' | ' .
  73. $output_map{$inout[1]}->[0] . $output_file . $output_map{$inout[1]}->[1];
  74. my $result = system($command);
  75. if($result != 0){
  76. print "Subprocess ended with non-zero result: $result...exiting.\n";
  77. exit(1);
  78. }
  79. }
  80.  
  81. if(-d $ARGV[0]){
  82. open(FILE, ">$ARGV[0]/.converted");
  83. print FILE "DONE";
  84. close(FILE);
  85. }
Add Comment
Please, Sign In to add comment