Blaufish’s Image Rename Script – uppdaterat för Fujifilm X10

Putsade lite på mitt gamla bild-namngivningsscript!  Blev en tre anpassningar av ”fulhack” / quirks stil för X10 eftersom den skriver ”sämre” metadata än Canon kameror.

# Blaufish’s Image Rename Script
# https://blaufish.wordpress.com/
#
# Some rights reserved;
# http://creativecommons.org/licenses/by-nc-sa/3.0/
#
use Image::ExifTool qw(: Public);
use File::Copy;

my $destination = $ARGV[0];
my $exifTool = new Image::ExifTool;
$exifTool->Options(DateFormat=>"%Y-%m-%d %H%M%S");
my $dicomregexp = "^([A-Z_]{4}[0-9]{4}).[A-Z0-9]{3}\$";

sub renameImages {
 my($regexp,$extension) = @_;

 opendir(DIR, ".");
 my @files = grep(/$regexp/,readdir(DIR));
 closedir(DIR);
 foreach my $file (@files) {
   my $info = $exifTool->ImageInfo($file);
   #foreach (keys %$info) {  print "$_ => $$info{$_}\n"; }

   my $date = $info->{'DateTimeOriginal'};
   my $camera = $info->{'Model'};
   my $serial1 = $info->{'SerialNumber'};
   my $serial2 = $info->{'InternalSerialNumber'};
   my $fileno = $info->{'FileNumber'};

   if ($date eq "") {
      print "$file -- no DateTimeOriginal, ignore!\n";
      next;
   }

   # if no FileNumber, use dicom filename instead
   # Fujifilm X10 etc doesn't set FileNumber 
   if ($fileno eq "" && $file =~ m/$dicomregexp/) {
      $fileno = $1;
   }

   if ($fileno eq "") {
      print "$file -- no fileno, ignore!\n";
      next;
   }

   # quirks for fujifilm X10 etc
   $serial2 =~ s/\s+/ /g; # replace spacespace with space
   $serial2 =~ tr/[:]/[_]/; # replace : with _ in filenames

   my $newfile = $date . " " . $camera . " ";
   if ($serial1) { $newfile .= $serial1 . " "; }
   if ($serial2) { $newfile .= $serial2 . " "; }
   $newfile .= $fileno . "." . $extension ;

   if ($newfile eq $file) {
      print "$newfile -- allready has correct file name.\n";
      next;
   }

   if (-e $newfile) {
      print "$newfile -- exists! will not overwrite!\n";
      next;
   }

   print $newfile . "\n";
   rename($file, $newfile) or die "File cannot be renamed to $newfile.";
 }
}

renameImages("[0-9]+\\.(jpg|JPG)\$","jpg");
renameImages("[0-9]+\\.(cr2|CR2)\$","cr2");
Advertisements

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s