#!/usr/bin/python3 import sys import piexif as x import datetime as dt offset = '+02:00' print('Override offset with', offset) if len(sys.argv) <= 1: print(sys.argv[0], 'img1.jpg img2.jpg') quit() def codesOfLabelsContaining(value: str): codes = [] for (k, v) in x.TAGS['Exif'].items(): if value in v['name']: codes.append(k) return codes timeCodes = codesOfLabelsContaining('Time') offsetCodes = codesOfLabelsContaining('OffsetTime') filenames = sys.argv[1:] def describeExif(exif): for k in timeCodes: if k in exif.keys(): print('Exif[', k, ']=', exif[k], '->', x.TAGS['Exif'][k]['name']) else: print('Exif[', k, ']=', '?', '->', x.TAGS['Exif'][k]['name']) def overrideOffset(exifDict): e = exifDict['Exif'] offsetBytes = offset.encode() for k in offsetCodes: print('Exif[', k, ']=', e[k], '->', offsetBytes, ':', x.TAGS['Exif'][k]['name']) e[k] = offsetBytes return exifDict for filename in filenames: print(filename) exifDict = x.load(filename) describeExif(exifDict['Exif']) exifDict = overrideOffset(exifDict) describeExif(exifDict['Exif']) exifBytes = x.dump(exifDict) x.insert(exifBytes, filename) print()