xmpr 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 08d0e048e64b4d40f19b961396560ca82665e267
4
- data.tar.gz: 47aa31c23b2373edda9845062c9fde289c069903
2
+ SHA256:
3
+ metadata.gz: 6f0ad440f14b09354720adb4213ff7d2f2d85f9fab7fcbfaf9cd78e478230548
4
+ data.tar.gz: f578707eca819fd8d9b7f8afcc07b2c70362c1be42905c7f05a97260c15b2f85
5
5
  SHA512:
6
- metadata.gz: f282f52a180f4afca03cde9afb64c6f560d9d4e403c99ff5f27bfd306bf2296f534f06f91d5a4fa64734346f0b09be7d6bb3a861f19666232ef57c18896b3393
7
- data.tar.gz: 06f0587b77eb1a758295e57aac7b7ece5abb5aa80eff6abefed1d01ddcb339bda15405c7d644d601f5e3b7ead72c7769e27a7f3e16dc7adc88c771fe08db4de0
6
+ metadata.gz: 5f6bad1fdd87cfe461ad210675c9c2d4f43c9db71d04a8b250fb4ba5389f5a6d767e124d65aa5c0f7c98c8b8f55189e7d38dbe21141f81e2d1ae4c8bbdca911e
7
+ data.tar.gz: 7fc9380ec366fb686fa7084a9ccdcf13e9b749e9d620fbe8e06790595627999ecf0ff1b3e7ee7f5385aa03f910723e5f35db8f2402867f4cc7d85a82d3e0199c
@@ -1,2 +1 @@
1
- �e�px����G���zX,�Y�?E���>rE[��;,���iZr�j2f&�Fx]~�G����#��V�0��?���
2
- ��Ew�ʼnuϏ��!i�"i�GK��~w̎HM%G"sC�:�N��|�zk� ވ�_�+3�Sm
1
+ ��$֒a�ҊSx�6�&}>d�.�����W���xa�] ��ek���ϱ�ˉюә��Qq�q�nQ�m1������3Oؑ�f��wi���~C��p�ݛ¦�:�K���"�^���˳7���P"��|���Kq�<����K��u{G��e9�q�� BR����g�٩��7t�:���� 'Ri-tZ 8|�� O���Pƙ�S�Hx0Q Yr���s����͠��_t~� _����(�C�rin�G��
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -4,6 +4,47 @@
4
4
 
5
5
  XMP Reader in Ruby. Parse XMP data extracted from an image into rich data types.
6
6
 
7
+ ## Usage
8
+
9
+ Use something like imagemagick to extract the XMP, then read it with this class:
10
+
11
+ ```ruby
12
+ require "xmpr"
13
+ raw_xmp = `convert image.jpg xmp:-`
14
+ xmp = XMPR.parse(raw_xmp)
15
+ xmp["dc", "title"] # => "Amazing Photo"
16
+ xmp["photoshop", "Category"] # => "summer"
17
+ xmp["photoshop", "SupplementalCategories"] # => ["morning", "sea"]
18
+ ```
19
+
20
+ The xmp instance fetches namespaced attributes. You can use fully qualified namespaces, or some namespaces have shortcuts:
21
+
22
+ ```
23
+ xmp["http://purl.org/dc/elements/1.1/", "title"] # => "Amazing Photo"
24
+ xmp["dc", "title"] # => "Amazing Photo" (same thing)
25
+ ```
26
+
27
+ The following namespaces have shortcuts:
28
+
29
+ * `aux` — `http://ns.adobe.com/exif/1.0/aux/`
30
+ * `cc` — `http://creativecommons.org/ns#` ([Creative Commons](http://creativecommons.org))
31
+ * `crs` — `http://ns.adobe.com/camera-raw-settings/1.0/`
32
+ * `dc` — `http://purl.org/dc/elements/1.1/` ([Dublin Core](http://dublincore.org/))
33
+ * `exif` — `http://ns.adobe.com/exif/1.0/`
34
+ * `Iptc4xmpCore` — `http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/` ([IPTC](http://iptc.org/))
35
+ * `pdf` — `http://ns.adobe.com/pdf/1.3/`
36
+ * `photoshop` — `http://ns.adobe.com/photoshop/1.0/`
37
+ * `rdf` — `http://www.w3.org/1999/02/22-rdf-syntax-ns#`
38
+ * `tiff` — `http://ns.adobe.com/tiff/1.0/`
39
+ * `x` — `adobe:ns:meta/`
40
+ * `xap` — `http://ns.adobe.com/xap/1.0/`
41
+ * `xmp` — `http://ns.adobe.com/xap/1.0/` ([XMP](http://www.adobe.com/products/xmp.html))
42
+ * `xmpidq` — `http://ns.adobe.com/xmp/Identifier/qual/1.0/`
43
+ * `xmpBJ` — `http://ns.adobe.com/xap/1.0/bj/`
44
+ * `xmpRights` — `http://ns.adobe.com/xap/1.0/rights/`
45
+ * `xmpMM` — `http://ns.adobe.com/xap/1.0/mm/`
46
+ * `xmpTPg` — `http://ns.adobe.com/xap/1.0/t/pg/`
47
+
7
48
  ## Thanks
8
49
 
9
50
  Refactored from [XMP][xmp-gem]. Inspired by [ExifTool][exiftool].
@@ -11,6 +52,13 @@ Refactored from [XMP][xmp-gem]. Inspired by [ExifTool][exiftool].
11
52
  [xmp-gem]: https://github.com/amberbit/xmp
12
53
  [exiftool]: http://www.sno.phy.queensu.ca/~phil/exiftool/
13
54
 
55
+ ## References
56
+
57
+ * XMP specification
58
+ ([Part 1](http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart1.pdf),
59
+ [Part 2](http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart2.pdf),
60
+ [Part 3](http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart3.pdf))
61
+
14
62
  ## License
15
63
 
16
64
  MIT license, see [LICENSE](LICENSE).
@@ -20,7 +20,8 @@ module XMPR
20
20
  # Namespace shortcuts, and fallbacks for undeclared namespaces.
21
21
  NAMESPACES = {
22
22
  "aux" => "http://ns.adobe.com/exif/1.0/aux/",
23
- "crs" => "http://ns.adobe.com/camera-raw-settings/1.0/",
23
+ "cc" => "http://creativecommons.org/ns#",
24
+ "crs" => "http://ns.adobe.com/camera-raw-settings/1.0/",
24
25
  "dc" => "http://purl.org/dc/elements/1.1/",
25
26
  "exif" => "http://ns.adobe.com/exif/1.0/",
26
27
  "Iptc4xmpCore" => "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/",
@@ -100,8 +101,6 @@ module XMPR
100
101
  alt_value(alt_element, lang: lang)
101
102
  elsif array_element = element.xpath("./rdf:Bag | ./rdf:Seq", NAMESPACES).first
102
103
  array_value(array_element)
103
- else
104
- raise "Don't know how to handle:\n#{element}"
105
104
  end
106
105
  end
107
106
 
@@ -1,3 +1,3 @@
1
1
  module XMPR
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xmpr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Cochran
@@ -10,9 +10,9 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDKDCCAhCgAwIBAgIBAzANBgkqhkiG9w0BAQUFADA6MQ0wCwYDVQQDDARzajI2
13
+ MIIDKDCCAhCgAwIBAgIBBzANBgkqhkiG9w0BAQsFADA6MQ0wCwYDVQQDDARzajI2
14
14
  MRQwEgYKCZImiZPyLGQBGRYEc2oyNjETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0x
15
- NTAzMTcyMjUwMjZaFw0xNjAzMTYyMjUwMjZaMDoxDTALBgNVBAMMBHNqMjYxFDAS
15
+ OTEwMjQwNjM0MjJaFw0yMDEwMjMwNjM0MjJaMDoxDTALBgNVBAMMBHNqMjYxFDAS
16
16
  BgoJkiaJk/IsZAEZFgRzajI2MRMwEQYKCZImiZPyLGQBGRYDY29tMIIBIjANBgkq
17
17
  hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr60Eo/ttCk8GMTMFiPr3GoYMIMFvLak
18
18
  xSmTk9YGCB6UiEePB4THSSA5w6IPyeaCF/nWkDp3/BAam0eZMWG1IzYQB23TqIM0
@@ -21,14 +21,14 @@ cert_chain:
21
21
  4O/FL2ChjL2CPCpLZW55ShYyrzphWJwLOJe+FJ/ZBl6YXwrzQM9HKnt4titSNvyU
22
22
  KzE3L63A3PZvExzLrN9u09kuWLLJfXB2sGOlw3n9t72rJiuBr3/OQQIDAQABozkw
23
23
  NzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU99dfRjEKFyczTeIz
24
- m3ZsDWrNC80wDQYJKoZIhvcNAQEFBQADggEBAFxKLjiLkMLkUmdpsAzJad/t7Jo/
25
- CGby/3n0WSXPBeZJfsnSdJ2qtG7iy/xqYDc1RjpKgX0RlMgeQRSE3ZDL/HZzBKDF
26
- azaTgG9Zk1Quu59/79Z0Sltq07Z/IeccFl5j9M+1YS8VY2mOPi9g03OoOSRmhsMS
27
- wpEF+zvJ0ESS5OPjtp6Sk4q1QYc0aVIthEznuVNMW6CPpTNhMAOFMaTC5AXCzJ3Q
28
- 52G9HuhbVSTgE/I10H9qZBOE3qdP8ka/Fk0PUrux/DuUanNZgSKJokrQvRA4H9Au
29
- WpPA7HJYV6msWQiukoBEhfQ2l6Fl2HUwntvX3MCcFNHeJJ5ETERp9alo88E=
24
+ m3ZsDWrNC80wDQYJKoZIhvcNAQELBQADggEBAI06Bv7coqIflKtxRIwIJABl3hRR
25
+ fZ2U0C1T16VXGwGdxRyDJHYt/2aMDfS/bpDzqR0ela2dwTh/29/oZQeAtzbQq6dE
26
+ 7Pax2oYi+dahcreJFndcA6P/dl03XLNVIFVDtfEHvcUjtKKWQALAWirmW7KGAW1R
27
+ Xn1uy1RJ0TzazCY059p0UQwLU1KXz/5NnTrGka/GvKjLTjk67T6Y05lmr7TxMY2w
28
+ cTRkS42ilkarelc4DnSSO5jw7qFq7Cmf6F9hMx3xdoSWpLf+FvXJRbYrqwZIsmME
29
+ V8zEtJFhdNOFOdtcTE67qh/aYQe2y/LDnG9ywXHWdSeF4UUjg1WRt8s3OP8=
30
30
  -----END CERTIFICATE-----
31
- date: 2015-12-18 00:00:00.000000000 Z
31
+ date: 2019-11-19 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: nokogiri
@@ -50,28 +50,28 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '1.10'
53
+ version: '2.0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.10'
60
+ version: '2.0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '10.0'
67
+ version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '10.0'
74
+ version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: minitest
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -118,8 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.4.5.1
121
+ rubygems_version: 3.0.4
123
122
  signing_key:
124
123
  specification_version: 4
125
124
  summary: Parse XMP data
@@ -127,4 +126,3 @@ test_files:
127
126
  - test/fixtures/xmp.xml
128
127
  - test/test_helper.rb
129
128
  - test/xmpr_test.rb
130
- has_rdoc:
metadata.gz.sig CHANGED
Binary file