Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/09/2007, à 16:29

Gioo

Script bash - Importer automatiquement les photos d'un appareil

Bonjour,

J'ai écrit ce petit script pour faciliter la vie de mes grands parents qui trouvaient que le parcours à effectuer pour extraire les photos de leur appareil était trop compliqué.
Le script permet donc de récupérer les photos du répertoire de l'appareil, de les déplacer dans le répertoire prévu à cet effet sur leur ordinateur dans un répertoire à la date du jour.

Soit : APN => Répertoire Ordi/Date du jour

Le script nécessite l'installation du paquet pmount afin de pouvoir démonter l'appareil après le déplacement des photos.

sudo apt-get install pmount

Pour configurer le script et l'adapter à vos répertoires, il vous suffit de renseigner les variables app, rep_app et rep dans la partie CONFIGURATION au début du script.
Le reste du script n'est pas à modifié et est commenté afin de vous permettre de le comprendre et de l'adapter à vos besoins.

Astuce, vous pouvez lancer le script automatiquement à la connexion de l'appareil photo en ajoutant le script dans Système => Préférences => Périphériques et médias amovibles, Onglet : Appareils photo, Commande : le_script

#!/bin/bash

################################################################### 
# ~ Informations ~
# Ce script permet de déplacer les photos d'un appareil vers un  répertoire.
#
# Nécessite l'installation de pmount pour démonter l'appareil
#
# Script réalisé par Gio - http://blog.gioo.info - licence GPL
# Version 0.3 - Light - 10 septembre 2007
###################################################################

#########################
#     CONFIGURATION     #
#########################
### APPAREIL PHOTO ###
#Point de montage de l'appareil
app="/media/disk/"
#Répertoire de l'appareil où sont stockées les photos
#Laisser * à la fin pour sélectionner toutes les photos du répertoire
rep_app="/media/disk/Photos/*"

### RÉPERTOIRE PHOTOS ###
#Répertoire sur l'ordinateur où les photos doivent être extraites
#Vérifier que le chemin existe bien, il n'est pas créer par le script
rep="/home/$USER/Desktop/Photos/"


#########################
#       FONCTIONS       #
#########################
### EXTRAIRE ###
#Fonction permettant d'extraire les photos de l'appareil vers le répertoire configuré
function extraire {
	if [ $(ls $rep_app | wc -l) -eq "0" ]
	then
		zenity --error --text="Il n'y a pas de photos dans l'appareil." --title="Erreur"
		exit
	fi

	#On créé un répertoire dans lequel extraire les photos à la date du jour
	rep="$(echo "$rep$(date)" | cut -d"," -f1)"
	mkdir "$rep"

	#On déplace tout le contenu de l'appareil
	mv -v $rep_app "$rep" | zenity --progress --text="Veuillez patienter,\nImportation des photos en cours..." --pulsate --auto-close

	if [ "${PIPESTATUS[0]}" != "0" ]; then
		zenity --error --text="Une erreur est survenue lors de l'importation des photos de l'appareil." --title="Erreur"
		exit
	fi
}

### DECONNECTER ###
#Déconnecte l'appareil photo
function deconnecter {
	eject -v $app | zenity --progress --text="Veuillez patienter,\nDéconnexion de l'appareil en cours..." --pulsate --auto-close

	if [ "${PIPESTATUS[0]}" != "0" ]; then
		zenity --error --text="Une erreur est survenue lors de la déconnexion de l'appareil." --title="Erreur"
		exit
	fi
}

### ANNULER ###
#Permet de quitter le script en cas d'annulation
function annuler {
	if [ "${PIPESTATUS[0]}" != "0" ]; then
		exit
	fi
}

##########################
#   DEBUT DU PROGRAMME   #
##########################
## Question Extraction
zenity --question --title="Importer les photos de l'appareil" --text="Cliquer sur Valider pour lancer l'importation des photos.\n\nScript réalisé par Gio.\nhttp://blog.gioo.info"
annuler

extraire

deconnecter

zenity --info --title="Informations" --text="Les photos ont bien étés importées sur l'ordinateur.\n\nVous pouvez maintenant débrancher l'appareil en toute sécurité."

Ceci est donc la version 'Light' destinée à juste déplacer des photos où d'autres documents sur tous types de support (clé usb entre autres).
Je travaille actuellement à une version puissant être plus configurée comme par exemple le choix de copier les fichiers au lieu de les déplacer, le choix de démonter où non l'appareil etc ...

