Gestionnaire de Photos

Notre but va être de réaliser un outil permettant de renommer les photos en fonction de la date et de l'heure de prise de vue.

Phase préparatoire

Ce projet est à réaliser sur une machine Linux ubuntu.
Vous aurez besoin de l'outil exif qui est disponible sous linux ubuntu.
Pour l'installer, depuis une machine ayant accès à internet et sur laquelle le proxy de l'université a été définir :
apt-get update
apt-get install exif
Vous devrez ensuite récupérer le fichier suivant : photos.zip
désarchivez le.
regardez ensuite ce que vous donne la commande exif -i appliquée à une photo :
exif -i DSCF2734.JPG
Marqueurs EXIF dans'DSCF2734.JPG' (ordre des octets 'Intel') :
------+------------------------------------------------------------------------
Marque|Valeur
------+------------------------------------------------------------------------
0x010f|FUJIFILM
0x0110|FinePix F30   
0x0112|Top-left
0x011a|72
0x011b|72
0x0128|pouces
0x0131|Digital Camera FinePix F30     Ver1.00
0x0132|2006:11:19 17:40:44
0x0213|Co-sited
0x8298|[Aucun] (Photographe) -  (Editeur)
0xc4a5|28 bytes undefined data
0x0103|Compression JPEG
0x0112|Top-left
0x011a|72
0x011b|72
0x0128|pouces
0x0213|Co-sited
0x829a|1/210 sec.
0x829d|f/2,8
0x8822|Programme normal
0x8827|200
0x9000|Exif version 2.2
0x9003|2006:11:19 17:40:44
0x9004|2006:11:19 17:40:44
0x9101|Y Cb Cr -
0x9102|2,0
0x9201|7,76 EV (1/216 sec.)
0x9202|3,00 EV (f/2,8)
0x9203|4,86 EV (99,50 cd/m²)
0x9204|0,00 EV
0x9205|3,00 EV (f/2,8)
0x9207|Motif
0x9208|Inconnu
0x9209|Flash did not fire, compulsory flash mode
0x920a|8,0 mm
0x927c|354 bytes undefined data
0xa000|FlashPix version 1.0
0xa001|sRGB
0xa002|3024
0xa003|2016
0xa20e|3932
0xa20f|3932
0xa210|Centimère
0xa217|Sonde de couleur à un capteur
0xa300|DSC
0xa301|Directly photographed
0xa401|Processus normal
0xa402|Exposition automatique
0xa403|Balance des blancs automatique
0xa406|Standard
0xa40a|Normal
0xa40c|Inconnu
0x0001|R98
0x0002|0100
------+------------------------------------------------------------------------
Les données EXIF contiennent une vignette (8388 octets).

L'entrée 0x9003 nous donne la date/heure de prise de vue (cf http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif/datetimeoriginal.html).
C'est celle que nous allons utiliser.

Premier travail

Dans un premier temps, on vous demande d'écrire une fonction prenant un nom de fichier (chemin inclus) en paramètre et le renommant sous la forme aaaa-mmjj-hhmmss-nom.
Ainsi, la photo de l'exemple ci-dessus sera renommée en 2006-1119-174044-DSCF2734.JPG.

second travail

On vous demande d'écrire une fonction capable de traîter tous les fichiers d'un dossier fourni en argument, fichier dont le nom commence par l'expression DSCF et qui sont des fichiers jpeg.
Indication: pensez à la commande file plutôt que de vous fier à l'extension du nom de fichier.

troisième travail

écrire une fonction capable d'effectuer le traîtement ci-dessus sur les fichiers d'un dossier mais aussi récursivement sur les dossiers inclus dans le dossier fourni en argument et ainsi de suite.

quatrième travail

Utilisez les fonctions ci-dessus pour réaliser un script de traitement de noms de fichiers photos. Votre script aura comme arguments l'option -R si le traitement doit être récursif, les noms des fichiers ou dossiers à traiter et toute option qui vous paraîtra utile (par ex. on devrait pouvoir préciser le modèle des noms de fichiers à traîter car certains appareils photos ne génèrent pas de fichiers dont le nom commence par DSCF mais par P).

à rendre :

une démonstration de votre travail devra être réalisée devant l'enseignant qui vous encadre.