User:Nichalp/Upload script/csv creator.pl
From Wikimedia Commons, the free media repository
Copy and save the code as csv_creator.pl.
Caution – Do not edit unless you know what you are doing!
#! /usr/bin/perl # ================================================================== # ** Date: 2008-09-05 ** # ** Author:- Nicholas:~ Wikipedia: [[en:User:Nichalp]] ** # ** Filename:- csv_creator.pl ** # ** Licence:- Published under the GPLv3 licence ** # ** Revision:- 1.0 ** # ** Purpose: Scan all .JPG files in a directory, then read ** # ** corresponding Exif information, and then list ** # ** them in a CSV file ** # ** URL: http://commons.wikimedia.org/wiki/User:Nichalp/Upload_script # ================================================================== use strict; use warnings; use utf8; use Image::ExifTool qw(:Public); #Declaring variables my $exifTool = new Image::ExifTool; my $file; my $info; my @files; my ($author, $date, $aperture, $shutter, $iso, $camera_model, $lens); # Creating the CSV file open (UPLOAD,">upload.csv") or die "Could not write file.\n"; # Opening the directory opendir(DIR, "."); # Selecting only JPG file types @files = grep (/\.jpe?g$/i, readdir(DIR)); closedir(DIR); # Printing headers print UPLOAD '"Current name","New name","Description lang","Description","Date","Author name","Permissions","Category1","Category2","Category3","Category4","Category5","Xform","Coordinate type","Lat deg","Lat min","Lat sec","Lat Ref","Long deg","Long min","Long sec","Long Ref","Type","Scale","Region","Heading","Source","Altitude","Other versions 1","Other versions 2","Description lang 2","Description 2","Description lang 3","Description 3","Embed exif?","Caption","Country","State","Place","Website","Keywords","Camera info?","Camera Model","Aperture","Shutter","Film","ISO","Lens","Flickr?","Flickr URL","Flickr image title","Flickr photographer location","Flickr photographer location","Other information"',"\n"; foreach $file (@files) { $info = $exifTool->ImageInfo($file); my $rotation = $exifTool->GetValue('Orientation', 'ValueConv'); $info = $exifTool->ImageInfo($file); $date = $$info{DateTimeOriginal}; $camera_model = $$info{Model}; $aperture = $$info{ApertureValue}; $iso = $$info{ISO}; $lens = $$info{Lens}; $shutter = $$info{ShutterSpeedValue}; #printing values print UPLOAD "\"$file\""; print UPLOAD ',,,,'; if (defined $date) #Checking for null values {print UPLOAD "\"$date\"";} else {print UPLOAD ',';}; print UPLOAD ',,,,,,,,'; if (defined $rotation) {print UPLOAD "\"$rotation\"";} else {print UPLOAD ',';}; print UPLOAD ',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'; if (defined $camera_model) {print UPLOAD "\"$camera_model\"";} else {print UPLOAD ',';}; print UPLOAD ','; if (defined $aperture) {print UPLOAD "\"$aperture\""} else {print UPLOAD ',';}; print UPLOAD ','; if (defined $shutter) {print UPLOAD "\"'$shutter\"";} #The leading single quote is to prevent spreadsheets from auto-formatting as a date. We will remove it later. else {print UPLOAD ',';}; print UPLOAD ','; print UPLOAD "Digital".','; if (defined $iso) {print UPLOAD "\"$iso\"".','} else {print UPLOAD ',';}; if (defined $lens) {print UPLOAD "\"$lens\""} else {print UPLOAD ',';}; print UPLOAD ',,,,,,',"\n"; } print "upload.csv sucessfully created!\n"; close (UPLOAD); __END__