nexius2 Posté(e) le 23 octobre 2014 Auteur Partager Posté(e) le 23 octobre 2014 (modifié) j'en profite egalement pour faire part d'un nouveau probleme.... hier soir, j'ai commencer a dater les photos qui n'avait pas de timestamp. et j'ai trouvé ca assez long pour au final peut de dossier traité. du coup, je vais rajouter une fonction dans le script qui regarde le nom du dossier parent et s'il est de la forme 2014-12-31, je rentre la date correspondante dans le fichier... sauf que: exiv2 -M"add Exif.Image.DateTime 2010:12:12" pochette_93_350.jpg me retourne: exiv2 -pv pochette_93_350.jpg 0x0132 Image DateTime Ascii 11 2010:12:12 0x9003 Image DateTimeOriginal Ascii 11 2010:12:12 0x9003 Image DateTimeOriginal Ascii 11 2099:12:12 0x9003 Image DateTimeOriginal Ascii 11 2099:12:12 donc j'ai bien le Datetime correspondant (et aussi plusieurs essai de datetimeoriginal...) mais ca ne semble pas etre vu apres comme une date de prise de vue... et du coup, meme en utilisant datetimeoriginal, je n'arrive pas a la renomer... une idée sur comment entrer une date? Modifié le 23 octobre 2014 par nexius2 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nexius2 Posté(e) le 23 octobre 2014 Auteur Partager Posté(e) le 23 octobre 2014 j'ai trouvé.... il faut mettre Image.DateTime et Photo.DateTimeOriginal. ca marche a la mano, mais je doit avoir une erreur lors du lancement du script a cause des variables je pense... exiv2 -M"add Exif.Image.DateTime $foldyearok:$foldmonthok:$folddayok $DEFAULT_TIME" $line exiv2 -M"add Exif.Photo.DateTimeOriginal $foldyearok:$foldmonthok:$folddayok $DEFAULT_TIME" $line 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nexius2 Posté(e) le 24 octobre 2014 Auteur Partager Posté(e) le 24 octobre 2014 (modifié) d'apres tout mes tests, ca semble OK. je n'ai maintenant plus qu'a traité le cas d'une image qui retourne un "No Exif data found in the file " sur ce bout de script: IFS=': ' set $(exiv2 -g Exif.Image.DateTimeOriginal -Pv "$line") unset IFS year=$1 month=$2 day=$3 hour=$4 minute=$5 second=$6 je pense qu'il faudrait changer la facon de proceder et lire le resultat avec un "read" peut etre. comme ca, si je n'ai pas de resultat, je sais qu'il n'y a pas d'exif...mais je tatonne, je decouvre read :-) Modifié le 24 octobre 2014 par nexius2 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nexius2 Posté(e) le 28 octobre 2014 Auteur Partager Posté(e) le 28 octobre 2014 je travail actuellement sur la V0.6 qui doit renommer le fichier s'il n'a pas de date et si le dossier parent a un nom correct.... mais je seche....ca marche.... pas toujours.... #!/bin/ash ########################################################################################### #........................... Script pour renommer les Photos..V0.6 .......................# #.........................................................................................# #............... Permet de renommer les fichiers jpg par leur date de prise de vue........# # # # Version 0.1 Nexius2 # # renomme les fichier JPG d'un repertoire fonction de la date de prise de vue # # Version 0.2 CoolRaoul # # correction de la comparaison fichier / date # # Version 0.3 Nexius2 # # modification des logs de sortie pour plus de clareté sur les fichiers sans date # # Version 0.4 Nexius2 # # plus sensible a la case # # Version 0.5 Nexius2 # # Correction de bug du log # # Version 0.51 Nexius2 # # Correction de bug de recuperation de date # # Version 0.6 Nexius2 # # ajout de la fonction rajout de date si non presente # ########################################################################################### ########################################################################################### # Paramettre du script # ########################################################################################### rep="/volume1/Temp/photos/test/" # repertoire de stockage des photos ADD_DATE_IN_LOG="Yes" # mettre Yes pour afficher la date dans le log ADD_DATE_IN_PHOTO="Yes" # mettre Yes pour rajouter une date sur une photo en fonction du nom du dossier parent si la photo n'a pas de date LOG_PATH=/volume1/Temp/ # chemin du log LOG_NAME=PhotoStation.rename.file.sh # nom du fichier log DEFAULT_MONTH=06 DEFAULT_DAY=15 DEFAULT_TIME="06:00:00" NOW=$(date +"%F") # declaration de la date - ne pas changer PATH=/bin:/usr/bin:/usr/syno/bin # important si lancé en cron ########################################################################################### # declaration du nom des logs # ########################################################################################### if [ "$ADD_DATE_IN_LOG" == "Oui" ] || [ "$ADD_DATE_IN_LOG" == "Yes" ] || [ "$ADD_DATE_IN_LOG" == "Y" ] || [ "$ADD_DATE_IN_LOG" == "O" ]; then LOG_FILE=$LOG_PATH$LOG_NAME.$NOW".log" LOG_FILE_NO_EXIF=$LOG_PATH$LOG_NAME"_NO_EXIF."$NOW".log" LOG_FILE_ADDED_DATE=$LOG_PATH$LOG_NAME"_DATE_ADDED."$NOW".log" else LOG_FILE=$LOG_PATH$LOG_NAME".log" LOG_FILE_NO_EXIF=$LOG_PATH$LOG_NAME"_NO_EXIF.log" LOG_FILE_ADDED_DATE=$LOG_PATH$LOG_NAME"_DATE_ADDED.log" fi { ########################################################################################### # recherche des fichiers # ########################################################################################### #find "$rep" -iname "*.jpg" -o -iname "*.bmp" -o -iname "*.png" ! -path "*/#recycle/*" ! -path "*/@*" | find "$rep" -iname "*.jpg" ! -path "*/#recycle/*" ! -path "*/@*" | while read line do ########################################################################################### # on recuper le nom du fichier # ########################################################################################### filename=${line##*/} filename=${filename%.*} year=0 echo "nom du fichier" echo $line echo "date de year par defaut: $year" ########################################################################################### # recuperation de la date du fichier # ########################################################################################### #local data_info IFS=': ' set $(exiv2 -g Exif.Photo.DateTimeOriginal -Pv "$line") #read data_info <<< "$(exiv2 -g Exif.Image.DateTimeOriginal -Pv "$line")" #echo $data_info | tee -a /volume1/Temp/errorlevel.log # test de recuperation du errorlevel unset IFS year=$1 month=$2 day=$3 hour=$4 minute=$5 second=$6 echo "date de year apres demande exif : $year" #echo $year | tee -a /volume1/Temp/errorlevel.log #on recupere l'exif #Exiv2::ExifData &exifData = image->exifData() ########################################################################################### # si le fichier n'a pas de date # ########################################################################################### # test valeur de year ($1) # echo $1 1>&2 /volume1/Temp/date.log if [ -z $1 ] || [ $1 == "0000" ] || [ -z $year ]; then echo "on va essayer de le renommer" ########################################################################################### # est ce qu'on ajoute la date au fichier # ########################################################################################### if [ "$ADD_DATE_IN_PHOTO" == "Oui" ] || [ "$ADD_DATE_IN_PHOTO" == "Yes" ] || [ "$ADD_DATE_IN_PHOTO" == "Y" ] || [ "$ADD_DATE_IN_PHOTO" == "O" ]; then ########################################################################################### # on ajoute la date au fichier # ########################################################################################### #on recupere le nom du dossier parent parentpath=$(dirname "$line") parentdir=$(basename "$parentpath") #on isole l'année le mois et la jour du dossier parent / dossier type 2014-12-31 foldyear="${parentdir:0:4}" foldmonth="${parentdir:5:2}" foldday="${parentdir:8:2}" # au cas ou le dossier ne soit pas bien nommer # on verifie que les valeurs recuperer soit bonne echo "date du dossier parent : $foldyear-$foldmonth-$foldday" if [ "$foldyear" -lt 9999 ] && [ "$foldyear" -gt 0001 ]; then foldyearok=$foldyear if [ "$foldmonth" -lt 12 ] && [ "$foldmonth" -gt 01 ]; then foldmonthok=$foldmonth else foldmonthok=$DEFAULT_MONTH fi if [ "$foldday" -lt 31 ] && [ "$foldday" -gt 01 ]; then folddayok=$foldday else folddayok=$DEFAULT_DAY fi #on rajoute la date au fichier echo "affiche la date confirmer avant ajout au fichier : $foldyearok-$foldmonthok-$folddayok $DEFAULT_TIME" #echo "$foldyearok-$foldmonthok-$folddayok $DEFAULT_TIME" | tee -a /volume1/Temp/errorlevel.log #ligne suivante a mettre uniquement apres un test de manque de Exif.Image.DateTime #exiv2 -M"add Exif.Image.DateTime $foldyearok:$foldmonthok:$folddayok $DEFAULT_TIME" "$line" exiv2 -M"add Exif.Photo.DateTimeOriginal $foldyearok:$foldmonthok:$folddayok $DEFAULT_TIME" "$line" #ligne suivante a mettre uniquement apres un test de manque de Exif.Photo.DateTimeDigitized #if [ -z $(exiv2 -g Photo.DateTimeDigitized -Pv "$line")]; # echo "on ajoute Photo.DateTimeDigitized" # then exiv2 -M"add Exif.Photo.DateTimeDigitized $foldyearok:$foldmonthok:$folddayok $DEFAULT_TIME" "$line" #fi else echo "dossier pas pris en compte" echo "dossier mal nommé pour: " $line | tee -a $LOG_FILE_ADDED_DATE fi else ########################################################################################### # on log pour savoir qui n'a pas de date # ########################################################################################### echo "no Exif data found in: "$line | tee -a $LOG_FILE_NO_EXIF echo "pas de exif dans le fichier" fi else ########################################################################################### # on test si le fichier porte deja un nom correct # ########################################################################################### case $filename in "$1-$2-$3_$4-$5-$6"*) echo "not remaning $line" echo "on renomme pas le fichier est deja bon" : le nom est OK ;; *) ########################################################################################### # on renomme le fichier # ########################################################################################### echo "renaming $line" exiv2 -fF -r "%Y-%m-%d_%H-%M-%S" "$line"; # essayer avec :parentname echo "le fichier est renommer" ;; esac fi echo "_______________________________________________________________________________________________________________________________________________________________" done #echo "_______________________________________________________________________________________________________________________________________________________________" | tee -a /volume1/Temp/errorlevel.log ########################################################################################### # creation fichier log # ########################################################################################### } > "$LOG_FILE" 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nexius2 Posté(e) le 30 octobre 2014 Auteur Partager Posté(e) le 30 octobre 2014 (modifié) ouf, j'arrive enfin a avoir quelque chose de fonctionnel..... au detail pret que l'outil exiv2 ne lit pas tout les formats et me retourne beaucoup d'erreur sur des photos prisent avec des nikon ou d'autre type d'appareil..... il faut que je test exiftool pour voir si c'est mieux.... mais du coup, je pense de plus en plus a faire une sorte de package... faudrait que je regarde en parallele si on peux ajouter des programme dans les packages et quel serait alors le meilleur language pour ce genre de taches.... Modifié le 30 octobre 2014 par nexius2 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.