
Untitled
By: a guest on
May 1st, 2012 | syntax:
None | size: 2.09 KB | hits: 17 | expires: Never
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use DirHandle;
#binmode STDOUT, ":shift_jis";
my $dir=$ARGV[0] || '/cygdrive/f/shared/michiko/hippo/';
#
sub main {
my ($dir) = @_;
my $dirh = DirHandle->new($dir);
if (defined $dirh) {
my $d;
while (defined($d = $dirh->read)) {
next if $d =~ /^\./ || $d =~ /\.db$/;
my ($year,$month,$day,$channel,$title,$suffix) = ($d =~ /^(\d{4})-(\d{2})-(\d{2})_\d{2}h\d{2}m_([^_]+)_([^_]+).*(\.\w+)$/);
if (defined $year && defined $title) {
$title =~ s/^\s*//;
$title =~ s/\s*$//;
my $dst0 = substr($year,2).$month.$day."_$title$suffix";
my $src = "$dir/$d";
my $dst = "$dir/itunes/$dst0";
my $done = "$dir/itunes_ok/$dst0";
$done =~ s/\.\w+$/.touch/;
if (!-e $done) {
my $srcsz = -s $src;
my $dstsz = -s $dst;
if (!$dstsz || $srcsz != $dstsz) {
copyFile($src,$dst,$done);
}
else {
print "... checking md5\n";
my $srcmd5 = (split /\s+/, `md5sum "$src"`)[0];
my $dstmd5 = (split /\s+/, `md5sum "$dst"`)[0];
if ($srcmd5 ne $dstmd5) {
copyFile($src,$dst,$done);
}
else {
`touch $done`;
print "skipped $src\n";
}
}
}
else {
print "skipped $src\n";
}
}
}
}
}
#
sub copyFile {
my ($src,$dst,$done) = @_;
# not exist
print "copying $src ==> $dst\n";
`cp "$src" "$dst"`;
my $srcmd5 = (split /\s+/, `md5sum "$src"`)[0];
my $dstmd5 = (split /\s+/, `md5sum "$dst"`)[0];
if ($srcmd5 eq $dstmd5) {
`touch $done`;
}
else {
print "failed copy $src\n";
}
}
main($dir);