Guest User

Untitled

a guest
Jul 16th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use DBI;
  5. use Digest::MD5;
  6. use FindBin;
  7. use Data::Dump qw/dump/;
  8.  
  9.  
  10. my $dbh = DBI->connect('DBI:mysql:dbname=test;host=localhost;port=3306', 'root', '');
  11.  
  12. $dbh->do("DROP TABLE IF EXISTS `temp_file`") if $ENV{DROP_TABLE};
  13. $dbh->do(<<EOC);
  14. CREATE TABLE IF NOT EXISTS `temp_file` (
  15. `md5` varbinary(32) NOT NULL,
  16. `temp_name` varbinary(255) NOT NULL,
  17. `real_name` varbinary(255) NOT NULL,
  18. `width` int(10) unsigned NOT NULL,
  19. `height` int(10) unsigned NOT NULL,
  20. `size` int(10) unsigned NOT NULL,
  21. `ignore` tinyint(1) unsigned NOT NULL,
  22. PRIMARY KEY (`md5`)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  24. EOC
  25.  
  26. my $base = $FindBin::Bin . '/img';
  27. my $prefix = '';
  28.  
  29. {
  30. my $seq;
  31. my $prev = '';
  32.  
  33. my $select = $dbh->prepare("SELECT * FROM `temp_file` WHERE `md5` = ?");
  34. my $update = $dbh->prepare("UPDATE `temp_file` SET `real_name` = ?, `ignore` = 1 WHERE `md5` = ?");
  35.  
  36. while (<$base/*$prefix/*>) {
  37. if (-d $_) {
  38. dump($_);
  39. next;
  40. } elsif ($prefix) {
  41. my $dirname = $_;
  42. $dirname =~ s{[^/]+$}{};
  43.  
  44. if ($dirname ne $prev) {
  45. $prev = $dirname;
  46. dump($dirname);
  47. }
  48. }
  49.  
  50. my $filename = $_;
  51. $filename =~ s{$base/}{};
  52.  
  53. open my $file, '<', $_;
  54. my $digest = Digest::MD5->new->addfile($file)->hexdigest;
  55. #my $size = (stat $file)[7]; # size
  56.  
  57. $select->execute($digest);
  58. if (my $row = $select->fetchrow_arrayref) {
  59. dump(++$seq, [$digest, $filename]);
  60. $update->execute($filename, $digest);
  61. } else {
  62. #print "not found¥n";
  63. }
  64. }
  65. }
Add Comment
Please, Sign In to add comment