màj : Transfert automatique de son appareil photo

Créé le : 24 mai 20121 Commentaire
Catégorie: Ubuntu
Mise à jour : 12 mars 2015

màj : Transfert automatique de son appareil photo

On va créer un petit script pour transférer automatiquement ses photos de son appareil vers un dossier.

Avant ce script il fallait que je mette la carte mémoire dans l’ordinateur, que je navigue dans les sous dossiers, que je fasse une selection de mes photos, un couper, que j’aille dans mon dossier Image puis dans ses sous-dossiers, que je créé un nouveau dossier bien nommé avec la date et tout et tout. Ensuite aller dans ce sous dossier coller les images (et je ne parle pas des images en .JPG et non .jpg…..GRRRR)

Maintenant il suffit de mettre ma carte mémoire dans l’ordinateur et avec un clic de souris le tour est joué

 

1° Création du script de transfert

Le script scanne tout les fichiers se trouvant dans le repertoire source ainsi que dans ses sous dossiers et créé un dossier dans Image/-== Année ==-/DateDescription . Vous pouvez bien sûr adapter ce script

Créer un fichier vide nommé transfert_photos.sh sur le Bureau et entrer le code suivant


#!/bin/sh
#############################################################################
#                                                                           #
#Script d'import automatique de l'appareil photo vers le dossier image      #
#                                                                           #
#############################################################################
#auteur : Cyberscooty sur Ubuntu 12.04 et pour Sony Cyber-shot DSC-HX20V
#
#
#
#
#Version 1.0 le 24 mai 2012
#            * script original
#Version 1.1 le 26 mai 2012
#            * ajout : prise en compte du repertoire des vidéos
#            * ajout : suppression de tout le repertoire vidéos quand les vidéos ont été copié
#                      (car si on supprime juste les vidéos l'index est conservé)
#            * ajout : ajout du -p pour la commande cp pour préserver attributs (date création, mode,ownership,time‐stamps)
#            * ajout : message en fin de transfert
#            * ajout : cette liste de version dans le script
#Version 1.2 le 28 mai 2012
#            * modif : possibilité de créer des commentaires avec prise en compte des espaces
#                      (il suffit de mettre "$courte_description" au lieu de $courte_description)
#            * modif : plus qu'une source au lieu de 2 (photos et videos)
#            * modif : suppression de tous les fichiers de la source (l'appareil photo recréé un index propre à chaque fois)
#                      (utlisation de -rf pour suppression recursive et sans prompt)
#Version 1.3 le 26 sept 2012
#            * ajout : démontage du disque pour que ce soit + propre
#Version 2.0 le 08 oct 2012
#            * plus de mode terminal
#            * demande description en mode graphique
#            * démontage propre de l'appareil photo (évite les erreurs lors de la recréation de l'index)
#            * ajout : barre de progression style --pulsate
#Version 2.1 le 09 oct 2012
#            * modif : amélioration barre de progression avec avancement selon nb de fichiers
#            * ajout : sources à la fin du script. Il y en avait trop pour mettre au début, 🙂
#Version 2.2 le 10 déc 2012
#            * ajout : montage de l'appareil photo au début du script
#Version 2.3 le 03 mars 2013
#            * ajout : verification de la présence de l'appareil photo. sinon = message d'erreur

#==================Variables==================
#Pour trouver le dev à démonter aller dans /dev/disk/by-uuid et vérifier lequel pointe vers l'appareil photo
#J'ai choisi par uuid pour être sûr de ne pas démonter un autre disque par erreur

REP_A_SAUVER="/media/cyberscooty/Photos/"
REP_CIBLE="/home/cyberscooty/Images"
DEV_A_DEMONTER="/dev/disk/by-uuid/9016-4EF8"

#=================montage disque==================
#sudo mkdir /media/9016-4EF8
#sudo mount /dev/disk/by-uuid/9016-4EF8 /media/9016-4EF8

#================Verification de la présence de l'appareil photo=============
error() {
zenity --error --text "$@" --title "Une erreur est survenue"
exit 1
}

[ -d "${REP_A_SAUVER}" ] || error "La source n'a pas été trouvée.

Verifier que l'appareil photo est bien branché."

#ne pas modifier les 2 variables suivantes
nblignes=1
compteur=0
# ==================Fonction date==================
Date=`date +%d%b%Y`
Annee=`date +%Y`
# ==================Principal==================
# demande d'une courte description
courte_description=`zenity --entry --title="Courte description" --text="Entrez une courte description pour vos photos"`

