my $old = $gal->read_list('gallery.list');
if ($old) {
print "Updating gallery.list\n";
- my %old_by_id = map { $_->{id} => $_ } @$old;
- for my $i (@images) {
- my $id = $i->{id};
- my $o = $old_by_id{$id};
- if ($o) {
- print "\t$id: updated\n";
- $i->{orientation} = $o->{orientation};
- $i->{xfrm} = $o->{xfrm};
- $i->{title} = $o->{title};
- } else {
- print "\t$id: new\n";
+ my %new_by_id = map { $_->{id} => $_ } @images;
+ my @result = ();
+ for my $o (@$old) {
+ my $id = $o->{id};
+ my $i = $new_by_id{$id};
+ if (!$i) {
+ print "\t$id: removed\n";
+ next;
}
- delete $old_by_id{$id};
+ print "\t$id: updated\n";
+ push @result, $o;
+ delete $new_by_id{$id};
}
- for my $id (keys %old_by_id) {
- print "\t$id: removed\n";
+ for my $i (@images) {
+ my $id = $i->{id};
+ $new_by_id{$id} or next;
+ print "\t$id: new\n";
+ push @result, $i;
}
+ @images = @result;
}
}