Sortowanie zdjęć po czasie

  2012-02-19 21:00:00

Mały błąd na etapie przygotowań zdjęć do zrobienia timelapse spowodował, że z ładnie posortowanych zdjęć otrzymałem zbiór kilku tysięcy losowo ułożonych fotek. Niestety była to moja jedyna kopia tych zdjęć.

Na szczęście zachowały się w nich tagi EXIF, a w nich dokładny czas zrobienia zdjęcia.

Pewnie istnieje jakiś gotowy program do takich celów ale niespecjalnie chciało mi się go szukać. Wystarczyło 19 linijek Pythona (pewnie dałoby się krócej :)).

Może się komuś przyda:

import pyexiv2,os,time,datetime,shutil

def getImageDate(imgfile):
    meta = pyexiv2.ImageMetadata(imgfile)
    meta.read()
    t = time.strptime(meta['Exif.Photo.DateTimeOriginal'].raw_value, "%Y:%m:%d %H:%M:%S")
    return datetime.datetime(t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec)

map = {}
for img in os.listdir('.'):
    map[img] = getImageDate(img)

files = map.keys()
filesSorted = sorted(files, key=map.__getitem__)

for num, name in enumerate(filesSorted, start=1):
    shutil.move(name, "sorted%04d.jpg" % (num))

Skomentuj....