Ok, desde que eu não modifiquei as fotos em Shotwell, estou bem com este pequeno roteiro:
from pysqlite2 import dbapi2 as sqlite
import os
import shutil
targetdirectory = "/home/dan/pictures new/"
db = sqlite.connect('photo.db')
cur = db.cursor()
cur.execute('SELECT strftime("%Y_%m", datetime(PhotoTable.timestamp, "unixepoch")) ||" "|| EventTable.name, PhotoTable.filename FROM PhotoTable LEFT JOIN EventTable ON PhotoTable.event_id = EventTable.id')
for row in cur:
dir = os.path.dirname(targetdirectory + str(row[0]) +"/")
if not os.path.exists(dir):
os.makedirs(dir)
try:
if os.path.exists(str(row[1])) and not os.path.exists(targetdirectory + str(row[0]) + "/" + os.path.basename(str(row[1]))):
shutil.copyfile(row[1], targetdirectory + str(row[0]) + "/" + os.path.basename(row[1]))
except UnicodeEncodeError:
print "Error: " + str(row[0])
Eu acho que é muito importante ter a opção de mudar para outra ferramenta se você quiser:)