From: Martin Mares Date: Sun, 8 Feb 2015 21:01:32 +0000 (+0100) Subject: Cleaned up MJ's hacks X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=cde61557c48e9889d942fb95fcb762e6c24f15a3;p=gallery.git Cleaned up MJ's hacks The obsolete ones have been deleted, the rest has been "documented". --- diff --git a/README b/README index 5fbcd6d..fd868dd 100644 --- a/README +++ b/README @@ -89,3 +89,12 @@ Workflow - When you modify existing images, run "gal scan --update". o See example/* for an example web front-end. + +Various notes +~~~~~~~~~~~~~ + + o When you want to re-generate all galleries at once, you can use + "gal --all -p4 gen". This will run "gal gen" on all subdirectories + containing "gallery.cf", 4 of them in parallel. + + o See bin/gal-mj-* for various hacks I wrote for myself. diff --git a/bin/gal-mj-digikam b/bin/gal-mj-digikam index 3598573..7a1a331 100755 --- a/bin/gal-mj-digikam +++ b/bin/gal-mj-digikam @@ -1,4 +1,6 @@ #!/usr/bin/perl +# This is a hack, which takes a Digikam album, finds all photos +# possessing a "web" tag and imports them to UCW::Gallery. use common::sense; diff --git a/bin/gal-mj-init b/bin/gal-mj-init index 4f932f8..adceebe 100755 --- a/bin/gal-mj-init +++ b/bin/gal-mj-init @@ -1,4 +1,6 @@ #!/bin/sh +# This creates a gallery with MJ's default configuration + set -e if [ -f gallery.cf ] ; then diff --git a/bin/gal-mj-map b/bin/gal-mj-map deleted file mode 100755 index aedd974..0000000 --- a/bin/gal-mj-map +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/perl - -use common::sense; - -use Digest::SHA; -use File::Find; - -STDOUT->autoflush(1); - -find({ - wanted => sub { - my $name = $File::Find::name; - $name =~ s{^\./}{}; - $name =~ m{^\d} or return; - $name =~ m{\.jpe?g$}i or return; - -f $name or return; - print "$name\t"; - - my $sha = Digest::SHA->new(1); - $sha->addfile($name) or die "Cannot hash $name\n"; - my $id = substr($sha->hexdigest, 0, 16); - print "$id\n"; - }, - no_chdir => 1, -}, "."); diff --git a/bin/gal-mj-migrate-check b/bin/gal-mj-migrate-check deleted file mode 100755 index e7762a6..0000000 --- a/bin/gal-mj-migrate-check +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/perl -# Check that thumbnail aspect ratios match pre-migration data - -use common::sense; - -use UCW::Gallery; - -my $gal = UCW::Gallery->load_config; -my $meta = $gal->read_meta($gal->cache_meta_name); - -open T, "gallery.thumb" or die "Cannot read gallery.thumb\n"; -my @thumbs = (); -while () { - chomp; - my ($name, $tw, $th) = split /\s+/; - push @thumbs, [ $tw, $th ]; -} -close T; - -for my $id (@{$meta->{sequence}}) { - my ($tw, $th) = @{shift @thumbs} or die; - my $ta = $tw / $th; - my $m = $meta->{photo}->{$id} or die; - my $pw = $m->{w}; - my $ph = $m->{h}; - my $pa = $pw / $ph; - if (abs($ta - $pa) > 0.05) { - if (abs($ta - 1/$pa) > 0.05) { - print STDERR "$id: Mismatched aspect ratio: orig $ta (${tw}x${th}) new $pa (${pw}x${ph})\n"; - } else { - print STDERR "$id: Mismatched rotation\n"; - } - } -} diff --git a/bin/gal-mj-upgrade b/bin/gal-mj-upgrade deleted file mode 100755 index da019f6..0000000 --- a/bin/gal-mj-upgrade +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/perl - -use common::sense; - -use UCW::Gallery; -use File::Spec; -use Image::Magick; - -my $photos_root = $ENV{HOME} . '/photos'; - -my $album = $ARGV[0] // die "Usage: gal mj-upgrade \n"; -print "### $album ###\n"; - -### Scan photos.map ### - -my $year = $album; -$year =~ s{/.*}{}; -if ($album eq '2009/Fireworks') { $year = 2008; } -print "Loading map for $year\n"; -open M, "$photos_root/photos.map" or die "No map file found\n"; -my %map = (); -while () { - chomp; - m{^$year} or next; - my ($path, $hash) = split /\t/; - my $name = $path; - $name =~ s{.*/}{}; - if (defined $map{$name}) { - my $prev = $map{$name}; - if ($prev->{hash} ne $hash) { - print STDERR "Collision for $name: ", $prev->{path}, " vs. ", $path, "\n"; - } else { - # print STDERR "Harmless collision for $name: ", $prev->{path}, " vs. ", $path, "\n"; - } - } else { - $map{$name} = { path => $path, hash => $hash }; - } -} -close M; - -### Scan static list (if any) ### - -my @src = (); -if (open S, "../static/photos/$album/x") { - print "Found static list\n"; - while () { - chomp; - my @fields = split /\t/; - if (@fields == 4) { - push @src, { name => $fields[0], rotate => $fields[2], xform => $fields[3] }; - } elsif (@fields == 2) { - push @src, { name => $fields[0], rotate => $fields[1], xform => '.' }; - } else { - die "Error parsing gallery list: $_\n"; - } - } - close S; -} - -### Parse index.cgi and produce gallery.new ### - -open I, "$album/index.cgi" or die "Cannot find $album/index.cgi\n"; -open W, ">$album/gallery.new" or die "Cannot create $album/gallery.new\n"; -open T, ">$album/gallery.thumb" or die "Cannot create $album/gallery.thumb\n"; -my %opt = (); -my %found_dirs = (); -my @items = (); -while () { - chomp; - if (/^\s+"(\w+)" => "(.*)",?$/) { - $opt{$1} = $2; - print "Option: $1 = $2\n"; - } elsif (/^img\("([^"]+)(\.jpe?g)", "([^"]*)"\);\s*# (\S+)/) { - my $nr = $1; - my $ext = $2; - my $title = $3; - my $file = $4; - $file =~ s{^.*/}{}g; - - my $map = $map{$file}; - if (!$map) { - print STDERR "$album: No match for $file\n"; - next; - } - my $path = $map->{path}; - my ($vv, $dd, $ff) = File::Spec->splitpath($path); - $found_dirs{$dd} = 1; - - print "Image: $nr $path [$title]\n"; - my $src; - if (@src) { - if ($nr =~ m{^\d+$} && $nr <= @src) { - $src = $src[$nr-1]; - } else { - print STDERR "$album: Crooked refs ($nr)\n"; - } - } - - print W join("\t", - "$photos_root/$path", - $map->{hash}, - ($src ? $src->{rotate} : '-'), - ($src ? $src->{xform} : '.'), - ($title ne "" ? $title : '-'), - ), "\n"; - - - my $thumb = "../static/photos/$album/$nr-thumb.jpg"; - if (!-f $thumb) { - print STDERR "$album: Cannot find thumbnail for photo $nr ($thumb)\n"; - print T "1 1\n"; - } else { - my $im = new Image::Magick; - my ($thumb_w, $thumb_h, $thumb_size, $thumb_format) = $im->PingImage($thumb) or die "Error reading $thumb\n"; - print T "$thumb $thumb_w $thumb_h\n"; - } - } elsif (/^($|#|require|SetOptions|\)|Start|Finish)/) { - # Nothing important - } else { - print STDERR "$album/index.cgi: Parse error at line $.: $_\n"; - } -} -close T; -close W; -close I; - -if (scalar keys %found_dirs != 1) { - print STDERR "$album: Photos in multiple directories\n"; -} - -### Create gallery.cf ### - -open CF, ">$album/gallery.cf" or die "Cannot create $album/gallery.cf"; -print CF <<'AMEN' ; -use common::sense; - -my $gal = require '../../default.cf'; -$gal->set( -AMEN - -for my $cf (reverse sort keys %opt) { - print CF "\t$cf => \"", $opt{$cf}, "\",\n"; -} - -print CF <<'AMEN' ; -); - -return $gal; -AMEN - -close CF; diff --git a/bin/gal-mj-upload b/bin/gal-mj-upload index 67aae53..e7fce29 100755 --- a/bin/gal-mj-upload +++ b/bin/gal-mj-upload @@ -1,4 +1,5 @@ #!/usr/bin/perl +# This is a hack to upload a locally generated gallery to MJ's web. use common::sense;