DesktopAlbum

のファイルからごにょごにょするスクリプト。私専用。書き捨てだけど、いちおう残しておきます。エラーチェックとかなにもしてないのは仕様。

use strict;
use warnings;

opendir my $dh, '.';
my @fp;
while (defined($_ = readdir $dh)) {
    next unless /ALB$/i;
    open my $fh, '<:raw', $_;
    seek $fh, 20 + 8 + 4 * 3 + 16, 0;
    read $fh, my $buf, 72;
    close $fh;
    unpack 'a72', $buf;
    next unless $buf =~ /sha256:\s([\da-f]{8})/i;
    push @fp, {fp => $1, file => $_, buf => $buf};
}
closedir $dh;

@fp = sort {$a->{fp} cmp $b->{fp}} @fp;

foreach (@fp) {
    chdir sprintf 'D:/My Pictures/sha256/%s/%s/%s/', split //, substr($_->{fp}, 0, 3);
    link $_, "D:/tool/DesktopAlbum/$_" for glob "$_->{fp}*";
}