# création répertoire cible (exemple: /home/cyberscooty/Images/-== 2012 ==-/24mai2012 - description)
mkdir -p ${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"

# création du fichier liste
find -P -O1  $REP_A_SAUVER -iname "*.JPG" -exec echo {}>>${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"/list.txt \;
find -P -O1  $REP_A_SAUVER -iname "*.MTS" -exec echo {}>>${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"/list.txt \;

# calcul du nombre total de lignes
nblignes=$(sed -n '$=' ${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"/list.txt)

#==========boucle pour copie======
#  lecture du fichier liste
#  incrémentation du compteur pour barre de progression
#  echo pour afficher pourcentage (utilisé pour barre de progression)

(
while read line
do
cp -v $line ${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"
compteur=`expr $compteur + 1`
echo "($compteur *100)/$nblignes" | bc

done < ${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"/list.txt
) |

zenity --progress \
--percentage=0 --no-cancel --auto-close --auto-kill --width 350 \
--text "Transfert des photos en cours..." \
--title "Transfert en cours "

#Suppression du fichier liste
rm ${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"/list.txt

#renommer les fichier .JPG en .jpg
cd ${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"
for f in *.JPG; do mv $f `echo $f|sed 's/JPG/jpg/'`;done

#suppression du répertoire à sauver
rm -rf ${REP_A_SAUVER}/*

#Affichage message fin du transfert
notify-send -i ~/.scripts/transfert_photos_icone.png "Transfert effectué" "Les photos ont été transféré"

#Ouverture du dossier avec les photos nouvellement copiées
nautilus ${REP_CIBLE}/-==\ $Annee\ ==-/$Date\ -\ "$courte_description"

#Démontage du disque
umount ${DEV_A_DEMONTER}

exit0

# ==================Fin du script==================

#sources:
#zenity - général : http://linux.die.net/man/1/zenity
#zenity - barre de progression : http://doc.ubuntu-fr.org/zenity
#zenity - enlever bouton annuler: http://stackoverflow.com/questions/4907381/bash-zenity-progress-bar-without-cancel
#pour compter lignes : http://forum.hardware.fr/hfr/Programmation/Shell-Batch/resolu-compter-fichier-sujet_82598_1.htm
#calculs en bash: http://www.developpez.net/forums/d483366/systemes/linux/applications-shell-environnements-graphiques/shell/calcul-arithmetique-bash/
#script bash : http://doc.ubuntu-fr.org/tutoriel/script_shell
#généralité sur scripts : http://fr.wikipedia.org/wiki/Bourne-Again_shell
#lire fichier ligne par ligne : http://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne
#exemple de scrip (post de konsolebox) : http://www.linuxquestions.org/questions/linux-software-2/bash-script-to-copy-specific-files-465904/

Commandes utilisés (commandes que je ne connaissais pas):

  • read : permet de demander des infos dans la console (le script doit être lancé en mode console)
  • find : permet de chercher les fichiers jpg dans le dossier mais aussi dans les sous dossiers
  • sed : permet de remplacer du texte. Ici il permet de renommer les extensions des fichiers de JPG en jpg
  • \ (caractère d’échappement) : permet ici dans un script de rentrer un chemin avec des espaces (exemple : -==\ $Annee\ ==-)

 

warning, attention, signNe pas oublier de rendre le script exécutable (clic droit > propriétés > permissions > autoriser l’exécution du fichier comme un programme)

 

2° Création d’un joli lanceur

Création du script du lanceur

créé un fichier vide sur le bureau et l’appeler « test »

[Desktop Entry]
Name=Transfert de l'appareil photo
Comment=Transférer automatiquement les photos de l'appareil photo
Exec=/home/cyberscooty/.transfert_photos
Icon=/home/cyberscooty/.transfert_photos_icone.png
Terminal=true
Type=Application
Categories=AudioVideo;
StartupNotify=true

 

Mise en place de l’icône du lanceur et copie du script

Moi j’ai utilisé cette image transfert_photos_icone

 

fleche-puceEnregistrer l’image dans son home (/home/cyberscooty) et le renommer en .transfert_photos_icone.png

 

fleche-puceCopier le script transfert_photos dans son home et le renommer en .transfert_photos

 

Mise en place du lanceur

Transformation du script « test » en lanceur (en fait c’est une simple copie de notre fichier « test » dans ~/.local/share/applications puis on le rend executable)

Dans un terminal tapez (Ne pas lancer la commande en sudo mais avec votre utilisateur):

cp ~/Bureau/test ~/.local/share/applications/transfert_photos.desktop
chmod +x ~/.local/share/applications/transfert_photos.desktop

 

C’est fini !

ça y est dans le dash on a une nouvelle application « Transfert de l’appareil photo ». On peut utiliser l’icône en cliquant dessous ou même la glisser dans le dock pour un accès direct.

transfert_photos001

Tags: -

Un commentaire pour “màj : Transfert automatique de son appareil photo”

  1. […] a vu il y a quelques temps déjà l’amélioration de mon script des transferts automatique depuis mon appareil photo. Cette fois on va plus loin, on va lire les infos directement depuis les […]

Laissez un commentaire