Mais pour mes grands parents ce script sera suffisant, je posterai les modifications et la future version 'normale' dès qu'elle sera disponible.

Merci de me faire parvenir vos conseils et avis sur ce script, il n'est pas encore mis en place chez mes grands parents et donc pas réellement testé en conditions réelles d'utilisation.

Dernière modification par Gioo (Le 11/09/2007, à 15:28)


http://www.gioo.info

Hors ligne

#2 Le 10/09/2007, à 17:44

Gioo

Re : Script bash - Importer automatiquement les photos d'un appareil

Voici la version 'normale' du script.
Elle propose quelques choix lors de la connexion de l'appareil photo :
- Conserver les photos sur l'appareil
- Déconnecter l'appareil à la fin des opérations

script_normal.png

#!/bin/bash

###################################################################
# ~ Informations ~
# Ce script permet de copier les photos d'un appareil vers un répertoire.
#
# Nécessite l'installation de pmount pour démonter l'appareil
#
# Script réalisé par Gio - http://blog.gioo.info - licence GPL
# Version 0.4 - 10 septembre 2007
###################################################################

#########################
#     CONFIGURATION     #
#########################
### APPAREIL PHOTO ###
#Répertoire de l'appareil où sont stockées les photos
rep_app="/media/Appareil/*"
#Point de montage de l'appareil
app="/media/Appareil/"

### RÉPERTOIRE PHOTOS ###
#Répertoire sur l'ordinateur où les photos doivent être extraites
rep="/home/$USER/Desktop/Photos/"


#########################
#       FONCTIONS       #
#########################
### EXTRAIRE ###
#Fonction permettant d'extraire les photos de l'appareil vers le répertoire configuré
function extraire {
	if [ $(ls $rep_app | wc -l) -eq "0" ]
	then
		zenity --error --text="Il n'y a pas de photos dans l'appareil." --title="Erreur"
		exit
	fi
	#On créé un répertoire dans lequel extraire les photos à la date du jour
	rep="$(echo "$rep$(date)" | cut -d"," -f1)"
	mkdir "$rep"

	echo "$ACTION" | grep "Conserver les photos sur l'appareil." >/dev/null
	if [ "$?" = 0 ] ; 
	then
		#On copie recurcivement tout le contenu de l'appareil
		cp -vr $rep_app "$rep" | zenity --progress --text="Veuillez patienter,\nImportation des photos en cours..." --pulsate --auto-close
	else
		#On déplace tous le contenu de l'appareil
		mv -v $rep_app "$rep" | zenity --progress --text="Importation des photos en cours..." --pulsate --auto-close
	fi
	if [ "${PIPESTATUS[0]}" != "0" ]; then
		zenity --error --text="Une erreur est survenue lors de l'importation des photos de l'appareil." --title="Erreur"
		exit
	fi
	zenity --info --text="Les photos ont bien étés importées." --title="Informations"
}

### ANNULER ###
#Permet de quitter le script en cas d'annulation
function annuler {
	if [ "${PIPESTATUS[0]}" != "0" ]; then
		exit
	fi
}

### ACTIONS ###
#Permet d'éxécuter les actions choisies après l'extraction
function actions {
	###IMPORTATION ###

	extraire
	
	### DECONNEXION ###
	
	echo "$ACTION" | grep "Déconnecter l'appareil afin de le débrancher en toute sécurité." >/dev/null
	if [ "$?" = 0 ] ; then
		deconnecter
	fi
}

### DECONNECTER ###
#Déconnecte l'appareil photo
function deconnecter {
	eject -v $app | zenity --progress --text="Veuillez patienter,\nDéconnexion de l'appareil en cours..." --pulsate --auto-close

	if [ "${PIPESTATUS[0]}" != "0" ]; then
		zenity --error --text="Une erreur est survenue lors de la déconnexion de l'appareil." --title="Erreur"
		exit
	fi
	zenity --info --text="Vous pouvez maintenant débrancher l'appareil en toute sécurité." --title="Informations"
}


##########################
#   DEBUT DU PROGRAMME   #
##########################
## Affichage de la liste des actions
    ACTION=$(zenity --list --checklist --width=520 --height=280 \
        --title "Sélection des opérations à effectuées" \
        --text="Cliquer sur Valider pour lancer l'importation des photos.\n\nScript réalisé par Gio.\nhttp://blog.gioo.info\n\nSélectionnez les opérations à effectuer : " \
        --column="À faire ?" --column="Description" \
        FALSE    "Conserver les photos sur l'appareil." \
        TRUE    "Déconnecter l'appareil afin de le débrancher en toute sécurité." );

