Guest User

Untitled

a guest
May 13th, 2011
560
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.82 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4.  
  5. # r2, for NZBGet >= 0.6.0-testing-r241
  6.  
  7. # Configure
  8. my $RenameNzb = '0'; # 1 = true - nzb-name.nzb > archive-name.nzb_processed, 0 = false - foo.nzb > foo.nzb_processed
  9. # overridden if the archive contains multipls nzbs
  10. my $DeleteArchive = '1'; # 1 = true - deletes successfully extracted archive, 0 = false - foo.ext > foo.ext.processed
  11. # overridden if there are any errors during processing
  12.  
  13. my $ok = 1;
  14. if ($#ARGV == 1){
  15.      #my $dir = $ARGV[0];
  16.      if ($ARGV[1] =~ m!(.+)/([^/]+)\.(zip|rar)$!i){
  17.         &ExtractNzb ($1, $2, $3);
  18.      }
  19.      elsif ($ARGV[1] =~ m!(.+)/([^/]+)\.(nzb)$!i){
  20.         &Save ($1, $2, $3, $2, 'nzb_processed');
  21.      }
  22.      else { printf "[ERROR] Cannot process: $ARGV[1]\n"; }
  23. }
  24. else {
  25.      my $num = $#ARGV + 1;
  26.      printf "[ERROR] Need two arguments, got: $num\n";
  27. }
  28.  
  29. sub ExtractNzb {
  30.      my ($dir, $arch_name, $arch_ext) = @_;
  31.      my $count = 0;
  32.      my $nzb_name;
  33.      my $nzb_ext;
  34.      my $new_name = $arch_name;
  35.      $new_name =~ s!\.nzb$!!;
  36.  
  37.      if ($arch_ext =~ m!^rar$!i){
  38.         open ARCHIVE, "-|", "unrar x -y \"$dir/$arch_name.$arch_ext\" \"$dir\"" or die $!;
  39.      }
  40.      elsif ($arch_ext =~ m!^zip$!i){
  41.         open ARCHIVE, "-|", "unzip -jo \"$dir/$arch_name.$arch_ext\" -d \"$dir\"" or die $!;
  42.      }
  43.  
  44.      while (<ARCHIVE>){
  45.         if (m!([^/]+)\.(nzb)  (.+OK )?$!i){
  46.            $nzb_name = $1;
  47.            $nzb_ext  = $2;
  48.            printf "[INFO] Extracted: $nzb_name.$nzb_ext\n";
  49.            utime (undef, undef, "$dir/$nzb_name.$nzb_ext"); # touch
  50.            &Save ($dir, $nzb_name, $nzb_ext, $nzb_name, 'nzb_processed');
  51.            $count ++;
  52.         }
  53.         elsif (m!([^/]+\.[^\.]{3,4})  (.+OK )?$!){
  54.            &Delete ($dir, $1);
  55.         }
  56.      }
  57.      close ARCHIVE or warn $?;
  58.  
  59.      if ($count == 1 and $RenameNzb and $nzb_name ne $new_name){
  60.         &Save ($dir, $nzb_name, 'nzb_processed', $new_name, 'nzb_processed');
  61.      }
  62.  
  63.      if ($DeleteArchive and $nzb_name and $ok){
  64.         &Delete ($dir, "$arch_name.$arch_ext");
  65.      }
  66.      elsif ($nzb_name) {
  67.         &Save ($dir, $arch_name, $arch_ext, $arch_name, "$arch_ext.processed");
  68.      }
  69.      else { printf "[ERROR] No nzbs were extracted from: $arch_name.$arch_ext\n"; }
  70. }
  71.  
  72. sub Delete {
  73.      my ($dir, $file) = @_;
  74.      if (unlink ("$dir/$file")){
  75.         printf "[INFO] Deleted: $file\n";
  76.      }
  77.      else {
  78.         $ok = 0;
  79.         printf "[ERROR] Couldn't delete: $file\n";
  80.      }
  81.  
  82. }
  83.  
  84. sub Save {
  85.      my ($dir, $name, $ext, $new_name, $new_ext) = @_; # $new_name can = $name
  86.      if (rename("$dir/$name.$ext", "$dir/$new_name.$new_ext")){
  87.         printf "[INFO] Renamed:  $name.$ext, $new_name.$new_ext\n";
  88.      }
  89.      else {
  90.         $ok = 0;
  91.         printf "[ERROR] Couldn't rename: $name.$ext, $new_name.$new_ext\n";
  92.      }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment