Transfert automatique de son appareil photo – version 3

Créé le : 10 mars 2015
Catégorie: Ubuntu
Mise à jour : 3 février 2016

Transfert automatique de son appareil photo – version 3

On 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 photos pour créer les dossiers avec la date qui va bien et non plus la date du jour de l’extraction qui peut être différente de la date des clichés.

Description de l’execution du script

Exemple: une photo prise le 05 janvier 2015 sera enregistré dans votre dossier Image/-== 2015 ==-/05 janv. 2015 – description

Si vous utilisez le script il faudra modifier le chemin de votre appareil photo dans le script et eventuellement la destination

  1. Verification que la source est présente sinon un message vous invite à brancher l’appareil photo
  2. Demande d’une courte description qui servira à créer le nom du dossier cible
  3. Recherche de tous les fichiers media (jpg et mov)
  4. le script créé un fichier temporaire avec le chemin des toutes les photos à copier
  5. Comptage du nombre de ligne du fichier temporaire (utilisé pour la barre de progression)
  6. extraction date de la photo (utilisé pour enregistrer la photo dans le repertoire daté qui va bien)
  7. enregistrement de la photo ou de la vidéo dans le repertoire comportant date et description
  8. renommage des extension JPG en jpg
  9. Nettoyage (suppression du fichier temporaire + suppression des fichiers sources sur l’appareil photo)
  10. Affichage d’un message pour indiquer la fin du script
  11. Ouverture du dossier de l’année

Installation du pré-requis

Le script utilise exiv2 pour lire les infos EXIF des photos…il faut donc l’installer

sudo apt-get install exiv2
  • Si il ne trouve pas les sources il faut cocher « Universe » dans les sources Ubuntu

Code du script


#!/bin/bash
#############################################################################
#                                                                           #
#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
#Version 3.0 le 09 mars 2015
#            * ajout : le dossier cible comporte la date de la photo (info EXIF avec exiv2) et non plus de la date d'extraction
#            * modif : le message de fin indique le nb de fichiers copiés


#==================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=~/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

# ==================Principal==================
# demande d'une courte description
courte_description=`zenity --entry --title="Courte description" --text="Entrez une courte description pour vos photos"`

# création du fichier liste (1er > et 2eme >>)
find -P -O1  $REP_A_SAUVER -iname "*.JPG" -exec echo {}>~/.tmplist.txt \;
find -P -O1  $REP_A_SAUVER -iname "*.MTS" -exec echo {}>>~/.tmplist.txt \;

# calcul du nombre total de lignes
nblignes=$(sed -n '$=' ~/.tmplist.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

#---------extraction date de la photo-------------
timestamp=`exiv2 $line | grep timestamp`
annephoto=`echo ${timestamp:18:4}`
moisphoto=`echo ${timestamp:23:2}`
jourphoto=`echo ${timestamp:26:2}`
MONTHS=(vide Janv. Fev. Mars Avr. Mai Juin Juil. Aout Sept. Oct. Nov. Dec.)
#zenity --info --text="$jourphoto ${MONTHS[$moisphoto]} $annephoto"
#---------fin extraction date---------------------

#==========debut MAIN======================
# création répertoire cible (exemple: /home/cyberscooty/Images/-== 2012 ==-/24 mai 2012 - description)
mkdir -p ${REP_CIBLE}/-==\ $annephoto\ ==-/"$jourphoto ${MONTHS[$moisphoto]} $annephoto "-\ "$courte_description"

cp -v $line ${REP_CIBLE}/-==\ $annephoto\ ==-/"$jourphoto ${MONTHS[$moisphoto]} $annephoto "\-\ "$courte_description"

mv

compteur=`expr $compteur + 1`

echo "($compteur *100)/$nblignes" | bc

# renommage JPG en jpg
cd ${REP_CIBLE}/-==\ $annephoto\ ==-/"$jourphoto ${MONTHS[$moisphoto]} $annephoto "\-\ "$courte_description"
rename s/JPG/jpg/ *.JPG

done < ~/.tmplist.txt
) |

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

#Nettoyage (fichier temp + source)
rm ~/.tmplist.txt
rm -rf ${REP_A_SAUVER}/*

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

#Ouverture du dossier de l'année
Annee=`date +%Y`
nautilus "${REP_CIBLE}/-== $Annee ==-"


#Démontage du disque
umount ${DEV_A_DEMONTER}

exit0

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

Sources

 

Tags: -

Laissez un commentaire