#!/usr/bin/python # -*- coding: utf-8 -*- from pyexiv2 import ImageMetadata, ExifTag, IptcTag, XmpTag import sys, os from datetime import datetime, date def print_key_value(metadata, key): print key, '=', metadata[key] if __name__ == '__main__': # Read an image file's metadata image_file = sys.argv[1] metadata = ImageMetadata(image_file) metadata.read() # Print a list of all the keys of the EXIF tags in the image print 'EXIF keys:', metadata.exif_keys try: # Print the value of the Exif.Image.DateTime tag key = 'Exif.Image.DateTime' print_key_value(metadata, key) # Set the value of the Exif.Image.DateTime tag metadata[key].value = datetime.now() print_key_value(metadata, key) except KeyError: print '[not set]' # Add a new tag key = 'Exif.Image.Orientation' metadata[key] = ExifTag(key, 1) print_key_value(metadata, key) # Print a list of all the keys of the IPTC tags in the image print os.linesep, 'IPTC keys:', metadata.iptc_keys try: # Print the value of the Iptc.Application2.DateCreated tag key = 'Iptc.Application2.DateCreated' print_key_value(metadata, key) # Set the value of the Iptc.Application2.DateCreated tag metadata[key].values = [date.today()] print_key_value(metadata, key) except KeyError: print '[not set]' # Add a new tag key = 'Iptc.Application2.Keywords' keywords = ['little', 'big', 'man'] metadata[key] = IptcTag(key, keywords) print_key_value(metadata, key) # Print a list of all the keys of the XMP tags in the image print os.linesep, 'XMP keys:', metadata.xmp_keys try: # Print the value of the Xmp.dc.subject tag key = 'Xmp.dc.subject' print_key_value(metadata, key) # Set the value of the Xmp.dc.subject tag metadata[key].value = keywords print_key_value(metadata, key) except KeyError: print '[not set]' # Add a new tag key = 'Xmp.dc.title' value = {'x-default': 'Sunset', 'fr': 'Coucher de soleil'} metadata[key] = XmpTag(key, value) print_key_value(metadata, key) # Write back the metadata to the file metadata.write()