shotwell migrate to xmp for digikam import
This commit is contained in:
parent
1080a4ee3a
commit
8f7fff43e5
|
@ -0,0 +1,34 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
import os
|
||||
import sqlite3
|
||||
|
||||
shotwell = sqlite3.connect(os.getenv('HOME', '.') + '/.local/share/shotwell/data/photo.db')
|
||||
shotwell.row_factory = sqlite3.Row
|
||||
|
||||
for c in shotwell.execute('SELECT id, rating, filename FROM PhotoTable p'):
|
||||
report = "thumb%0.16x\t" % c['id']
|
||||
report += "%d\t%d\t" % ( c['id'], c['rating'] )
|
||||
tags = [t['name'] for t in [tag for tag in shotwell.execute('SELECT name FROM TagTable WHERE photo_id_list LIKE ?', ('%%thumb%0.16x%%' % c['id'], ))]]
|
||||
report += ",".join(tags)
|
||||
report += "\t%s" % c['filename']
|
||||
if len(tags) > 0:
|
||||
#print(report)
|
||||
# create exiv2 cmp file
|
||||
cmd_file = c['filename'] + '.cmd'
|
||||
f = open(cmd_file, "a")
|
||||
for t in tags:
|
||||
print("set Xmp.dc.subject XmpBag %s" % (t), file = f)
|
||||
print("set Xmp.digiKam.TagsList %s" % (t), file = f)
|
||||
f.close()
|
||||
# create xmp sidecar
|
||||
command = u'''exiv2 -eX -m "%s" "%s"''' % (cmd_file, c['filename'])
|
||||
print(command)
|
||||
good_sidecar = c['filename'] + '.xmp'
|
||||
bad_sidecar = c['filename'][:-4] + '.xmp'
|
||||
ret = os.system(command.encode('utf-8'))
|
||||
if ret != 0:
|
||||
print("warning: exiv command return %d, ran: %s" % (ret, command))
|
||||
else:
|
||||
os.rename(bad_sidecar, good_sidecar)
|
||||
os.remove(cmd_file)
|
Loading…
Reference in New Issue