Développement web

GCweb
Interface web permettant de mettre en ligne des collections GCstar.

Plugin Dotclear
Extensions pour ce moteur de blog.

Outils pour webmaster

Divers

Archives

Petites applications

Divers

  • CoverLink
    Créer des liens “cover.jpg” reconnu par la plupart des lecteur dans votre collection musical.
  • Envoie ftp
    Envoyer sur un ftp et insérer facilement vos images dans un forum.

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:%i par jonas
 
Creative Commons License Valid XHTML 1.0 Valid CSS Powered by PHP Driven by DokuWiki Driven by DokuWiki