XMP Reader in Ruby. Parse XMP data extracted from an image into rich data types.
Use something like imagemagick to extract the XMP, then read it with this class:
require "xmpr"
raw_xmp = `convert image.jpg xmp:-`
xmp = XMPR.parse(raw_xmp)
xmp["dc", "title"] # => "Amazing Photo"
xmp["photoshop", "Category"] # => "summer"
xmp["photoshop", "SupplementalCategories"] # => ["morning", "sea"]
The xmp instance fetches namespaced attributes. You can use fully qualified namespaces, or some namespaces have shortcuts:
xmp["http://purl.org/dc/elements/1.1/", "title"] # => "Amazing Photo"
xmp["dc", "title"] # => "Amazing Photo" (same thing)
The following namespaces have shortcuts:
aux
—http://ns.adobe.com/exif/1.0/aux/
cc
—http://creativecommons.org/ns#
(Creative Commons)crs
—http://ns.adobe.com/camera-raw-settings/1.0/
dc
—http://purl.org/dc/elements/1.1/
(Dublin Core)exif
—http://ns.adobe.com/exif/1.0/
Iptc4xmpCore
—http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/
(IPTC)pdf
—http://ns.adobe.com/pdf/1.3/
photoshop
—http://ns.adobe.com/photoshop/1.0/
rdf
—http://www.w3.org/1999/02/22-rdf-syntax-ns#
tiff
—http://ns.adobe.com/tiff/1.0/
x
—adobe:ns:meta/
xap
—http://ns.adobe.com/xap/1.0/
xmp
—http://ns.adobe.com/xap/1.0/
(XMP)xmpidq
—http://ns.adobe.com/xmp/Identifier/qual/1.0/
xmpBJ
—http://ns.adobe.com/xap/1.0/bj/
xmpRights
—http://ns.adobe.com/xap/1.0/rights/
xmpMM
—http://ns.adobe.com/xap/1.0/mm/
xmpTPg
—http://ns.adobe.com/xap/1.0/t/pg/
Refactored from XMP. Inspired by ExifTool.
MIT license, see LICENSE.