{ "info": { "author": "LeoHsiao", "author_email": "leohsiao@foxmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3" ], "description": "# pyexiv2\n\nRead/Write metadata of digital image, including EXIF, IPTC, XMP.\n\n- install: `pip install pyexiv2`\n- [source code on github](https://github.com/LeoHsiao1/pyexiv2)\n\n## Features\n\n- Runs on C++ API of [Exiv2](https://www.exiv2.org/index.html).\n- Supports running on Linux 64bit.\n- Supports running on Windows 64bit, with Python3(64bit).\n- [Supports various metadata](https://www.exiv2.org/metadata.html)\n- [Supports various image formats](https://dev.exiv2.org/projects/exiv2/wiki/Supported_image_formats)\n- Supports Unicode characters that contained in image paths and data.\n\n## Usage\n\nread metadata :\n\n```python\n>>> from pyexiv2 import Image\n>>> i = Image(\"tests/1.jpg\")\n>>> i.read_exif()\n{'Exif.Image.DateTime': '2019:06:23 19:45:17', 'Exif.Image.Artist': 'TEST', 'Exif.Image.Rating': '4', ...}\n>>> i.read_iptc()\n{'Iptc.Envelope.CharacterSet': '\\x1b%G', 'Iptc.Application2.ObjectName': 'TEST', 'Iptc.Application2.Keywords': 'TEST', ...}\n>>> i.read_xmp()\n{'Xmp.dc.format': 'image/jpeg', 'Xmp.dc.rights': 'lang=\"x-default\" TEST', 'Xmp.dc.subject': 'TEST', ...}\n```\n\nmodify metadata :\n\n```python\n>>> # prepare the XMP data you want to modify\n>>> _dict = {\"Xmp.xmp.CreateDate\": \"2019-06-23T19:45:17.834\", # this will overwrite its original value, or add it if it doesn't exist\n... \"Xmp.xmp.Rating\": \"\"} # set an empty str explicitly to delete the datum\n>>> i.modify_xmp(_dict)\n>>>\n>>> xmp_dict = i.read_xmp() # check the result\n>>> xmp_dict[\"Xmp.xmp.CreateDate\"]\n'2019-06-23T19:45:17.834' # it has been set\n>>> xmp_dict[\"Xmp.xmp.Rating\"]\nKeyError: 'Xmp.xmp.Rating' # it has been deleted\n```\n\n- Use i.modify_exif() and i.modify_iptc() in the same way.\n\nIn short, please call the public methods of class `pyexiv2.Image` :\n\n```python\ni = Image(\"tests/1.jpg\")\n\ni.read_exif()\ni.read_iptc()\ni.read_xmp()\ni.read_raw_xmp()\ni.read_all()\n\ni.modify_exif({\"Exif.Image.ImageDescription\": \"test\",...})\ni.modify_iptc({\"Iptc.Application2.ObjectName\": \"test\",...})\ni.modify_xmp({\"Xmp.xmp.CreateDate\": \"2019-06-23T19:45:17.834\",...})\ni.modify_all({\"EXIF\":{...}, \"IPTC\":{...}, \"XMP\":{...}})\n\ni.clear_exif()\ni.clear_iptc()\ni.clear_xmp()\ni.clear_all()\n```\n\n[More Details](https://github.com/LeoHsiao1/pyexiv2/blob/master/MoreDetails.md)\n\n## Tests\n\nThere are some test cases in folder \"pyexiv2/tests\". Run them by pytest:\n\n```shell\npip install pytest psutil\npytest -v\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/LeoHsiao1/pyexiv2", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pyexiv2", "package_url": "https://pypi.org/project/pyexiv2/", "platform": "", "project_url": "https://pypi.org/project/pyexiv2/", "project_urls": { "Homepage": "https://github.com/LeoHsiao1/pyexiv2" }, "release_url": "https://pypi.org/project/pyexiv2/1.3.0/", "requires_dist": null, "requires_python": "", "summary": "Read/Write metadata of digital image, including EXIF, IPTC, XMP.", "version": "1.3.0" }, "last_serial": 5989423, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "bad65b78db5c95c8abdfd3279607ba57", "sha256": "aac5f6b657cce0f8ae3798d3f574ebc6c9f698636a55b934f74b85e6c94f0a2d" }, "downloads": -1, "filename": "pyexiv2-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bad65b78db5c95c8abdfd3279607ba57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2112208, "upload_time": "2019-07-03T11:29:11", "url": "https://files.pythonhosted.org/packages/94/e3/b1f82424183331497777760a133dd9025ee5cb7e467e02512a1f0d9346d4/pyexiv2-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f48360da5ba0f0d0b74dc7d736d75fa", "sha256": "0b492d7382e97815281a47f3ee01708723bfef282e6cf7b03350bca1a5a24448" }, "downloads": -1, "filename": "pyexiv2-1.1.0.tar.gz", "has_sig": false, "md5_digest": "0f48360da5ba0f0d0b74dc7d736d75fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2092801, "upload_time": "2019-07-03T11:29:35", "url": "https://files.pythonhosted.org/packages/2b/0e/eb47c364737313b691d8b7e89bbb314e8908145535c4cf03aac68f006b34/pyexiv2-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "ec67e9c478b05e1a23790192f1f065c2", "sha256": "e6dfaf68481005fcc32ce7c4f5fea8954cc652c068a825cf8d00959272c7d228" }, "downloads": -1, "filename": "pyexiv2-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ec67e9c478b05e1a23790192f1f065c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2118172, "upload_time": "2019-07-05T14:56:33", "url": "https://files.pythonhosted.org/packages/48/26/f836cc0f18815c8bacfb70d48d4a2a5bcdb731c492c4934293679cc727f4/pyexiv2-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "863164ec753c2d849c148cd5df2baee8", "sha256": "e99b6049449d72cece291ca250ad1bde7fc78754130643f635bbf9d1ac0bfd11" }, "downloads": -1, "filename": "pyexiv2-1.2.0.tar.gz", "has_sig": false, "md5_digest": "863164ec753c2d849c148cd5df2baee8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2099708, "upload_time": "2019-07-05T14:56:52", "url": "https://files.pythonhosted.org/packages/79/bd/628abd4e2d3b0a755e7f8449425e7b433b8adb286cfc67d83d24991d50a5/pyexiv2-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "93ab2d56716a56de9aeee4e4652f219b", "sha256": "de3270a61a8a5ddf46bfae6f379f7a6aba19a257625feaadd614729104b174a7" }, "downloads": -1, "filename": "pyexiv2-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "93ab2d56716a56de9aeee4e4652f219b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2118101, "upload_time": "2019-07-09T11:29:35", "url": "https://files.pythonhosted.org/packages/60/d3/8f6f6b4670ba79e37cd5afbee702f581a335bf383ac1d9a466c2f5a7479f/pyexiv2-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3eac53df858fdb96e634bf16e7dda83c", "sha256": "c068049a0cdccfa2e77acc41184c4d53c1675dfdfbd6bf13c419e72d9b0dc8b9" }, "downloads": -1, "filename": "pyexiv2-1.2.1.tar.gz", "has_sig": false, "md5_digest": "3eac53df858fdb96e634bf16e7dda83c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2099638, "upload_time": "2019-07-09T11:29:59", "url": "https://files.pythonhosted.org/packages/c6/fa/e3a5f74c2294cf90c808935886c659564d72dcf8c73b1294ead897d497be/pyexiv2-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "ab062e3377b88dbd2156d7465a71dce1", "sha256": "a480a2cab28a518c21d78906e27766c8845338dfc1d2c3d264b711b90a53742a" }, "downloads": -1, "filename": "pyexiv2-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ab062e3377b88dbd2156d7465a71dce1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2118677, "upload_time": "2019-08-19T14:17:57", "url": "https://files.pythonhosted.org/packages/8b/4f/768cba4a39ca04c50e838cfedb32822b543d46ef22a87683e11326faa68f/pyexiv2-1.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4e7d06c9d04586bea3a2ef61b6eec6d", "sha256": "f40e4f751d18d135ab9e45fbc70b21bd23369e4415ca81f11741ef4bb9e6edcf" }, "downloads": -1, "filename": "pyexiv2-1.2.2.tar.gz", "has_sig": false, "md5_digest": "b4e7d06c9d04586bea3a2ef61b6eec6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2099978, "upload_time": "2019-08-19T14:18:50", "url": "https://files.pythonhosted.org/packages/08/5a/91fa16a406af01cd0ac2f3030044e904d30ab35dba4c6548d3bc1d94f303/pyexiv2-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "e20c290a0145b872eb0356e98540c637", "sha256": "f8ee4145d622bd643b6477cb9430fbe5a445236989db6ca23a8835e649d1a51d" }, "downloads": -1, "filename": "pyexiv2-1.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e20c290a0145b872eb0356e98540c637", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2129348, "upload_time": "2019-09-20T15:26:49", "url": "https://files.pythonhosted.org/packages/31/b8/b8036187e36a74223a0da00f285941b0e0be4f2a4226fd009702b5a3d804/pyexiv2-1.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a5aae8f99e643cf36f4b49a93def398c", "sha256": "3b59308f81de0c1ea7fd1736a7ba595b137b2cac258b25a0d5dc3b0ee40a51f4" }, "downloads": -1, "filename": "pyexiv2-1.2.3.tar.gz", "has_sig": false, "md5_digest": "a5aae8f99e643cf36f4b49a93def398c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2108890, "upload_time": "2019-09-20T15:27:14", "url": "https://files.pythonhosted.org/packages/e9/38/53de9de3321be2a3c5cccef37c085bb2e735f55ebd5dfa8e4215be6c55e0/pyexiv2-1.2.3.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "4e9098f26501db8da2c2b63d6f2ed691", "sha256": "4cf6b97ff6d9be139b860be5f2ac9b70ff0d35fc182076d7ce5ce1722759bc90" }, "downloads": -1, "filename": "pyexiv2-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4e9098f26501db8da2c2b63d6f2ed691", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2132246, "upload_time": "2019-10-16T17:54:34", "url": "https://files.pythonhosted.org/packages/6d/00/972e0d36d1481a5afefadafd202a61b62e5e648d0679467be93196e85993/pyexiv2-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7dfe3a55e473de976e750c1e16339dbc", "sha256": "e6acb21ea64152be6abea2b01cd4c61a4784df9bd50e6c728499c9f76ca40d31" }, "downloads": -1, "filename": "pyexiv2-1.3.0.tar.gz", "has_sig": false, "md5_digest": "7dfe3a55e473de976e750c1e16339dbc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2110205, "upload_time": "2019-10-16T17:54:37", "url": "https://files.pythonhosted.org/packages/c4/f0/acd45defbb3dd1147f47837ce06f27b3d7978a3fc47d24556cf630bbccd0/pyexiv2-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4e9098f26501db8da2c2b63d6f2ed691", "sha256": "4cf6b97ff6d9be139b860be5f2ac9b70ff0d35fc182076d7ce5ce1722759bc90" }, "downloads": -1, "filename": "pyexiv2-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4e9098f26501db8da2c2b63d6f2ed691", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2132246, "upload_time": "2019-10-16T17:54:34", "url": "https://files.pythonhosted.org/packages/6d/00/972e0d36d1481a5afefadafd202a61b62e5e648d0679467be93196e85993/pyexiv2-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7dfe3a55e473de976e750c1e16339dbc", "sha256": "e6acb21ea64152be6abea2b01cd4c61a4784df9bd50e6c728499c9f76ca40d31" }, "downloads": -1, "filename": "pyexiv2-1.3.0.tar.gz", "has_sig": false, "md5_digest": "7dfe3a55e473de976e750c1e16339dbc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2110205, "upload_time": "2019-10-16T17:54:37", "url": "https://files.pythonhosted.org/packages/c4/f0/acd45defbb3dd1147f47837ce06f27b3d7978a3fc47d24556cf630bbccd0/pyexiv2-1.3.0.tar.gz" } ] }