annuler

## Exécution des opérations demandées
actions

Dernière modification par Gioo (Le 11/09/2007, à 18:43)


http://www.gioo.info

Hors ligne

#3 Le 11/09/2007, à 14:50

littleblackdog

Re : Script bash - Importer automatiquement les photos d'un appareil

ça a l'air sympa. bravo pour l'aide que tu approtes aux gens.
juste une petite chose, parce que c'est toujours plus propre de s'exprimer parfaitement lorsqu'on communique avec l'utilisateur : "en toute sécurité", ne s'écrit pas "en toute sécuritée" .

Hors ligne

#4 Le 11/09/2007, à 15:29

Gioo

Re : Script bash - Importer automatiquement les photos d'un appareil

Merci pour la faute d'orthographe, je viens de la corriger smile


http://www.gioo.info

Hors ligne

#5 Le 11/09/2007, à 18:05

Sallé

Re : Script bash - Importer automatiquement les photos d'un appareil

tout simplement génial yikes
tu l'as fait pour tes grands-parents, je l'utiliserais pour mes parents big_smile

Mille mercis

Hors ligne

#6 Le 11/09/2007, à 18:19

Gioo

Re : Script bash - Importer automatiquement les photos d'un appareil

Héhé merci pour les compliments smile
Ça fait plaisir de voir qu'il sera utile à d'autres personnes.

Si vous détectez des bugs où si vous avez des idées d'améliorations/modifications n'hésitez pas à me le dire.
Je me ferai une joie d'essayer de les concrétiser smile


http://www.gioo.info

Hors ligne

#7 Le 12/09/2007, à 04:33

sined

Re : Script bash - Importer automatiquement les photos d'un appareil

excellent script, je vais l'utiliser ... pour moi lol !

Hors ligne

#8 Le 29/11/2007, à 15:34

jahwork

Re : Script bash - Importer automatiquement les photos d'un appareil

Gioo a écrit :

[...]
Si vous détectez des bugs o๠si vous avez des idées d'améliorations/modifications n'hésitez pas à  me le dire.
Je me ferai une joie d'essayer de les concrétiser smile

Salut Gioo,

Excellent script. Merci.

Voici mes requêtes :
  1. créer un répertoire a la date de la photo (donc un répertoire par date) en lisant l'info EXIF
  2. Si 1., proposer de personnaliser le format du répertoire créé, en utilisant le format de la command 'date'
  3. renommer le nom des photos (i.e. "date_XXX.jpg") a l'importation.
  4. Si 3., proposer de personnaliser le format de renommage (même genre que 2.)

Voila au boulot maintenant wink

Merciche...

Hors ligne

#9 Le 29/11/2007, à 15:55

LeCaméléon

Re : Script bash - Importer automatiquement les photos d'un appareil

excellent ce petit script !!!

j'avais un soft à  l'époque sur Wind*** qui mettait les photos dans un dossier nommé à  la date de la photo. Donc comme jahwork, s'il y a moyen de récupérer les infos EXIF et d'adapter ce script, c'est trop cool !!!

cool

Hors ligne

#10 Le 04/12/2007, à 19:45

rereleputois

Re : Script bash - Importer automatiquement les photos d'un appareil

Bonjour à  toutes et tous,

