blob: fb812516ff8b7dda9bcacf6adc0a1454e8ef55c4 (
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
|
#! /bin/sh
# usage: dic WORD [LANG]
# where LANG may be one of en, fr, es, it, ch, ru, pt, pl
# multiple WORDs may be seperated by + like this: multiple+words
set -euf
main() {
case $# in
1|2) :;; # ok
*) usage; exit 23;;
esac
search=$1
lang=de
lp=${2-en}de
GET | simplify | tac
}
GET() {
curl -sS -b 'LEOABTEST=T; browser=webkit%3B5%3Bajax' \
"https://dict.leo.org/dictQuery/m-vocab/$lp/query.xml?tolerMode=nof&lp=$lp&lang=$lang&rmWords=off&rmSearch=on&search=$search&searchLoc=0&resultOrder=basic&multiwordShowSingle=on"
}
simplify() {
sed '
s|<repr\( [^>]*\)>|\nREPR: |g
s|</repr>|\n|g
' | grep ^REPR |
sed '
s/^REPR: //
1~2{s/$//}
2~2{s/$//}
' |
tr -d \\n |
sed '
s// [38;5;237m-[m /g
s//\n/g
s|</\?m\>[^>]*>||g
s|</\?sr\>[^>]*>||g
s|</\?t\>[^>]*>||g
#q
s/⇔/⇔/g
s/ / /g; #
s/ */ /g
# <!-- undefined_translation: en:pl_ext -->
s/ *<!--[^>]*-->//g
s|<i> *|/|g
s| *</i>|/|g
s:<sup>1</sup>:¹:g; s:<sup>2</sup>:²:g; s:<sup>3</sup>:³:g;
s:<sup>:^(:g
s:</sup>:):g
s:<sub>0</sub>:₀:g;
s:<sub>1</sub>:₁:g; s:<sub>2</sub>:₂:g; s:<sub>3</sub>:₃:g;
s:<sub>4</sub>:₄:g; s:<sub>5</sub>:₅:g; s:<sub>6</sub>:₆:g;
s:<sub>7</sub>:₇:g; s:<sub>8</sub>:₈:g; s:<sub>9</sub>:₉:g;
s:<sub>:_(:g
s:</sub>:):g
s:<b> *:[;4m:g
s: *</b>:[m:g
s|<small> *||g
s| *</small>||g
s|<domain> *|[38;5;238m|g
s| *</domain>|[m|g
# "Verbtabelle" and plural
s:<flecttabref> *:[38;5;248m:g
s: *</flecttabref>:[m:g
'
}
usage() {
sed -rn '/^# usage:/,/^[^#]/{/^#/{s/# //;p}}' "$0" >&2
}
main "$@"
|