Freitag
25. April 2008
fortune

Das Computerprogramm Fortune zeigt fortune cookies (Glückskekse) und andere humorvolle Aphorismen an. Die fortune cookies werden in indizierten Textdateien im Verzeichnis /usr/share/fortune gespeichert. Neben Quellen aus dem Internet kann man natürlich auch eigene fortune cookies bereitstellen.

In einer Textdatei werden die fortune cookies durch Zeilen getrennt, die nur ein "%"-Zeichen enthalten. Mittels /usr/sbin/strfile wird die Datei indiziert.

Beispiel

%
Erster dummer Spruch
%
Zweiter dummer Spruch
%
Dritte dummer Spruch
%
Vierter dummer Spruch

Mittels /usr/sbin/strfile <spruechefile> <spruechefile>.dat wird ein Index auf die Datei erzeugt.

Eine Witzesammlung aus dem Netz in fortune cookies umwandeln

Auf www.haha.at gibt es viele deutschsprachige Witze. Mit dem folgenden Script laden Sie alle Witze von www.haha.at herunter und wandeln sie in das für fortune benötigte Format um. Die Umwandlung der html-Dateien erfolgt mit sed. Die sed-Befehle sind, weil etwas umfangreicher, in zwei Dateien, ~/bin/sed/haha.sed und ~/bin/sed/htmluml2chr.sed, abgelegt.

Wer dies ausprobieren will, der lade sich die Dateien haha-witze(.txt), haha.sed und htmluml2chr.sed herunter und speichere sie in den Verzeichnissen ~/bin/ bzw. ~/bin/sed/. Das Script legt die Witze im aktuellen Verzeichnis ab, daher sollte ein (neues) Verzeichnis für die Witze angelegt werden, in dieses Verzeichnis gewechselt (cd NeuesVerzeichnis) und haha-witze ausgeführt werden. (chmod +x ~/bin/haha-witze nicht vergessen oder mit sh haha-witze starten.) Anschließend kopieren sie die Witze-Dateien mit root-Rechten (sudo cp * /usr/share/fortune/) in das Verzeichnis für die fortune cookies.

Mit fortune [Witzkategorie] rufen Sie gezielt Witze aus der entsprechenden Kategorie ab.

Beispiel

thomas@r1:~/NeueWitze> fortune Kinder
Klein Fritzchen kommt in die Apotheke und fragt: "Ich haette gerne eine Creme."
Darauf der Apotheker: "Ja haettest du gerne ein After Shave?" Darauf Fritzchen: "Nein, nein, schon fuer das Gesicht!"

haha-witze

#! /bin/bash
#
# QaD Script zum Laden der Witze von www.haha.at und umsetzten in
# fortune(6) files.

# Die fortune(6) Dateien werden im aktuelle Verzeichnis angelegt.

# 1. Schritt: Laden des Index der Witze,
# 2. Schritt: Extrahieren der Witzkategiorien und -anzahlen mit sed
# 3. Schritt: Holen der Witze mit getwitze kategorie anzahl
# (Eine Witzkategorie muss mindestens 3 Zeichen lang sein.)

function getwitze() {

test -e $1 && rm $1

for ((j=0; j<$2; j+=10))
do 
   wget --directory-prefix=$1/ \
	--output-document=- \
	http://www.haha.at/witze/witze/$1/$j \
   | sed -f $HOME/bin/sed/haha.sed \
   | sed -f $HOME/bin/sed/htmluml2chr.sed >>./$1

done

/usr/sbin/strfile ./$1

}

KAT="None"
ANZ=0
wget --output-document=- http://www.haha.at/witze/index.php \
| sed -n 's!^<a.*/\([^/]\{3,\}\)/"[^(]*(\([0-9]*\)).*!\1 \2!p' \
| until [ -z "$ANZ" ] ; \
do \
	read KAT ANZ ; \
	getwitze $KAT $ANZ ; \
done

$HOME/bin/sed/htmluml2chr.sed

s/&auml;/ae/g
s/&ouml;/oe/g
s/&uuml;/ue/g
s/&Auml;/Ae/g
s/&Ouml;/Oe/g
s/&Uuml;/Ue/g
s/&quot;/"/g
s/&szlig;/sz/g

$HOME/bin/sed/haha.sed

1,/linksrechts/d 
/option/d
/pagertable/,/<\/body>/d
s!^<hr .*<\/a>!!
s!<div>!%!
s!<br[^>]*>!\n!g
/^$/ d 
1 d 
/<\/div>/,$ d

Kategorie: Linux Tipps

... comment ...bereits 835 x gelesen