Humus numericus

Aller au contenu | Aller au menu | Aller à la recherche

R, Spip et autres

Script shell de transfert de photos

Pas sûr que ça en vaille la peine, mais je me permets quand même de mettre en ligne le petit script bash que j'utilise pour transférer les photos depuis mon appareil numérique vers mon PC. Le script en question part du principe que l'appareil est reconnu comme un périphérique de stockage de masse USB et qu'il est automatiquement monté au point de montage indiqué par la variable mount_point. Il faut également renseigner les variable source_dir (chemin vers le répertoire dans lequel se trouve les photos à partir du point de montage) et cible_dir (emplacement des photos sur le PC). Vous aurez également besoin du paquet libjpeg-progs pour avoir la commande exifautotran.

Une fois que vous avez tout ça, vous aurez juste à brancher votre appareil et à lancer le script. Celui-ci s'occupera de monter le périphérique, de copier chaque image dans un répertoire nommé selon la date de prise de la photo (au format /home/photos/2007/12 par exemple) et d'effectuer une rotation en fonction de l'orientation horizontale ou verticale contenue dans les données EXIF.

#!/bin/sh                                                           
                                                                    
mount_point=/mnt/photo
source_dir=dcim/100km028 
cible_dir=/home/photos

mount $mount_point
for i in $mount_point/$source_dir/*.jpg; do  
        img=`basename $i`
        annee=`stat -c %y $i | cut -d '-' -f 1`
        mois=`stat -c %y $i | cut -d '-' -f 2`
        cible=$cible_dir/$annee/$mois
        if [ ! -d $cible ];
        then
                mkdir -p $cible
        fi      
        echo "Copie de $i vers $cible/$img"
        cp -i $i $cible/$img
        exifautotran $cible/$img
done;   
sleep 2s
umount $mount_point

Comme d'hab en ces lieux, vous constaterez que c'est du vite fait !

Commentaires

1. Le jeudi 9 juillet 2009, 08:34 par danc

Merci pour exifautotran, je ne connaissais pas !

une petite variante avec imagemagick pour lire la date des donnees exif :

dateTime=`identify -verbose $i | grep DateTimeOriginal | awk '{print $2}'`

an=`echo $dateTime | awk -F':' '{print $1}'`
moisjour=`echo $dateTime | awk -F':' '{print $1$2$3}'`

Sinon, en plaçant ce script directement sur le support USB, et en le nommant autorun.sh, il peut être lancé automatiquement au montage du support !

au revoir !