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 13/01/2008, à 14:46

stepson

Tri de photos

Bonjour !!

Je voudrai faire la chose suivante :

parser des dossiers et sous dossiers.
certains dossiers/sous dossiers contenant en vrac des photos.
d'autres déjà triés et ordonnés sous la forme AAAA-MM  (année-mois, ex 2008-01)


pour chaque photo, comparer la date de prise de vue (donnée exif), la date de creation du fichier linux, le dossier dans lequel c'est classé.

donc 3 dates :
DPHOTO : la date de la prise de vue de la photo
DFICHIER : la date du fichier linux
DDOSSIER : la date du dossier dans lequel c'est si c'est un dossier normalisé (AAA-MM)

-si pas de différence entre DPHOTO et DFICHIER, mettre dans le dossier AAA-MM voulu si ca n'y est ps deja (DPHOTO <> DDOSSIER)
-si difference DPHOTO DFICHIER mais que DPHOTO et DDOSSIER matchent, corriger la date systeme du fichier DFICHIER pour la mettre a DPHOTO

si différence des 3 :
si DPHOTO non existante ou nulle : regarder DFICHIER et DDOSSIER et demander que faire (eventuellement saisie manuelle d'une date). alors mettre la bonne date aux 3 valeurs et classer correctement
si DPHOTO existante, demander quelle date choisir et mettre le tout a la bonne date et le fichier dans le dossier correspondant.


question de base : est ce que ca existe comme petit outil ?
si ou : je suis preneur
si non, j'ai toutes les competences (mais pas forcement le temps) pour le faire. est ce que ca interesserai du monde
-de le co-developper avec moi
-de l'utiliser


le but est d'avoir en sortie : des photos correctement triées dans des dossiers AAAA-MM avec date EXIF et date fichier correctes

apres plusieurs systemes et de multiples transferts ftp, qui ont arfois alteres les dates fichiers, et 10 ans de photo numériques stockés, je commence a avoir un peu de bazar. j'ai reclassse a la main, mais avoir un outil pour le faire en automatique m'a beaucoup manque.

Hors ligne

#2 Le 13/01/2008, à 15:28

doc75

Re : Tri de photos

Bonjour,

J'ai fait il y a quelques temps un script qui prend la date EXIF et met les photos dans le bon repertoire.
Par contre, il part du principe que tous les fichiers ont une info EXIF. Par ailleurs, il ne change pas la date du fichier et il ne tient pas compte du nom du repertoire source.

Ca ne correspond pas exactement a votre besoin, mais si ca vous interesse, je peux vous mettre le source dans un post.

A+

Hors ligne

#3 Le 13/01/2008, à 16:49

stepson

Re : Tri de photos

bonjour !

c'est une bonne base a partager, je suis preneur du script que vous aviez fait pour voir comment je pourrai l'enrichir

Hors ligne

#4 Le 13/01/2008, à 18:07

stepson

Re : Tri de photos

bon, allez deja un simple

jhead -ft *.jpg

remets tout d'aplomb (date systeme= date exif) ...
et ca donne aussi un message d'erreur (pas d'exif ou date exif a 0) qui en redirigeant la sortie standard vers un fichier permet d'avoir une liste des fichiers a traiter en exception

Hors ligne

#5 Le 13/01/2008, à 18:30

doc75

Re : Tri de photos

Voila le code, je ne garantie pas qu'il fonctionne parfaitement.
N'oubliez pas de faire un backup avant de l'utiliser pour etre sur de ne pas perdre de fichiers.
Surtout si vous avez des fichiers qui ont potentiellement le même nom (il ne fait aucune vérification sur l'existence du fichier avant de faire le move)

#!/bin/sh

tmpfile="/tmp/tmp.txt"
ext=JPG
dest_dir="/tmp/photos"

echo " " > ${tmpfile}

for st in `find . -name *.${ext}`
do
	# redirect error messages of exiv2 to /dev/null to avoid some warning message such as:
	#    Error: Directory Makernote with 4352 entries considered invalid; not read.
	#    Warning: Failed to read Makernote, rc = 6

	dir_name=`exiv2 $st 2> /dev/null | grep timestamp | cut -f4 -d' ' | sed -e 's/:/_/g'`

	if [ ! -d ${dest_dir}/${dir_name} ]; then
		mkdir ${dest_dir}/${dir_name}
		#echo "Creating ${dir_name}"
	# else
		# echo "Directory ${dir_name} exists"
	fi

	#echo "Moving ${st} to ${dest_dir}/${dir_name}"
	echo ${dir_name} >> ${tmpfile}
	mv ${st} ${dest_dir}/${dir_name}
	if [ "$?" -ne "0" ]; then
		echo "Error moving ${st}"
	fi
done

echo "Images moved to the following folders:"
cat ${tmpfile} | sort -u
echo "=================================="

# we check if any photo is not moved
remain_files=`find . -name *.${ext} | wc -l`
if [ "${remain_files}" -ne "0" ]; then
	echo "Image not moved:"
	find . -name *.${ext}
else
	echo "All images moved successfully"
fi

Hors ligne