Si ca peut aider, exiftool (http://www.sno.phy.queensu.ca/~phil/exiftool/) permet d'extraire la date de prise de vue d'une images (tif, jpeg, raw ...). Bon ben voila, y a plus qu'à  le faire quoi ... heu ... non non, pas moi tongue.
En fait, je cherche à  faire un script de ce type depuis quelques jours mais bon, mes connaissances en shell ne sont pas suffisantes.

En tous cas MERCI pour ce script, je vais le prendre comme base pour mon script à  moi que j'ai, enfin, que je vais avoir ... peur être !

Regis F.


Quand on pense qu'il suffirait qu'on ne l'achete pas pour pas que ca se vende ! ... et ben voui, c'est aussi simple que ça

Hors ligne

#11 Le 04/12/2007, à 21:24

jahwork

Re : Script bash - Importer automatiquement les photos d'un appareil

Sympa, ya même un paquet dispo direct dans la distribution (gutsy en tout cas)

Hors ligne

#12 Le 05/12/2007, à 19:40

rereleputois

Re : Script bash - Importer automatiquement les photos d'un appareil

Bonjour tous le  monde,

Alors j'ai regardé un coup vers exif tool et la commande :
exiftool monimage.nef|grep 'Create Date'

donne :
Create Date                     : 2007:12:02 15:15:19

Avec ça, n'est-il pas possible de se debrouiller a extraire le 2007 et le 12 et de s'en servir pour creer le repertoire s'il n'exista pas deja ? Du genre on passe les photos à transferer en revue une par une et on les copie dans le bon repertoire.

Je cherche des commandes pour faire ça en bash mais c'est encore un peu obscure pour moi hmm J'ai du mal avec les $, les > et autres $2 ...

Et toi Gioo que penses tu de ce genre d'amelioration ?

A +

Regis


Quand on pense qu'il suffirait qu'on ne l'achete pas pour pas que ca se vende ! ... et ben voui, c'est aussi simple que ça

Hors ligne

#13 Le 05/12/2007, à 19:54

Gioo

Re : Script bash - Importer automatiquement les photos d'un appareil

Salut tout le monde,
je suis toujours le fil de ce sujet mais malheureusement en ce moment j'ai vraiment pas beaucoup de temps dispo (les partiels approchent).

Sinon il me semble que cela doit être gérable sans trop de problèmes.

Merci d'ailleurs pour les infos sur exif, ça va être plus simple vu que vous avez déjà  trouvé la commande pour récupéré l'information voulue.

Dès que possible, j'essaye de vous faire ça wink


http://www.gioo.info

Hors ligne

#14 Le 07/12/2007, à 19:20

rereleputois

Re : Script bash - Importer automatiquement les photos d'un appareil

Bonjours à  toutes et tous,

même si je suis tout nouveau en bash, je tente d'avancer quand même. Si ça peut aider j'ai trouvé une ligne pas mal qui pourrait servir de base a la creation de l'arborescence de stockage des images (en année/mois). Alors voila la super ligne que j'ai trouvée ... attention big_smile :
exiftool * | grep 'Create Date'|cut -d':' -f2,3
Elle prend tous les fichiers du repertoire (il faudrait tester si ce sont des images) puis extrait les lignes qui concernent la date de creation de ces images et enfin isole l'année et le mois.

Voila voila, et venez pas me dire qu'il faut deux minutes pour ecrire ça ...;), j'en ai bavé. C'est assez obscure comme langage le bash.

A+

Regis F.


Quand on pense qu'il suffirait qu'on ne l'achete pas pour pas que ca se vende ! ... et ben voui, c'est aussi simple que ça

Hors ligne

#15 Le 07/12/2007, à 19:44

Autiwa

Re : Script bash - Importer automatiquement les photos d'un appareil

je viens de tester le script à  l'instant, et j'adore. Surtout que mon appareil n'est pas reconnu par gphoto2, et donc que je pouvais pas importer rapidement et automatiquement...
Cependant, j'avoue que j'ai pour habitude de stocker toutes les photos dans le même répertoire, et sans tenir compte de l'arborescence.
Est-ce qu'il serait possible qu'il fasse ça? (soit avec une option, soit me donner des lignes de conduites pour que j'essaye de modifier le script pour mon compte)
En clair, j'aimerais qu'il me copie les photos des sous répertoires du répertoire des photos toutes à  la racine du répertoire cible.


Pensez à éditer le titre du sujet (en éditant le premier message) pour rajouter un "[Résolu]" ça évite à ceux qui veulent donner un coup de main, d'ouvrir un sujet où il n'y a plus d'aide à donner.

Hors ligne

#16 Le 07/12/2007, à 22:20

Gioo

Re : Script bash - Importer automatiquement les photos d'un appareil

Autiwa a écrit :

je viens de tester le script à  l'instant, et j'adore. Surtout que mon appareil n'est pas reconnu par gphoto2, et donc que je pouvais pas importer rapidement et automatiquement...
Cependant, j'avoue que j'ai pour habitude de stocker toutes les photos dans le même répertoire, et sans tenir compte de l'arborescence.
Est-ce qu'il serait possible qu'il fasse ça? (soit avec une option, soit me donner des lignes de conduites pour que j'essaye de modifier le script pour mon compte)
En clair, j'aimerais qu'il me copie les photos des sous répertoires du répertoire des photos toutes à  la racine du répertoire cible.

Si tu veux extraire directement à  la racine de ton répertoire photo, enlève cette partie de code dans le script (situé dans la fonction extraire) :

    #On créé un répertoire dans lequel extraire les photos à  la date du jour
    rep="$(echo "$rep$(date)" | cut -d"," -f1)"
    mkdir "$rep"

Comme ça il ne créera plus le répertoire à  la date du jour et copiera/déplacera (selon le script) directement à  la racine.
PS : Attention à  ce que ton appareil nomme bien de manière différente les photos, car sinon ça risque d'écraser les photos de ton répertoire qui auraient le même nom ou ça renomme automatiquement (à  vérifier) mais je ne pense pas.

Dernière modification par Gioo (Le 07/12/2007, à 22:23)


http://www.gioo.info

Hors ligne

#17 Le 07/12/2007, à 22:28

Autiwa

Re : Script bash - Importer automatiquement les photos d'un appareil

mais en fait, le répertoire de mes photos est :
DCIM
dedans, il y a par exemple les dossiers suivants
100 PANA
101 PANA
et j'ai peur qu'en enlevant ces lignes de codes, ça m'enlève le dossier avec la date du jour, mais pas les dossiers 100 PANA et 101 PANA. Je voudrais que les photos de ces deux dossiers se retrouvent dans le même dossier de mon ordi. Et pour le nommage, pas de soucis, c'est bien distinct.


Pensez à éditer le titre du sujet (en éditant le premier message) pour rajouter un "[Résolu]" ça évite à ceux qui veulent donner un coup de main, d'ouvrir un sujet où il n'y a plus d'aide à donner.

Hors ligne

#18 Le 07/12/2007, à 22:32

Gioo

Re : Script bash - Importer automatiquement les photos d'un appareil

Ah oki, je comprend mieux ce que tu recherchers en fait pour résumer ton arborescence tu as ceci :

/DCIM/100 PANA
/DCIM/101 PANA

Et dans chacun de ces dossier tu as des photos et tu ne voudrais pas garder les répertoires intitulés 10X pour tout remettre dans un répertoire à  la date du jour dans ton répertoire photo sur ton pc.

Je fait une recherche, ne tient pas compte de ce que j'ai mis précédemment dans ce cas là .

Investigation :
Voici une petite commande pour me permettre de vérifier si il s'agit d'un répertoire o๠d'un fichier

ls -l fichier | cut -d" " -f1 | grep d

Renvoi rien si ce n'est pas un répertoire.

Désolé, je me commente tout seul lol.
Je continue mes recherches car ce n'est pas si simple que ça en fait car la commande que j'exécutais copiait tout de manière récursive et pour le moment je ne voit pas comment lui faire contrà´ler chaque fichier avant d'effectuer la copie.

Dernière modification par Gioo (Le 07/12/2007, à 22:41)


http://www.gioo.info

Hors ligne

#19 Le 07/12/2007, à 22:38

Autiwa

Re : Script bash - Importer automatiquement les photos d'un appareil

je suis en train d'essayer de le modifier. Pour le moment, je compte faire un truc du style :

for ssrep in $(ls -d */ | tr -d /)
do
cp -vr $rep_app/$ssrep "$rep" | zenity --progress --text="Veuillez patienter,\nImportation des photos en cours..." --pulsate --auto-close
done

et je ferais la même chose pour la partie move. En clair, reprendre ton code, mais lui dire "parcours les dossiers du dossier des photos, et fait la même chose dans ces dossiers


Pensez à éditer le titre du sujet (en éditant le premier message) pour rajouter un "[Résolu]" ça évite à ceux qui veulent donner un coup de main, d'ouvrir un sujet où il n'y a plus d'aide à donner.

Hors ligne

#20 Le 07/12/2007, à 22:45

Gioo

Re : Script bash - Importer automatiquement les photos d'un appareil

Oui de toute façon je pense qu'il va falloir faire une boucle pour parcourir tous les fichiers et dossier et vérifier avant de copier/déplacer.

Je te laisse investiguer de ton cà´té, tu as l'air de bidouiller un peu en shell (au moins autant que moi lol) et je verrai au plus tà´t ce que je peux faire et o๠ça en est.

Ce WE je risque de pas pouvoir faire grand chose et la semaine prochaine révision pour les partiels wink
Mais je tà¢cherai de garder un oeil sur ce sujet wink

Bonne nuit.


http://www.gioo.info

Hors ligne

#21 Le 07/12/2007, à 22:54

Autiwa

Re : Script bash - Importer automatiquement les photos d'un appareil

pareil, semaine de révisions pour les partiels à partir de demain matin donc je pourrais pas trop bidouiller. Je dois pas être trop loin du résultat escompté cependant. Celà dit, c'est quand on est proche que ça bugue. Et je bidouille très très peu en shell, je viens justement de me faire aider par deux membres du forum pour faire un simple script de listage de fichier... big_smile

PS : celà dit, même si je comprend pas grand chose, je peux réadapter mes code pour d'autres trucs, c'est peut-être pour ça que tu as pu avoir l'impression que je m'y connaissais tongue

Je vais modifier mon script, et prochaine fois que je prend des photos, je le teste. Je posterais à ce moment là pour dire si ça marche.


Pensez à éditer le titre du sujet (en éditant le premier message) pour rajouter un "[Résolu]" ça évite à ceux qui veulent donner un coup de main, d'ouvrir un sujet où il n'y a plus d'aide à donner.

Hors ligne

#22 Le 08/12/2007, à 08:38

jahwork

Re : Script bash - Importer automatiquement les photos d'un appareil

En shell il y a plus direct pour tester un fichier, répertoire, etc :

http://www.gnu.org/software/bash/manual/bashref.html#SEC77

Pour tester si c'est un fichier :
if [ -f $trucatester ]

un répertoire :
if [ -d $trucatester ]

etc...

Sinon Gioo, en fait ton script ne fonctionne que pour les APN qui sont reconnus
comme des periphérique USB de mass storage (style clé USB).
Ca ne fonctionne pas pour les périphériques qui communique en PTP (comme Canon par exemple), puisque tu considère que l'APN est monté dans /media/Appareil/ 
Chez moi avec mon Canon ixus 850 ça ne fonctionne pas...
A étendre alors smile

Hors ligne

#23 Le 08/12/2007, à 23:25

freebird

Re : Script bash - Importer automatiquement les photos d'un appareil

L'endroit o๠est monté ton APN diffère ? Il suffit de modifier les 2 variables "rep_app" et "app".

Je vais l'utiliser pour moi donc je vais faire quelques adaptations/corrections, je vous repasserai le script une fois fini smile

Edit à  23h40 :
Voilà  ce que j'ai fais :
- remplacer le ls permettant de contrà´ler la présence d'images par un find
- remplacer le cp -r par un find
- entourer les variables répertoire par des " pour gérer les répertoires avec espaces

L'utilisation d'un find permet de gérer le cas des APN créant une arborescence variable et donc des répertoires images différents à  chaque fois.

Voici le code :

#!/bin/bash

###################################################################
# ~ Informations ~
# Ce script permet de copier les photos d'un appareil vers un répertoire.
#
# Nécessite l'installation de pmount pour démonter l'appareil
#
# Script réalisé par Gio - http://blog.gioo.info - licence GPL
# Version 0.4 - 10 septembre 2007
# Modifié par Freebird
# Version 0.5 - 08 décembre 2007
###################################################################

#########################
#     CONFIGURATION     #
#########################
### APPAREIL PHOTO ###
#Répertoire de l'appareil o๠sont stockées les photos
rep_app="/media/DC C800/"
#Point de montage de l'appareil
app="/media/DC C800/"

### Rà‰PERTOIRE PHOTOS ###
#Répertoire sur l'ordinateur o๠les photos doivent être extraites
rep="/home/$USER/Bureau/Photos/"


#########################
#       FONCTIONS       #
#########################
### EXTRAIRE ###
#Fonction permettant d'extraire les photos de l'appareil vers le répertoire configuré
function extraire {
    if [ $(find "${rep_app}" -type f | wc -l) -eq "0" ]
    then
        zenity --error --text="Il n'y a pas de photos dans l'appareil." --title="Erreur"
        exit
    fi
    #On créé un répertoire dans lequel extraire les photos à  la date du jour
    rep="$(echo "$rep$(date)" | cut -d"," -f1)"
    mkdir -p "$rep"

    echo "$ACTION" | grep "Conserver les photos sur l'appareil." >/dev/null
    if [ "$?" = 0 ] ; 
    then
        #On copie recurcivement tout le contenu de l'appareil
        find "${rep_app}" -type f -exec cp {} "$rep" \; | zenity --progress --text="Veuillez patienter,\nImportation des photos en cours..." --pulsate --auto-close
    else
        #On déplace tous le contenu de l'appareil
        find "${rep_app}" -type f -exec mv -v {} "$rep" \; | zenity --progress --text="Importation des photos en cours..." --pulsate --auto-close
    fi
    if [ "${PIPESTATUS[0]}" != "0" ]; then
        zenity --error --text="Une erreur est survenue lors de l'importation des photos de l'appareil." --title="Erreur"
        exit
    fi
    zenity --info --text="Les photos ont bien étés importées." --title="Informations"
}

### ANNULER ###
#Permet de quitter le script en cas d'annulation
function annuler {
    if [ "${PIPESTATUS[0]}" != "0" ]; then
        exit
    fi
}

### ACTIONS ###
#Permet d'éxécuter les actions choisies après l'extraction
function actions {
    ###IMPORTATION ###

    extraire
    
    ### DECONNEXION ###
    
    echo "$ACTION" | grep "Déconnecter l'appareil afin de le débrancher en toute sécurité." >/dev/null
    if [ "$?" = 0 ] ; then
        deconnecter
    fi
}

### DECONNECTER ###
#Déconnecte l'appareil photo
function deconnecter {
    eject -v "$app" | zenity --progress --text="Veuillez patienter,\nDéconnexion de l'appareil en cours..." --pulsate --auto-close

    if [ "${PIPESTATUS[0]}" != "0" ]; then
        zenity --error --text="Une erreur est survenue lors de la déconnexion de l'appareil." --title="Erreur"
        exit
    fi
    zenity --info --text="Vous pouvez maintenant débrancher l'appareil en toute sécurité." --title="Informations"
}


##########################
#   DEBUT DU PROGRAMME   #
##########################
## Affichage de la liste des actions
    ACTION=$(zenity --list --checklist --width=520 --height=280 \
        --title "Sélection des opérations à  effectuées" \
        --text="Cliquer sur Valider pour lancer l'importation des photos.\n\nScript réalisé par Gio.\nhttp://blog.gioo.info\n\nSélectionnez les opérations à  effectuer : " \
        --column="à€ faire ?" --column="Description" \
        FALSE    "Conserver les photos sur l'appareil." \
        TRUE    "Déconnecter l'appareil afin de le débrancher en toute sécurité." );

annuler

## Exécution des opérations demandées
actions

Vu que l'idée d'utiliser exif m'attire pas mal car je préfère avoir la date de la photo ou au moins pouvoir choisir je suis en train de regarder tout ça smile
Je m'oriente sur l'utilisation du package exiftags.

Dernière modification par freebird (Le 09/12/2007, à 01:28)

Hors ligne

#24 Le 09/12/2007, à 00:17

jahwork

Re : Script bash - Importer automatiquement les photos d'un appareil

freebird a écrit :

L'endroit o๠est monté ton APN diffère ? Il suffit de modifier les 2 variables "rep_app" et "app".

[snip]

Merci freebird pour ces modifs.

Pour l'histoire du point de montage, le problème n'est pas la.
En fait il y a 3 types d'APN (si je dis pas de bêtises) :
- ceux reconnu comme USB mass storage device (genre clé USB)
- ceux qui communique en PTP (Canon, ...)
- ceux qui utilise un protocole prioritaire

Le script de Gioo est pour l'instant seulement adapté au 1er cas,
puisque lorsque tu branche ton APN il est automatiquement monté
comme un périphérique de stockage, donc dans /media/...
donc tu peux explorer son contenu comme un répertoire classique

Mais ce n'est pas le cas des autres, notamment pour les Canon.

En fait je pense qu'il faut plutà´t utiliser une commande plus générale,
genre gphoto2 qui s'interface avec les 3 cas

A creuser...

Hors ligne

#25 Le 09/12/2007, à 00:23

Autiwa

Re : Script bash - Importer automatiquement les photos d'un appareil

gphoto2 ne marche pas pour tout les appareils. Pour exemple, mon panasonic n'est pas dans la liste des périphériques reconnus...


Pensez à éditer le titre du sujet (en éditant le premier message) pour rajouter un "[Résolu]" ça évite à ceux qui veulent donner un coup de main, d'ouvrir un sujet où il n'y a plus d'aide à donner.

Hors ligne