Created
January 19, 2021 01:54
-
-
Save asdkant/9f9c564e938a0a480f8d193e57e67276 to your computer and use it in GitHub Desktop.
add timestamp to RAW filenames (and XMP sidecars if present)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
import sys | |
import pyexiv2 | |
import os | |
# print(sys.argv) | |
if sys.argv[1] == "-d": | |
files = sys.argv[2:] | |
realrun = False | |
else: | |
files = sys.argv[1:] | |
realrun = True | |
#print(files) | |
for f in files: | |
try: | |
md = pyexiv2.metadata.ImageMetadata(f) | |
md.read() | |
filedate = md.__getitem__('Exif.Photo.DateTimeOriginal').value.strftime("%Y-%m-%d-%H:%M:%S") | |
# print(filedate) | |
except: | |
files.remove(f) | |
indent = max(list(map(lambda i: len(i),files)))+4 | |
#print(files) | |
skipped = [] | |
for raw in files: | |
md = pyexiv2.metadata.ImageMetadata(raw) | |
md.read() | |
filedate = md.__getitem__('Exif.Photo.DateTimeOriginal').value.strftime("%Y-%m-%d-%H:%M:%S") | |
raw_new = filedate+"--"+raw | |
xmp = raw + ".xmp" | |
xmp_new = filedate+"--"+xmp | |
xmp_exists = os.path.isfile(xmp) | |
xmp_new_exists = os.path.isfile(xmp_new) | |
raw_new_exists = os.path.isfile(raw_new) | |
if raw_new_exists: | |
skipped.append(raw + " (new RAW name existed)") | |
if xmp_exists: | |
skipped.append(xmp + " (new RAW name existed)") | |
continue | |
# rename raw | |
try: | |
if realrun: | |
os.rename(raw,raw_new) | |
print(raw.ljust(indent)+" -> "+raw_new) | |
except: | |
skipped.append(raw + " (RAW rename error)") | |
if xmp_exists: | |
skipped.append(xmp + " (RAW rename error)") | |
continue | |
# if new xmp filename exists, backup | |
if xmp_new_exists and realrun: | |
os.rename(xmp_new,xmp_new+".bkp") | |
# if xmp_exists rename xmp | |
if xmp_exists: | |
try: | |
if realrun: | |
os.rename(xmp,xmp_new) | |
print(xmp.ljust(indent)+" -> "+xmp_new) | |
except: | |
skipped.append(xmp + " (XMP rename error)") | |
################################################################ | |
if skipped != []: | |
print() | |
print("----------------------------------------------------------------") | |
print("These were skipped for one reason or another:") | |
print() | |
for i in skipped: | |
print(i) | |
print() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment