Python wrapper for exiftool
Project description
PyExifTool is a Python library to communicate with an instance of Phil Harvey’s excellent ExifTool command-line application. The library provides the class exiftool.ExifTool that runs the command-line tool in batch mode and features methods to send commands to that program, including methods to extract meta-information from one or more image files. Since exiftool is run in batch mode, only a single instance needs to be launched and can be reused for many queries. This is much more efficient than launching a separate process for every single query.
Example Usage
Simple example:
import exiftool files = ["a.jpg", "b.png", "c.tif"] with exiftool.ExifToolHelper() as et: metadata = et.get_metadata(files) for d in metadata: print("{:20.20} {:20.20}".format(d["SourceFile"], d["EXIF:DateTimeOriginal"]))
Getting PyExifTool
PyPI
Easiest: Install a version from the official PyExifTool PyPI
python -m pip install -U pyexiftool
From Source
The source code can be checked out from the github repository with
git clone git://github.com/sylikc/pyexiftool.git
Alternatively, you can download a tarball.
Run
python setup.py install [--user|--prefix=<installation-prefix]
to automatically install this module from source.
PyExifTool Dependencies
Python
PyExifTool runs on Python 3.6+. (If you need Python 2.6 support, please use version v0.4.x). PyExifTool has been tested on Windows and Linux, and probably also runs on other Unix-like platforms.
Phil Harvey’s exiftool
For PyExifTool to function, exiftool command-line tool must exist on the system. If exiftool is not on the PATH, you can specify the full pathname to it by using ExifTool(executable=<full path>).
PyExifTool requires a minimum version of 12.15 (which was the first production version of exiftool featuring the options to allow exit status checks used in conjuction with -echo3 and -echo4 parameters).
To check your exiftool version:
exiftool -ver
Windows/Mac
Windows/Mac users can download the latest version of exiftool:
https://exiftool.org
Linux
Most current Linux distributions have a package which will install exiftool. Unfortunately, some do not have the minimum required version, in which case you will have to build from source.
Ubuntu
sudo apt install libimage-exiftool-perl
CentOS/RHEL
yum install perl-Image-ExifTool
Documentation
The documentation is available at sylikc.github.io. It is slightly outdated at the moment but will be improved as the project moves forward
http://sylikc.github.io/pyexiftool/
Package Structure
PyExifTool consists of a few modules, each with increasingly more features.
The base ExifTool class is the most rudimentary, and each successive class inherits and adds functionality.
ExifTool is the base class with functionality which will not likely change. It contains the core features with no extra fluff. The API is considered stable and should not change much with new versions.
ExifToolHelper adds the most commonly used functionality. It overloads some functions to turn common errors into warnings or makes checks to make ExifTool easier to use. More methods may be added or slight tweaks may come with new versions.
ExifToolAlpha includes some of the community functionality that contributors added for edge use cases. It is not up to the rigorous testing standard of both ExifTool or ExifToolHelper. There may be old or defunct code at any time. This is the least polished of the classes and functionality/API may be changed/added/removed at any time.
Brief History
PyExifTool was originally developed by Sven Marnach in 2012 to answer a stackoverflow question Call exiftool from a python script?. Over time, Sven refined the code, added tests, documentation, and a slew of improvements. While PyExifTool gained popularity, Sven never intended to maintain it as an active project. The original repository was last updated in 2014.
In early 2019, Martin Čarnogurský created a PyPI release from the 2014 code. Coincidentally in mid 2019, Kevin M (sylikc) forked the original repository and started merging PR and issues which were reported on Sven’s issues/PR page.
In late 2019 and early 2020 there was a discussion started to Provide visibility for an active fork. There was a conversation to transfer ownership of the original repository, have a coordinated plan to communicate to PyExifTool users, amongst other things, but it never materialized.
Kevin M (sylikc) made the first release to PyPI repository in early 2021. At the same time, discussions were starting revolving around Deprecating Python 2.x compatibility and refactoring the code and classes.
The latest version is the result of all of those discussions, designs, and development. Special thanks to the community contributions, especially Jan Philip Göpfert, Seth P, and Kolen Cheung.
Licence
PyExifTool 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 3 of the licence, or (at your option) any later version, or the BSD licence.
PyExifTool 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 LICENSE for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file PyExifTool-0.5.0.tar.gz
.
File metadata
- Download URL: PyExifTool-0.5.0.tar.gz
- Upload date:
- Size: 37.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.6 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbffc3ba9284a001650c02f02242fd58a29b16502ac833af6aa9034a93902945 |
|
MD5 | 4d42e5ef3088b75e155440c2ebd86c13 |
|
BLAKE2b-256 | ef1bdafceccf94b844390ef34552bdf91e7a3b47b8d890352a3acf0c75eb20af |
File details
Details for the file PyExifTool-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: PyExifTool-0.5.0-py3-none-any.whl
- Upload date:
- Size: 41.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.6 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94391e941ec66e87a34d4c3993469489d6c30c905381d19365ae5d93dcdb6b45 |
|
MD5 | 596c33282924abbe1e1e4ccd1980faa9 |
|
BLAKE2b-256 | f23a43254fb4a2838814786920ab0443764ae85150e51d4c68b260f868ac322d |