Skip to content

Instantly share code, notes, and snippets.

@ldotlopez
Created April 11, 2013 15:30
Show Gist options
  • Save ldotlopez/5364351 to your computer and use it in GitHub Desktop.
Save ldotlopez/5364351 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import os
import sys
import argparse
import datetime
from pyexiv2 import ImageMetadata
class MetadataFailed(Exception): pass
def get_image_metadata_pyexiv2(f):
meta = ImageMetadata(f)
meta.read()
d = meta.get('Exif.Photo.DateTimeDigitized') or meta.get('Exif.Photo.DateTimeOriginal')
if not d:
raise MetadataFailed("Invalid date for %s" % f)
return d.value
def rename_file(f, delta = None):
try:
d = get_image_metadata_pyexiv2(f)
except MetadataFailed as e:
print "Unable to find metadata for %s" % s
return
except Exception as e:
print "Error for %s: %s" % (f, e)
return
if delta and (d.hour < delta):
d = d - datetime.timedelta(days = 1)
folder = os.path.join(os.path.dirname(f), d.strftime('%Y-%02m-%02d'))
dest = os.path.join(folder, os.path.basename(f))
if not os.path.isdir(folder):
os.mkdir(folder)
os.rename(f, dest)
if __name__ == '__main__':
for f in sys.argv[1:]:
rename_file(f, delta = 8)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment