Aucun message portant le libellé Bash. Afficher tous les messages
Aucun message portant le libellé Bash. Afficher tous les messages

lundi, octobre 27, 2014

Comment générer un histogramme des focales d'un ensemble de photos.

Je prévois acheter une nouvelle lentille pour ma caméra. Je sais que je veux une lentille rapide (au plus f2.8). Je veux aussi une lentille versatile qui couvrira une étendue maximale de longueur focale. Je sais que je ne peux avoir une lentille 18-200/2.8, ça n'existe pas. Je sais que je devrai me contenter d'une étendue plus restreinte.

Quel est le meilleur moyen de découvrir cet intervalle? Ayant toutes mes photos sur un de mes serveurs, je peux savoir quelle est la focale utilisée pour chacune d'entre elles à l'aide des données EXIF qui sont enregistrées dans le fichier de chacune des photos. Comme j'ai pas mal de photos, je ne peux faire ça manuellement, il faut automatiser.

C'est la que bash entre en jeu!

1ere étape, installer EXIF. Sous Ubuntu, rien de plus simple:
sudo apt-get install exif
2e étape, aller dans le répertoire qui contient les photos:
cd ~/Photos
3e étape, l'incantation magique:
sudo find . -iname DSC_????.JPG -print0 | xargs -0 -I {} exif -t 0x920a "{}" | grep Value | cut -d ' ' -f 4 | sort -n | uniq -c | awk '{print $2, $1}' > ~/Documents/histogrammefocale.txt
Cette étape mérite quelques explications:
  • sudo find . -iname DSC_????.JPG -print0 Trouve tout les fichiers qui correspondent au pattern des noms de fichier de mes caméras Nikon et les passe à l'étape suivante
  • xargs -0 -I {} exif -t 0x920a "{}" Extrait la longueur focale de la photo à partir des métadonnées EXIF du fichier et la passe a l'étape suivante
  • grep Value Ne garde la ligne que si elle contient "Value" et la passe à l'étape suivante
  • cut -d ' ' -f 4 Ne garde que la valeur de la focale et la passe à l'étape suivante
  • sort -n Trie toute les valeurs de focale en ordre croissant et les passe à l'étape suivante
  • uniq -c Prend la liste triée des focales et compte combien fois chaque focale est répétée. Le nombre d’occurrence suivie de la focale est retournée, une paire par ligne. ces valeurs sont passées à l'étape suivante
  • awk '{print $2, $1}' Inverse les 2 colonnes et les copies finalement dans le fichier ~/Documents/histogrammefocale.txt
Voilà donc comment je génère le fichier d'histogramme. par la suite il ne reste qu'à l'importer dans votre feuille de calcul préférée pour obtenir un beau graphique!



lundi, juin 25, 2007

Redémarer automatiquement KTorrent

KTorrent est instable sur la machine principale, il crashe aléatoirement. J'ai donc concocté ce petit script en Bash (que j'ai mis dans mon crontab) pour vérifier périodiquement si ça roule et redémarer quand ça roule pas (avec encore un peu d'information de débuggage):

date
let numktor=$(ps aux | awk '{print $11}' | grep -e "ktorrent" | wc -l)
echo `ps aux | awk '{print $11}' | grep -e "ktorrent" `
echo $numktor
if [ $numktor -eq 0 ];
then
echo "Equal to zero"
ktorrent
else
let numerr=$(ps aux | grep -e "--appname ktorrent" | grep -e "drkonqi" | wc -l)
echo `ps aux | grep -e "--appname ktorrent" | grep -e "drkonqi"`
echo $numerr
if [ $numerr -eq 1 ];
then
let numproc=$(ps aux | grep -e "--appname ktorrent" | grep -e "drkonqi" | awk '{print $2}')
echo $numproc
kill -KILL $numproc
ktorrent
fi
fi
echo

Jusqu'à maintenant, so far so good...