summaryrefslogtreecommitdiff
path: root/rapid/metadataxmp.py
diff options
context:
space:
mode:
Diffstat (limited to 'rapid/metadataxmp.py')
-rwxr-xr-xrapid/metadataxmp.py199
1 files changed, 0 insertions, 199 deletions
diff --git a/rapid/metadataxmp.py b/rapid/metadataxmp.py
deleted file mode 100755
index b42b587..0000000
--- a/rapid/metadataxmp.py
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/usr/bin/python
-# -*- coding: latin1 -*-
-
-### Copyright (C) 2011-2012 Damon Lynch <damonlynch@gmail.com>
-
-### This program is free software; you can redistribute it and/or modify
-### it under the terms of the GNU General Public License as published by
-### the Free Software Foundation; either version 2 of the License, or
-### (at your option) any later version.
-
-### This program is distributed in the hope that it will be useful,
-### but WITHOUT ANY WARRANTY; without even the implied warranty of
-### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-### GNU General Public License for more details.
-
-### You should have received a copy of the GNU General Public License
-### along with this program; if not, write to the Free Software
-### Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
-### USA
-
-import subprocess
-
-import multiprocessing, logging
-logger = multiprocessing.get_logger()
-
-class XmpMetadataSidecar:
-
- def __init__(self, filename):
- self.filename = filename
- self.keys = []
-
- def _add_pair(self, key_value_pair):
- self.keys.append(key_value_pair)
- logger.debug(key_value_pair)
-
- def _generate_exiv2_command_line(self):
- # -f option: overwrites any existing xmp file
- return ['exiv2', '-f'] + self.keys + ['-exX', self.filename]
-
- def _generate_exiv2_contact_info(self, key, value):
- return "-M set Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:%s %s" % (key, value)
-
- def _generate_exiv2_dc(self, key, value):
- return "-M set Xmp.dc.%s %s" % (key, value)
-
- def _generate_exiv2_photoshop(self, key, value):
- return "-M set Xmp.photoshop.%s %s" % (key, value)
-
- def _generate_exiv2_rights(self, key, value):
- return "-M set Xmp.xmpRights.%s %s" % (key, value)
-
- def _generate_exiv2_iptc(self, key, value):
- return "-M set Xmp.iptc.%s %s" % (key, value)
-
- def _generate_exiv2_exif(self, key, value):
- return "-M set Xmp.exif.%s %s" % (key, value)
-
- def set_location(self, location):
- self._add_pair(self._generate_exiv2_iptc('Location', location))
-
- def set_city(self, city):
- self._add_pair(self._generate_exiv2_photoshop('City', city))
-
- def set_state_province(self, state):
- self._add_pair(self._generate_exiv2_photoshop('State', state))
-
- def set_country(self, country):
- self._add_pair(self._generate_exiv2_photoshop('Country', country))
-
- def set_country_code(self, country_code):
- self._add_pair(self._generate_exiv2_iptc('CountryCode', country_code))
-
- def set_headline(self, headline):
- self._add_pair(self._generate_exiv2_photoshop('Headline', headline))
-
- def set_description_writer(self, writer):
- """
- Synonym: Caption writer
- """
- self._add_pair(self._generate_exiv2_photoshop('CaptionWriter', writer))
-
- def set_description(self, description):
- """A synonym for this in some older programs is 'Caption'"""
- self._add_pair(self._generate_exiv2_dc('description', description))
-
- def set_subject(self, subject):
- """
- You can call this more than once, to add multiple subjects
-
- A synonym is 'Keywords'
- """
- self._add_pair(self._generate_exiv2_dc('subject', subject))
-
- def set_creator(self, creator):
- """
- Sets the author (creator) field. Photo Mechanic calls this 'Photographer'.
- """
- self._add_pair(self._generate_exiv2_dc('creator', creator))
-
- def set_creator_job_title(self, job_title):
- self._add_pair(self._generate_exiv2_photoshop('AuthorsPosition', job_title))
-
- def set_credit_line(self, credit_line):
- self._add_pair(self._generate_exiv2_photoshop('Credit', credit_line))
-
- def set_source(self, source):
- """
- original owner or copyright holder of the photograph
- """
- self._add_pair(self._generate_exiv2_photoshop('Source', source))
-
- def set_copyright(self, copyright):
- self._add_pair(self._generate_exiv2_dc('rights', copyright))
-
- def set_copyright_url(self, copyright_url):
- self._add_pair(self._generate_exiv2_rights('WebStatement', copyright_url))
-
- def set_contact_city(self, city):
- self._add_pair(self._generate_exiv2_contact_info('CiAdrCity', city))
-
- def set_contact_country(self, country):
- self._add_pair(self._generate_exiv2_contact_info('CiAdrCtry', country))
-
- def set_contact_address(self, address):
- """The contact information address part.
- Comprises an optional company name and all required information
- to locate the building or postbox to which mail should be sent."""
- self._add_pair(self._generate_exiv2_contact_info('CiAdrExtadr', address))
-
- def set_contact_postal_code(self, postal_code):
- self._add_pair(self._generate_exiv2_contact_info('CiAdrPcode', postal_code))
-
- def set_contact_region(self, region):
- """State/Province"""
- self._add_pair(self._generate_exiv2_contact_info('CiAdrRegion', region))
-
- def set_contact_email(self, email):
- """Multiple email addresses can be given, separated by a comma."""
- self._add_pair(self._generate_exiv2_contact_info('CiEmailWork', email))
-
- def set_contact_telephone(self, telephone):
- """Multiple numbers can be given, separated by a comma."""
- self._add_pair(self._generate_exiv2_contact_info('CiTelWork', telephone))
-
- def set_contact_url(self, url):
- """Multiple URLs can be given, separated by a comma."""
- self._add_pair(self._generate_exiv2_contact_info('CiUrlWork', url))
-
- def set_exif_value(self, key, value):
- self._add_pair(self._generate_exiv2_exif(key, value))
-
- def write_xmp_sidecar(self):
- cmd = self._generate_exiv2_command_line()
- if logger.getEffectiveLevel() == logging.DEBUG:
- cmd_line = ''
- for c in cmd:
- cmd_line += c + ' '
- cmd_line = cmd_line.strip()
- logger.debug("XMP write command: %s", cmd_line)
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
- return proc.communicate()[0].strip()
-
-
-if __name__ == '__main__':
- import sys
-
-
- if (len(sys.argv) != 2):
- print 'Usage: ' + sys.argv[0] + ' path/to/photo/containing/metadata'
-
- else:
- x = XmpMetadataSidecar(sys.argv[1])
- x.set_description("This is image is just a sample and is nothing serious. I used to test out writing XMP files in Rapid Photo Downloader.")
- x.set_description_writer("Damon Lynch wrote caption")
- x.set_headline("Sample image to test XMP")
- x.set_subject("Keyword 1")
- x.set_subject("Keyword 2")
- x.set_city("Minneapolis")
- x.set_location("University of Minnesota")
- x.set_state_province("Minnesota")
- x.set_country("United States of America")
- x.set_country_code("USA")
- x.set_creator("Damon Lynch")
- x.set_creator_job_title("Photographer")
- x.set_credit_line("Contact Damon for permission")
- x.set_source("Damon Lynch is the original photographer")
- x.set_copyright("© 2011 Damon Lynch, all rights reserved.")
- x.set_copyright_url("http://www.damonlynch.net/license")
- x.set_contact_address("Contact house number, street, apartment")
- x.set_contact_city('Contact City')
- x.set_contact_region('Contact State')
- x.set_contact_postal_code('Contact Post code')
- x.set_contact_telephone('+1 111 111 1111')
- x.set_contact_country('Contact Country')
- x.set_contact_address('Address\nApartment')
- x.set_contact_url('http://www.sample.net')
- x.set_contact_email('name@email1.com, name@email2.com')
-
- x.write_xmp_sidecar()