Bonjour,
J'ai jamais eu l'occasion d'aidé quelqu'un sur le forum ubuntu-fr,
alors je profite pour posté un script qui peut aider.
Même si l'utilité du script peut être limité, j'utilise une connexion dans une base de donné SQLite3, et j'utilise exiftool pour tagé des photos, Alors sa peut etre utiles de comprendre le principe du script, pour celui qui souhaite apprendre a faire du script python.
But du script:
J'utilise Shotwell depuis quelques jours mais j'ai remarqué que les photos tagué avec Shotwell sont tagué que sur Shotwell.
Donc le script utilise la base de donnée Shotwell pour tagué les photos dans ses tag exifs.
Préalable
Il faut au préalable avoir installé [apt]libimage-exiftool-perl[/apt]
Script
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3
import commands
# Connexion avec la base de données de shotwell
connexion = sqlite3.connect("/home/maarek/.shotwell/data/photo.db")
connexion.row_factory = sqlite3.Row
cursor = connexion.cursor()
# On associe les IDs et les photos dans un dictionnaire
cursor.execute("SELECT id , filename FROM PhotoTable")
dico = {}
for row in cursor:
dico["%i"%(row["id"])] = row["filename"]
# On récupère les tags et les photos tagé
cursor.execute("SELECT name , photo_id_list FROM TagTable")
for row in cursor:
#row["name"] <=> Nom du tag
#row["photo_id_list"] <=> Liste des Ids de photo contenant le tag row["name"]
tag = row["name"]
print tag
for file in row["photo_id_list"].split(","):
# On parcours la liste des Ids
if dico.has_key(file) and dico[file].find(u"é") == dico[file].find(u"è"): # Si l'Id existe dans le dico et que le nom ne comporte pas d'accent
s=u'exiftool -overwrite_original -Subject+="%s" -Keywords+="%s" "%s"'%(tag,tag,dico[file]) # On prepare le tagage de la photo
print "{0} : {1}".format(tag,dico[file]) # On informe de l'avancement
u=commands.getoutput(s) #On tag la photo
# On deconnecte la base de données
connexion.close()
Améliorations
Si quelqu'un souhaite amélioré le script c'est avec plaisir.
Ce qu'il serais bien d'améliorer, c'est d'utiliser un module python pour accéder aux données exifs des images, et ne plus utiliser une commande shell.
Faire en sorte que les photos ne soit pas taguées plusieurs fois avec les mêmes tags.