Et si on prenait des photos à intervalles réguliers et qu’on les mettait en ligne? Pourquoi faire? Pour faire de la vidéo surveillance, monter un film stop-motion ou retrouver qui a volé votre Mac par exemple. Si vous avez un Mac équipé d’une webcam, c’est facile.
Prendre des photos en ligne de commande
Tout d’abord, téléchargez ImageSnap et mettez-le dans /usr/local/bin
par exemple. N’importe quel dossier dans votre PATH
fera également l’affaire.
Uploader l’image vers un serveur
Ensuite, créez un fichier snap.sh
avec le code suivant:
#!/bin/sh upload="http://example.com/upload.php" imagesnap snapshot.jpg curl -F "photo=@snapshot.jpg" $upload
Vous pouvez mettre de dossier où vous voulez, dans votre dossier personnel par exemple. Ce script permet de prendre une photo, et de l’uploader vers http://example.com/upload.php en POST avec CURL.
Récuperer l’image uploadée et la stocker
Maintenant, mettez sur votre serveur le script PHP upload.php
suivant. Il permet de récupérer l’upload et de stocker l’image sur le serveur. Créez également un dossier img à côté de votre script. C’est dans ce dossier que seront mises les photos.
<?php $path = dirname(__FILE__).'/img'; $year_folder = $path . '/' . date('Y'); if (!is_dir($year_folder)) { mkdir($year_folder); } $month_folder = $year_folder . '/' . date('m'); if (!is_dir($month_folder)) { mkdir($month_folder); } $day_folder = $month_folder . '/' . date('d'); if (!is_dir($day_folder)) { mkdir($day_folder); } $file_path = $day_folder . '/' . date('Ymd-His') . '_' . $_SERVER['REMOTE_ADDR'] . '.jpg'; if (move_uploaded_file($_FILES['photo']['tmp_name'], $file_path)) { echo "OK\n"; } else { echo "Error\n"; }
Notez que les photos seront stockées dans des dossiers comme dans cet exemple: img/2010/02/17/20100210-120000_127.0.0.1.jpg. Le fichier comporte donc la date, l’heure et l’IP d’où la photo est envoyée.
Automatiser la tâche
Une fois que tout est en place, il suffit d’exécuter snap.sh
pour prendre la photo et l’uploader. Pour automatiser ça, on peut ajouter cette action dans cron. Pour cela, faites :
crontab -e
et ajoutez la ligne suivante (à adapter selon l’emplacement de snap.sh):
0 * * * * /Users/mauricesvay/snap.sh
Voilà. Votre mac prendra des photos toutes les heures pour les mettre sur votre serveur. Facile.
3 replies on “Prendre régulièrement une photo avec son Mac et l’uploader”
Merci pour l’astuce. 😉
P.S. : faudrait que tu actives l’antispam dans ton DC2, certains billets sont submergés. akismet fonctionne très bien.
Existe-t-il un outil similaire pour Gnu/Linux ?
NB : ça fait vraiment plaisir de voir des billets ici 🙂
J’avais complètement raté ton retour sur ce blog… Voila qui est réparé.
Ravi de te voir réécrire ici, et le redesign est prometteur 🙂