A la maison nous avons un cadre photos avec prise usb. Cette utilitaire permet de syncroniser l'ensemble de la biblioteque shotwell (version GNU/Linux) sur une clef usb.
L'utilitaire se voulant très accessible il dispose d'une interface graphique avec barre de progression (en wxWidget).
Installez python-sqlite3, python-wx
Sur la clef usb créez un fichier autorun
- autorun
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sqlite3, os, shutil, wx
exportPath = './'
sqlitePath=os.path.join(os.path.expanduser('~'), '.shotwell', 'data','photo.db')
conn = sqlite3.connect(sqlitePath)
c = conn.cursor()
c.execute('select count(*) from PhotoTable')
nbfile = c.fetchone()[0]
c.execute('select filename from PhotoTable')
ifile = 0
app = wx.PySimpleApp()
dlg = wx.MessageDialog(parent=None,message="Veux-tu syncroniser les %i photos avec la clef usb ?"%nbfile,style=wx.YES_NO|wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()
if result != wx.ID_YES :
exit()
dlg = wx.ProgressDialog(title="Syncronisation de la clef usb", message=" En cours ... ", maximum=nbfile)
for row in c:
ifile += 1
srcfile = row[0]
destfile = exportPath+srcfile
destdir = os.path.dirname(destfile)
if os.path.exists(destfile) :
msg = "%i/%i %s est deja sur la clef"%(ifile,nbfile,destfile)
else :
if os.path.exists(srcfile) :
if not os.path.exists(destdir) :
os.makedirs(destdir)
shutil.copy("%s"%srcfile,"%s"%destfile)
msg = "%i/%i: %s copier"%(ifile,nbfile,destfile)
else :
msg = "%i/%i: %s n'existe pas"%(ifile,nbfile,destfile)
dlg.Update(ifile,msg)
dlg.Destroy()
dlg=wx.MessageDialog(parent=None,message="Tu peux maintenant éjecter (bouton droit sur l'icone de la clef dans le bureau) puis débrancher la clef usb.",style=wx.OK|wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
Ce fichier se lancera automatiquement au branchement de la clef usb.
Le script lit la base sqlite de shotwell et copie les fichiers qui manque sur la clef usb.
Nautilus affiche une erreur ”Impossible de trouver le programme de lancement automatique”
Le périphiériques doivt être monter avec l'option exec (faire une recherche avec “option exec fstab”)