-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrae
More file actions
109 lines (98 loc) · 3.06 KB
/
rae
File metadata and controls
109 lines (98 loc) · 3.06 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/bash
# RAE-CLI 0.17, consulta el Diccionario de la RAE desde la terminal.
# Función de ayuda
mostrar_ayuda() {
cat <<EOF
RAE-CLI 0.17, consulta el Diccionario de la RAE desde la terminal.
Uso:
$0 [PALABRA] -> Muestra la primera definición de la palabra.
$0 -t [PALABRA] -> Muestra todas las definiciones de la palabra.
$0 -c [PALABRA] -> Conjugaciones (si existen).
$0 -a [PALABRA] -> Anagramas de la palabra.
$0 -A -> Palabra aleatoria.
$0 -d -> Palabra del día.
$0 -E [LETRAS] -> Lista palabras que empiecen con LETRAS.
$0 -T [LETRAS] -> Lista palabras que terminen con LETRAS.
$0 -C [LETRAS] -> Lista palabras que contengan LETRAS.
$0 --ayuda -> Muestra esta ayuda.
Las definiciones son propiedad de la RAE, este script solo facilita su consulta vía terminal.
Envíe información sobre errores y sugerencias a <sardach@uwu.mx>.
EOF
}
# Verificar si elinks está instalado
if ! command -v elinks &> /dev/null; then
echo "Elinks no está instalado. Por favor, instálalo para usar este script."
exit 1
fi
# Función para obtener texto de la RAE
obtener_texto() {
elinks -dump -no-numbering -no-references "https://dle.rae.es/$1"
}
# Función para obtener HTML crudo de la RAE
obtener_html() {
elinks -source "https://dle.rae.es/$1"
}
# Filtrar definiciones relevantes
filtrar_definiciones() {
echo "$1" | sed -n '/Caixa/,/Palabra del día/ {
/Caixa/d
/Palabra del día/d
/•/d
/Artículo/d
/Conjugación/d
/Sinónimos o afines/d
/Antónimos u opuestos/d
p
}'
}
# Validar que se proporcionaron argumentos
[ -z "$1" ] && { echo "Faltan argumentos. Usa --ayuda para más información."; exit 1; }
# Procesar opciones
case "$1" in
--ayuda)
mostrar_ayuda
;;
-c)
texto=$(obtener_texto "$2")
echo "$texto" | sed -n '/^Conjugación de/,/^Sinónimos/ { /Sinónimos/!p }'
;;
-E)
texto=$(obtener_texto "$2?m=31")
echo "$texto" | sed -n '/Listado de lemas que/,/Anterior/p' | sed '/Palabra del día/,$d'
;;
-T)
texto=$(obtener_texto "$2?m=32")
echo "$texto" | sed -n '/Listado de lemas que/,/Anterior/p' | sed '/Palabra del día/,$d'
;;
-C)
texto=$(obtener_texto "$2?m=33")
echo "$texto" | sed -n '/Listado de lemas que/,/Anterior/p' | sed '/Palabra del día/,$d'
;;
-a)
texto=$(obtener_texto "$2?m=anagram")
echo "$texto" | sed -n '/Anagramas/,/Anterior/p' | sed '/Palabra del día/,$d'
;;
-A)
w=$((RANDOM % 100001))
pagina=$(obtener_texto "?w=$w&m=random")
filtrar_definiciones "$pagina"
;;
-d)
html=$(obtener_html "?")
palabra_del_dia=$(echo "$html" | sed -n 's/.*<span class="c-word-day__word">\([^<]*\)<\/span>.*/\1/p')
if [ -n "$palabra_del_dia" ]; then
definiciones=$(obtener_texto "$palabra_del_dia")
filtrar_definiciones "$definiciones"
else
echo "No se pudo determinar la palabra del día."
fi
;;
-t)
pagina=$(obtener_texto "$2")
filtrar_definiciones "$pagina"
;;
*)
texto=$(obtener_texto "$1")
filtrar_definiciones "$texto" | sed '/2./,$d'
;;
esac