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 ==-/Date – Description . 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\ ==-)
Ne 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
Enregistrer l’image dans son home (/home/cyberscooty) et le renommer en .transfert_photos_icone.png
Copier 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.
[…] 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 […]