Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- use DBI;
- use Digest::MD5;
- use FindBin;
- use Data::Dump qw/dump/;
- my $dbh = DBI->connect('DBI:mysql:dbname=test;host=localhost;port=3306', 'root', '');
- $dbh->do("DROP TABLE IF EXISTS `temp_file`") if $ENV{DROP_TABLE};
- $dbh->do(<<EOC);
- CREATE TABLE IF NOT EXISTS `temp_file` (
- `md5` varbinary(32) NOT NULL,
- `temp_name` varbinary(255) NOT NULL,
- `real_name` varbinary(255) NOT NULL,
- `width` int(10) unsigned NOT NULL,
- `height` int(10) unsigned NOT NULL,
- `size` int(10) unsigned NOT NULL,
- `ignore` tinyint(1) unsigned NOT NULL,
- PRIMARY KEY (`md5`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- EOC
- my $base = $FindBin::Bin . '/img';
- my $prefix = '';
- {
- my $seq;
- my $prev = '';
- my $select = $dbh->prepare("SELECT * FROM `temp_file` WHERE `md5` = ?");
- my $update = $dbh->prepare("UPDATE `temp_file` SET `real_name` = ?, `ignore` = 1 WHERE `md5` = ?");
- while (<$base/*$prefix/*>) {
- if (-d $_) {
- dump($_);
- next;
- } elsif ($prefix) {
- my $dirname = $_;
- $dirname =~ s{[^/]+$}{};
- if ($dirname ne $prev) {
- $prev = $dirname;
- dump($dirname);
- }
- }
- my $filename = $_;
- $filename =~ s{$base/}{};
- open my $file, '<', $_;
- my $digest = Digest::MD5->new->addfile($file)->hexdigest;
- #my $size = (stat $file)[7]; # size
- $select->execute($digest);
- if (my $row = $select->fetchrow_arrayref) {
- dump(++$seq, [$digest, $filename]);
- $update->execute($filename, $digest);
- } else {
- #print "not found¥n";
- }
- }
- }
Add Comment
Please, Sign In to add comment