#!/usr/bin/python # -*- encoding: utf-8 -*- # # Removes IPTC keywords from images. # # Usage: remove-iptc-keywords [encoding] keyword1,keyword2,...,keywordn image1.jpg image2.jpg ... imagen.jpg # # Copyright: Miguel Angel Vilela import pyexiv2 import sys IptcTag = 'Iptc.Application2.Keywords' if len(sys.argv) < 3: print "Usage: %s [enc] keyword1,keyword2,...,keywordN " \ "image1.jpg image2.jpg ... imageN.jpg" % sys.argv[0] sys.exit(1) encoding = sys.argv[1] keywords = sys.argv[2].split(',') images = sys.argv[3:] if encoding not in ('latin-1', 'utf-8'): keywords = encoding + keywords while "*.jpg" in images: images.remove("*.jpg") while "*.JPG" in images: images.remove("*.JPG") for image in images: im = pyexiv2.Image(image) im.readMetadata() if IptcTag not in im.iptcKeys(): continue image_keywords = im[IptcTag] if type(image_keywords) == type(""): image_keywords = [image_keywords] else: image_keywords = list(image_keywords) if encoding == 'latin-1': # Convert ISO-8859-1 text in old (Spanish) tags into UTF-8 image_keywords = [k.decode('latin-1').encode('utf-8') for k in image_keywords] elif encoding == 'utf-8': image_keywords = [k.decode('utf-8').encode('latin-1') for k in image_keywords] else: pass print "==", image_keywords for keyword in keywords: while keyword in image_keywords: print "-", keyword image_keywords.remove(keyword) print ":=", image_keywords im[IptcTag] = image_keywords im.writeMetadata() print "Done with %s" % image