[BACK]Return to CurrentTorrents.pl CVS log [TXT][DIR] Up to [local] / openbsd / OpenBSDTorrents

Diff for /openbsd/OpenBSDTorrents/CurrentTorrents.pl between version 1.13 and 1.19

version 1.13, 2005/05/02 22:43:53 version 1.19, 2005/06/01 18:52:14
Line 5 
Line 5 
 use diagnostics;  use diagnostics;
   
 use Time::Local;  use Time::Local;
   use Fcntl ':flock';
   
 use lib 'lib';  use lib 'lib';
 use OpenBSDTorrents;  use OpenBSDTorrents;
 use BT::OBTMetaInfo;  use BT::MetaInfo::Cached;
   
 %ENV = ();  %ENV = ();
   
 use YAML;  use YAML;
   
 justme();  #justme();
   
 my $Name_Filter = shift || '';  my $Name_Filter = shift || '';
 if ($Name_Filter =~ /^(\w*)$/) {  if ($Name_Filter =~ /^(\w*)$/) {
Line 23 
Line 24 
         die "Invalid filter: $Name_Filter";          die "Invalid filter: $Name_Filter";
 }  }
   
   my %Possible_Torrents;
   Process_Dir($OBT->{DIR_FTP});
   
 my %files;  my %files;
   my %keep;
   my @delete;
 foreach my $DIR ($OBT->{DIR_NEW_TORRENT}, $OBT->{DIR_TORRENT}) {  foreach my $DIR ($OBT->{DIR_NEW_TORRENT}, $OBT->{DIR_TORRENT}) {
         opendir DIR, $DIR          opendir DIR, $DIR
                 or die "Couldn't opendir $DIR: $!";                  or die "Couldn't opendir $DIR: $!";
Line 57 
Line 63 
                         epoch     => $epoch,                          epoch     => $epoch,
                 };                  };
   
                   unless (exists $Possible_Torrents{$name}) {
                           print "Would remove $_\n";
                           push @delete, $files{$ext}{$name}{$epoch};
                   }
         }          }
         closedir DIR;          closedir DIR;
 }  }
   
 my %keep;  
 my @delete;  
 foreach my $name (keys %{ $files{torrent} }) {  foreach my $name (keys %{ $files{torrent} }) {
         next unless $name =~ /^$Name_Filter/;          next unless $name =~ /^$Name_Filter/;
         print "Checking $name\n";          print "Checking $name\n";
Line 71 
Line 79 
                 #print "\t$epoch\n";                  #print "\t$epoch\n";
                 my $torrent = $files{torrent}{$name}{$epoch}{path};                  my $torrent = $files{torrent}{$name}{$epoch}{path};
   
                   if (
                           keys %{ $files{torrent}{$name} } == 1 &&
                           $files{torrent}{$name}{$epoch}{dir}
                                   eq $OBT->{DIR_TORRENT}
                   ) {
                           #print "Skipping torrent for $name there is only one.\n";
                           next;
                   }
   
                 my $t;                  my $t;
                 eval { $t = BT::OBTMetaInfo->new( $torrent ); };                  eval {
                           $t = BT::MetaInfo::Cached->new(
                                   $torrent,
                                   {
                                           cache_root =>
                                           $OBT->{DIR_HOME} . '/FileCache'
                                   }
                           );
                   };
   
                 if ($@) {                  if ($@) {
                         warn "Error reading torrent $torrent\n";                          warn "Error reading torrent $torrent\n";
Line 89 
Line 114 
                         next;                          next;
                 }                  }
   
                 if (                  my $hash = $t->info_hash;
                         keys %{ $files{torrent}{$name} } == 1 &&  
                         $files{torrent}{$name}{$epoch}{dir}  
                                 eq $OBT->{DIR_TORRENT}  
                 ) {  
                         #print "Skipping torrent for $name there is only one.\n";  
                         next;  
                 }  
   
                 my $hash = $t->info_hash_cached($torrent);  
                 $hash = unpack("H*", $hash);                  $hash = unpack("H*", $hash);
   
                   undef $t;
   
                 $files{torrent}{$name}{$epoch}{info_hash} = $hash;                  $files{torrent}{$name}{$epoch}{info_hash} = $hash;
   
                 undef $t;  
   
                 if (exists $keep{$name}) {                  if (exists $keep{$name}) {
                         if (exists $keep{$name}{$hash}) {                          if (exists $keep{$name}{$hash}) {
Line 145 
Line 162 
 }  }
   
   
 #print Dump \%keep;  ##print Dump \%keep;
 foreach my $name (keys %keep) {  #foreach my $name (keys %keep) {
         foreach my $hash (keys %{ $keep{$name} }) {  #       foreach my $hash (keys %{ $keep{$name} }) {
                 my $file = $keep{$name}{$hash}{file};  #               my $file = $keep{$name}{$hash}{file};
                 my $dir  = $keep{$name}{$hash}{dir };  #               my $dir  = $keep{$name}{$hash}{dir };
                 if ($dir eq $OBT->{DIR_NEW_TORRENT}) {  #               if ($dir eq $OBT->{DIR_NEW_TORRENT}) {
                         print "Moving $file to current torrents\n";  #                       print "Moving $file to current torrents\n";
                         rename("$dir/$file", $OBT->{DIR_TORRENT} . "/" . $file)  #                       rename("$dir/$file", $OBT->{DIR_TORRENT} . "/" . $file)
                                 or die "Couldn't rename '$file': $!";  #                               or die "Couldn't rename '$file': $!";
   #
   #                       my $name = $keep{$name}{$hash}{name};
   #                       my $epoch = $keep{$name}{$hash}{epoch};
   #
   #                       if (exists $files{txt}{$name}{$epoch}) {
   #                               my $m_file = $files{txt}{$name}{$epoch}{file};
   #                               my $m_dir  = $files{txt}{$name}{$epoch}{dir };
   #                               rename(
   #                                       "$m_dir/$m_file",
   #                                       $OBT->{DIR_TORRENT} . "/" . $m_file
   #                               ) or die "Couldn't rename '$m_file': $!";
   #                       }
   #               }
   #       }
   #}
   
                         my $name = $keep{$name}{$hash}{name};  sub Process_Dir
                         my $epoch = $keep{$name}{$hash}{epoch};  {
           my $basedir = shift;
   
                         if (exists $files{txt}{$name}{$epoch}) {          my ($dirs, $files) = Get_Files_and_Dirs($basedir);
                                 my $m_file = $files{txt}{$name}{$epoch}{file};          if (@$files) {
                                 my $m_dir  = $files{txt}{$name}{$epoch}{dir };                  my $dir = $basedir;
                                 rename(                  $dir =~ s/^$OBT->{DIR_FTP}\///;
                                         "$m_dir/$m_file",                  my $torrent = Name_Torrent($dir);
                                         $OBT->{DIR_TORRENT} . "/" . $m_file                  $torrent =~ s/-.*$//;
                                 ) or die "Couldn't rename '$m_file': $!";                  $Possible_Torrents{$torrent} = 1;
                         }          }
                 }  
         }          foreach my $subdir (@$dirs) {
                   next if $subdir eq '.';
                   next if $subdir eq '..';
                   Process_Dir("$basedir/$subdir")
           }
 }  }
   

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.19

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>