**IMPORTANT: cette idée et le code qui en résulte ont été pondus un samedi soir 23h30 après deux verres d'alcool à 21° en conjoncture avec un certain ennui et seulement 2 heures de code/test. Bref c'est une horreur, mais l'idée à la base n'est pas mauvaise. Soyez libres de développer ça :-)**
* machine Debian/Ubuntu
* cutycapt
* xvfb
* php5-cli
* php5-cgi
Structure des fichiers:
* /
* /db/
* /work/
* /index.php
* /webcapt.run
Principe de base: on appelle index.php avec une URL en paramètre GET, index.php passe l'URL via fichier dans /work/ à webcapt, ce dernier génère des captures d'écran PNG et SVG avec cutycapt, renomme selon hash sha1 de l'URL et déplace dans /db/, index.php enfin redirige vers le fichier s'il existe.
Intérêt: combiné à un Autoblog, fournir un instantané en image de la page autobloguée (permettant ainsi de sauvegarder le design et extraire d'autres éléments de la page grâce au SVG ouvert dans Inkscape)
Bémols:
* ça bouffe pas mal de ressources, la génération de captures d'écran.. d'où le forbidden qui limite les IP pouvant appeler le script
* un entrecroisement PHP/Bash assez moche avec une passation de données ridicule (via nom d'un fichier avec un "for file in *")
* vous en connaissez beaucoup, vous, d'hébergeurs mutualisés qui autorisent exec() ? Niveau sécu c'est assez horrible
* ...
====== ** Le code** ======
----
#!/bin/bash
mkdir -p "work"
mkdir -p "db"
cd "work/"
for file in *; do
url=$(echo "$file" | base64 -d); urlhash=$(php -r "echo sha1(\"$url\");")
xvfb-run --server-args="-screen 0, 1280x720x24" cutycapt --url=$url --private-browsing=on --user-agent="Mozilla/5.0 (X11; U; Linux x86_64; C) CutyCapt" --header=DNT:1 --min-width=1280 --min-height=720 --out="$file.svg"
xvfb-run --server-args="-screen 0, 1280x720x24" cutycapt --url=$url --private-browsing=on --user-agent="Mozilla/5.0 (X11; U; Linux x86_64; C) CutyCapt" --header=DNT:1 --min-width=1280 --min-height=720 --out="$file.png"
rm "$file"
mv "$file.svg" "../db/$urlhash.svg"
mv "$file.png" "../db/$urlhash.png"
done