[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