-------------------------------------------------------------------------------- FotoPreProcessor, a PyQT4-based program to manage (EXIF) metadata of images -------------------------------------------------------------------------------- Copyright (C) 2012-2017 Frank Abelbeck <frank.abelbeck@googlemail.com> This file is part of the FotoPreProcessor program "FotoPreProcessor.py". 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 3 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, see <http://www.gnu.org/licenses/>. Following files are also subject to this license although not explicitly marked: i18n/FotoPreProcessor.de.qm i18n/FotoPreProcessor.de.ts -------------------------------------------------------------------------------- General information -------------------------------------------------------------------------------- Author: Frank Abelbeck Version: 2017-07-14 Licence: GNU General Public License version 3 -------------------------------------------------------------------------------- Disclaimer -------------------------------------------------------------------------------- I created this program because I needed a frontend for exiftool. Existing solutions did not satisfy my needs. FotoPreProcessor is distributed in the hope that it will help other people with similar problems. In the end --after you have approved exiftool execution-- this program will alter your images! So please be cautious! I seek perfection, but I cannot verify the program's behaviour due to the overwhelming number of possible platform configurations. Having a (preferably read-only) backup of your raw footage is generally a good idea before starting to process your images. -------------------------------------------------------------------------------- Description -------------------------------------------------------------------------------- This program displays images found in a directory and allows metadata editing. Orientation: Modify the EXIF tag, no image data will be altered. GeoTagging: Set latitude, longitude, elevation; it is also possible to use OpenStreetMap for Geo browsing. Timezone Correction: Shift timestamp from camera timezone to local time. My camera is set to UTC, so I only need to know where a foto was taken to get the correct time -- without DST confusion. A UTC timestamp will be written to the GPS timestamp, regardless of any GeoTagging. Keywords: Assign/modify keywords/tags. Every keyword will be stored in a UTF-8 text file and will be used for word completion. This shall assure that one uses a uniform set of keywords. Copyright Notice: Modify the image's copyright tag. I don't mind if other people use images I took+published. Publish is the magic word, because in that case I want other people to see it. But at least I want to be mentioned as creator. Filename: When the changes are applied, the filename is set to YYYYMMDD-HHMMSS[-i]-CameraModel.EXT Local time is used, and an optional index i is added if images have the same timestamp. After editing, the user can choose to apply the changes that were made. The program will present the exiftool commands that will be neccessary, so that the user is able to abort the process. The user is also able to store the changes in a YAML file for later application. -------------------------------------------------------------------------------- Requirements -------------------------------------------------------------------------------- Which programs and libraries are needed? (In parantheses: Gentoo Linux versions this program was created/tested with) Python (3.4.5) pytz (2017.2) exiftool (10.50) PyQt5 (5.7.1) -------------------------------------------------------------------------------- Installation (Deprecated, Program Tarballs are not Updated Anymore!) -------------------------------------------------------------------------------- Extract the archive FotoPreProcessor.tar.gz to a directory accessible/writable by your user, e.g. to ~/programs: mkdir -p ~/programs tar -xvzf FotoPreProcessor.tar.gz -C ~/programs A directory "FotoPreProcessor" will be created, e.g. ~/programs/FotoPreProcessor Inside this directory there will be an executable named FotoPreProcessor.py. This initial version is not designed to integrate into the LSB and expects both exiftool and file to reside in the directory /usr/bin. I will add an appropriate installation routine and a settings dialog in the future... -------------------------------------------------------------------------------- Files -------------------------------------------------------------------------------- FotoPreProcessor.py main program FotoPreProcessorItem.py custom PyQt5.QtGui.QListWidgetItem FotoPreProcessorOSM.html custom OpenStreetMap webpage FotoPreProcessorTools.py classes for GeoTagging, timezone correction etc. FotoPreProcessorWidgets.py custom widgets: docks and dialogs FotoPreProcessor.exiftool definition of a special FPPModel tag for exiftool Makefile Makefile for translation tasks i18n/FotoPreProcessor.de.qm binary translation information i18n/FotoPreProcessor.de.ts translation source file icons/FPP.png FotoPreProcessor application item icons/Marker2.png icon "marker" to mark a location icons/changed.png icon "wrench" to mark changed images icons/unknownPicture2.png icon "unknown picture" COPYING GPL v3 license text README (this file) zone.tab time zone info (local copy of timezone-data) -------------------------------------------------------------------------------- Known Bugs due to Qt5 Porting -------------------------------------------------------------------------------- - shortcuts "k" (add keyword) and "m" (look-up map location) don't work anymore - map marker is not shown since using QtWebKitWidgets.QWebView (PyQt5) -------------------------------------------------------------------------------- Changelog -------------------------------------------------------------------------------- 2012-08-10: initial release as "works for me" version 2012-08-22: introduction of an icon for FPP, improved command line parsing, implementation of the settings dialog, usage of QSettings for configuration parameters and databases, handling of initial configuration, handling of wrong program paths (disabling features if neccessary) implementation of about dialogs, improved image import algorithm, improved event handling and dialog response during import/export, local zoneinfo table as fallback (removes zoneinfo dependency), elimination of quirks/bugs 2012-10-18: bugfixes (icon size preferences are correctly applied; slashes in camera name string are ignored during renaming), improvements (flickering during image list update got reduced; if a dock gets disabled while selecting multiple images it stays disabled until the selection is reset) 2015-06-29: incorporation of many small fixes, update to Python3, new search option for the geolocator, update of README and zone.tab, removal of tarball creation commands inside Makefile, transition to GitHub 2015-07-01: further Python3 porting, improvement of arg handling, updated translation 2015-10-25: some fixes; changes can now be saved/loaded for delayed application, upgrade to new signal/slot mechanism, file naming is now configurable 2015-10-26: flexible file naming activated, minor fixes 2015-11-01: fixed preview image auto-rotation behaviour to avoid applying a picture's orientation twice; program termination dialog: user can now return to the program 2015-11-04: fixed orientation bug (prevents exiftoll execution due to an incorrect value, remnant of the preview fix 2015-11-01; fixed preview behaviour: program now checks if a preview image is displayed correctly by comparing dimensions before and after loading 2017-07-14: ported to Qt5 in spring 2017 and fixed some porting issues; optimised variable initialisation code (e.g. str() --> "", dict() --> {}); FPP now saves the original file's MD5 sum in the EXIF tag "ImageUniqueID"; fixed loading progress bar (now shows the correct progress value even if non-image files are processed (and ignored) by exiftool
britton-clapp/FotoPreProcessor
FotoPreProcessor (FPP) is a PyQt4-based frontend for exiftool and allows to graphically edit the (EXIF) metadata of all images in a directory.
PythonGPL-3.0