Outils pour utilisateurs

Outils du site


Panneau latéral

Navigation

Activitée via diasp.eu

Offrez moi un café ou une bière

divers:shotwell_usb_syncroniser

Shotwell usb syncroniser

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).

Installation

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.

Principe de fonctionnement

Le script lit la base sqlite de shotwell et copie les fichiers qui manque sur la clef usb.

Problèmes et solutions

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”)
divers/shotwell_usb_syncroniser.txt · Dernière modification: 09/04/2012 13:32 par jonas