#!/bin/sh
# vim:ft=sh:fileencoding=utf-8
# 
# Copyright (c) Phillip Berndt, 2007
#
# Zum Rendern der Webseiten wird Opera verwendet.
#
# Beispiel für die Nutzung z.B. aus Python heraus:
#  >>> import time
#  >>> def loadImg(url):
#  ...     file = open("urlscrot", "r+")
#  ...     file.write("%s\n" % url)
#  ...     file.flush()
#  ...     time.sleep(1)
#  ...     return file.readline().strip()
#  ... 
#  >>> loadImg("http://www.google.de")
#  './fileiLNzoh.png'
#
# Alternativ dieses Script mit URL als Parameter aufrufen
#

# Benötigte Tools suchen
for program in opera Xvfb convert tempfile import; do
	which ${program} &>/dev/null || { echo "Das Programm ${program} wurde nicht gefunden."; exit; }
done

# Parameter laden
if [ $# -gt 0 ]; then
	echo "$@" > urlscrot
else
	mkfifo urlscrot &>/dev/null
fi

# Umgebung vorbereiten
export DISPLAY=:1
Xvfb :1 -ac -screen 0 1024x5000x16 &>/dev/null &
XPID=$!
sleep 2
opera -k -nodownload -nopanel -nomenu -noprint -nosave -nosplash -resetonexit -nosession &>/dev/null &
sleep 1
quitter() { kill ${XPID}; rm urlscrot; exit; }
trap quitter 1 2 3 6 15

# Screenshots erstellen
while true; do
	exec 5<>urlscrot
	read -u5 URL
	echo "Loading $URL"
	opera -remote "openURL(${URL})" &>/dev/null &
	sleep 5
	FILENAME=$(tempfile -d . -s .png)
	import -window root ${FILENAME}
	convert ${FILENAME} -crop 1024x5000+0+35 ${FILENAME}
	convert ${FILENAME} -trim +repage ${FILENAME}
	convert ${FILENAME} -trim +repage ${FILENAME}
	convert ${FILENAME} -trim +repage ${FILENAME}
	echo "Saved to ${FILENAME}"
	echo ${FILENAME} >&5
	exec 5>&-

	[ -f urlscrot ] && quitter
done
