[Digikam-users] Re: Tags resurrection.
Peter Shute
pshute at nuw.org.au
Thu Jan 20 23:48:03 GMT 2011
But did you work out how it happened? That information, and your good work below could be very useful to a few people.
> -----Original Message-----
> From: vlapekng at vpek.info [mailto:vlapekng at vpek.info]
> Sent: Saturday, 8 January 2011 6:17 AM
> To: digikam-users at kde.org
> Subject: [Digikam-users] Tags resurrection.
>
> Hi,
> Last time I clean-up my home folder and after starting
> Digikam my albums
> disappear. Five years of tagging, heeeee ???!!! (Not so bad.
> Of course I
> have backup. But it is to simple to restore it. Better is
> find the way how
> to rescue something - remember: .... "because linux IS the game" )
> When I recreate albums all tags assigned to photos went (of course).
>
> Non programmers skip this section.
> So After closer look, in Digikam database all images was
> twice. Old images
> without filled album, but asserted tags and 'new' images with
> filled album
> column but without tags assigned. So I was happy, quite no problem.
>
> For lamas:
> This script assign old tags if the image file name remain,
> but folder/album
> change.
> 0, All tags went.
> 1, Create new collections (in Digikam) from the "new/old"
> image directory.
> Digikam database must remain !
> 3, Run script (it is in python). Or manualy run SQL in sqlitebrowser.
>
> Issues:
> Duplicate image names: tags are added from all 'old' images
> with the same
> name. (It is better to have some twice, that miss something, so?)
>
>
> Script ( also on http://pastebin.com/UcrL8ydu )
> #--------------- Cut here ----------------------
> #!/usr/bin/env python
>
> import sqlite3
>
> # go create digikam database backup before continue !!!
>
> #fill full path to digikam database
> conn = sqlite3.connect('/home/.../Pictures/digikam4.db')
>
> c = conn.cursor()
> for rate in [0,1,2,3,4,5]:
> print("Assign rate {0}/5".format(rate))
> c.execute("""
> UPDATE ImageInformation set rating = {0}
> WHERE imageid is not -1 and imageid in (
> SELECT i1.id AS new_imageid
> FROM Images i1,
> Images i2,
> Albums a,
> ImageInformation ii2
> WHERE a.id = i1.album AND
> i1.name=i2.name AND
> NOT (i1.id=i2.id) AND
> ii2.imageid = i2.id AND
> ii2.rating = {0}
> )""".format(rate))
> conn.commit()
>
> print("Assign old tags")
> c.execute(""" INSERT into ImageTags
> SELECT DISTINCT i1.id AS imageid, it.tagid AS tagid
> FROM Images i1,
> Images i2,
> Albums a,
> ImageTags it
> WHERE a.id = i1.album AND
> i1.name=i2.name AND
> NOT (i1.id=i2.id) AND
> it.imageid = i2.id
> ORDER BY imageid,tagid
> """)
> conn.commit()
>
>
> c.close()
> conn.close()
> #--------------- Cut here ----------------------
>
>
> _______________________________________________
> Digikam-users mailing list
> Digikam-users at kde.org
> https://mail.kde.org/mailman/listinfo/digikam-users
>
More information about the Digikam-users
mailing list