blob: 0daf3233860e8e76928dedea884206022a1422b8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
#!/bin/bash
# text datei mit pokemons
FILE="POKEMON"
# url zum (poke-)wiki
WIKI="http://pokewiki.de/"
# speicherpfad für heruntergeladenen webseiten
SAVEPATH="./"
### CONF ENDE ###
# teste ob textdatei angegeben wurde
if [ ! -f $FILE ]; then
echo "'$FILE' not a file." 1>&2
exit 1
fi
# teste ob wiki url angegeben wurde
if [ -z "$WIKI" ]; then
echo "No URL given." 1>&2
exit 1
fi
# bestimme anzahl der schleifen iterationen
LINES=$(wc -l "$FILE" | cut -d ' ' -f 1)
if [ $LINES == 0 ]; then
echo "$FILE has 0 lines." 1>&2
exit 1
fi
for ((i=1;i<=$LINES;i++)); do
# lese pokemon aus der textdatei aus
#POKEMON=$(cut -f2 -s "$FILE" | sed -n ${i}p)
# mit awk geht das viel besser
POKEMON=$(awk '{print $2}' "$FILE" | sed -n ${i}p)
# teste, ob datei früher schon einmal heruntergeladen wurde
if [ -f "$POKEMON.txt" ]; then
read -p "$(tput setaf 1)Warnung! $(tput bold)$POKEMON.txt$(tput sgr0) $(tput setaf 1)existiert schon. Sollen die Informationen überschrieben werden?$(tput sgr0) [Y/n] " answer
if [ "x$answer" == "xn" ]; then
continue
fi
fi
echo "Lade Informationen zu $(tput setaf 3)'$POKEMON'$(tput sgr0) runter."
# speichere datei in textdatei
if ! elinks -dump "${WIKI}${POKEMON}" > "${SAVEPATH}${POKEMON}.txt"
# das funktioniert nicht bei 40x http header!
then
echo "Elinks failte bei ${WIKI}${POKEMON}" 1>&2
exit 1
fi
# extrahiere 'Statuswerte'
grep -A 9 -i 'Maxwerte' "${SAVEPATH}${POKEMON}.txt" | sed 's/\[[0-9]*\]/ /g' >> "${SAVEPATH}${POKEMON}.statuswert.txt"
# extrahiere 'Fähigkeiten'
# in welcher Zeile kommt 'Typen' vor
FIRSTLINE=$(grep -m 1 -E -n 'Typ' "${SAVEPATH}${POKEMON}.txt" | cut -d ':' -f1)
# in welcher Zeile kommt 'Fangen, Zucht, Training' vor
SECONDLINE=$(grep -m 1 -E -n 'Fangen, Zucht, Training' "${SAVEPATH}${POKEMON}.txt" | cut -d ':' -f1)
SECONDLINE=$((SECONDLINE=SECONDLINE-1))
# schneidet passenden bereich aus, ersetzt nummerierung und bild dateien
sed -n -e "$FIRSTLINE,${SECONDLINE}p" "${SAVEPATH}${POKEMON}.txt" | sed 's/\[[0-9]*\]//g' | sed 's/IC\.png[A-Za-z]*//g' >> "${SAVEPATH}${POKEMON}.faehigkeiten.txt"
# extrahiere ei-gruppen
grep -Ei '\]Ei-Gruppen' "${SAVEPATH}${POKEMON}.txt" | sed 's/\[[0-9]*\]//g' >> "${SAVEPATH}${POKEMON}.ei.txt"
# wechsle zu lynx für attacken
if ! lynx -dump -nolist "${WIKI}${POKEMON}" > "${SAVEPATH}${POKEMON}.txt"
# funktioniert bei auch bei 40x
then
echo "Lynx failte bei ${WIKI}${POKEMON}" 1>&2
exit 1
fi
# extrahiere attacken
# sed -n -e '/Folgende Attacken/,/durch TMs oder VMs/ p' "${SAVEPATH}${POKEMON}.txt" >> "${SAVEPATH}${POKEMON}.attacken.tmp.txt"
# sed -n -e '/6\. Generation/,/Fett hervorgehobene/ p' "${SAVEPATH}${POKEMON}.attacken.txt" >> "${SAVEPATH}${POKEMON}.attacken.txt"
FIRSTLINE=$(grep -m 1 -E -n 'Folgende Attacken' "${SAVEPATH}${POKEMON}.txt" | cut -d ':' -f1)
SECONDLINE=$(grep -m 1 -E -n 'durch TMs oder VMs erlernen' "${SAVEPATH}${POKEMON}.txt" | cut -d ':' -f1)
sed -n -e "$FIRSTLINE,${SECONDLINE}p" "${SAVEPATH}${POKEMON}.txt" | sed -n -e '/6\. Generation/,/Fett hervorgehobene/ p' | grep -v "✽" | sed 's/IC\.png [A-Za-z]*//g' | sed 's/ /\t/g' >> "${SAVEPATH}${POKEMON}.attacken.txt" >> "${SAVEPATH}${POKEMON}.attacken.txt"
done
|