Búsqueda de palabras en la RAE en línea de comandos

He fabricado un script (un lote de comandos) de bash shell en Linux para descargar y juguetear con búsquedas en la RAE, ya que resulta complicado pedir que tengan la deferencia de hacerla disponible para el público, como si la RAE fuese un organismo público pagado con dinero público.

Es el paso intermedio entre buscar una palabra y descargarme el diccionario completo palabra a palabra. Ahora toca hacer un pequeño programita que lo invoque para cada una de las palabras que tecleé para el proyecto de Isidoro Valcárcel Medina hace unos años y traiga sus definiciones.

Lo he llamado buscaenrae.sh.

Esta versión está modificada sobre la que publiqué hace unos días para subsanar errores relacionados con las palabras que contienen varias entradas/acepciones (no es lo mismo acepciones que entradas y soy consciente de ello, pero no es importante), así como para retirar las conjugaciones en los verbos.

#!/bin/bash

### FUNCIONES ÚTILES PARA EL PROGRAMA
# uso() Instrucciones del programa y salida en caso de error.
uso () {
  echo "Uso: $0 salida palabra"
  echo -e "\tsalida es un valor númerico que identifica:"
	echo -e "\t[0] para generar un archivo HTML con la respuesta"
	echo -e "\t[1] para generar un archivo TXT  con la respuesta"
	echo -e "\t[2] para generar una línea  TXT  con la respuesta"
  exit
}
f_verbos="00000_VERBOS.txt"
f_errores="00000_ERRORES.txt"

# CONTROL DE ENTRADA DE VARIABLES y ASIGNACIÓN
if [ $# -lt 2 ]
then
  # Reportar uso inapropiado
  uso
else
  salida=$1
  if [ $# -eq 2 ]; then
    palabra="$2"
  elif [ $# -eq 3 ]; then 
    palabra="$2 $3"
  elif [ $# -eq 4 ]; then 
    palabra="$2 $3 $4"
  elif [ $# -eq 5 ]; then 
    palabra="$2 $3 $4 $5"
  fi
  # echo "Palabra es #$palabra#"
fi

# CONSULTA DEL SERVIDOR de la RAE simulando ser uno de los diversos navegadores posibles
navegador=(
  "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
  "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:77.0) Gecko/20100101 Firefox/77.0"
  "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:77.0) Gecko/20190101 Firefox/77.0"
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
)
rnd=`echo $(($RANDOM%${#navegador[@]}))` # Elegimos un navegador al azar
# Hacemos la petición a la web de la RAE
curl -s --user-agent "${navegador[$rnd]}" https://dle.rae.es/"$palabra" > ./"$palabra.html"

# PROCESAMOS EL ARCHIVO OBTENIDO (Cortamos, retiramos lo innecesario, etc)
# Si se trata de un verbo, quitar las conjugaciones
id_conjugacion="
" esunverbo=`grep -c "$id_conjugacion" ./"$palabra.html"` if [ $esunverbo -gt 0 ] then echo "$palabra es un verbo" >> $f_verbos # ELIMINAMOS la(s) CONJUGACIÓN(ES) sed -i "/${id_conjugacion}/d" ./"$palabra.html" fi # Si tiene más de una acepción (Calcular cuántas después de saber si es un verbo) id_acepcion="
" num_acepciones=`grep -c "$id_acepcion" ./"$palabra.html"` # Si no tiene acepciones, la palabra no existe. No continuamos. if [ $num_acepciones -eq 0 ] then echo "$palabra no se ha encontrado en la RAE" >> $f_errores rm "./$palabra.html" exit fi # PARTIR en $num_acepciones EL FICHERO $palabra.html" # acepciones y acepciones_fin son 2 arrays de líneas PRECISO CONVERTIRLOS a cortes[] acepciones=`grep -n "$id_acepcion" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'` c=0 for i in $acepciones do let cortes[$c]=$(($i)) let c=$(($c+1)) done acepciones_fin=`grep -n "$id_acepcion_fin" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'` c=0 for i in $acepciones_fin do let cortes_fin[$c]=$(($i)) let c=$(($c+1)) done # GENERA FICHEROS palabra.X.html por cada ACEPCIÓN for (( i=0; i<$num_acepciones; i++ )) do # echo "El comienzo del corte está en ${cortes[$((i))]}" # echo "El fin del corte está en ${cortes_fin[$((i))]}" sed "${cortes[$((i))]},${cortes_fin[$((i))]} !d" "./$palabra.html" > "./$palabra.$i.html" # Distintas salidas del programa, en función de la variable "salida" if [ $salida -gt 0 ] # Salida a modo TXT then w3m "./$palabra.$i.html" > "./$palabra.$i.txt" if [ $salida -gt 1 ] # En una sóla línea then sed ':a;N;$!ba;s/\n/ /g' "./$palabra.$i.txt"|sed 's/ / /g' > "./$palabra.$i.1linea" fi fi done # BORRAR indica si dejar o no los archivos que no se deseen como salida BORRAR=1 if [[ $BORRAR -eq 1 ]] && [[ $salida -gt 0 ]] then rm "./$palabra."*html if [ $salida -eq 2 ] then rm "./$palabra."*txt fi fi # SALIDA FORZADA exit

Las primeras pruebas las he realizado con la palabra palabra, como debe ser.

buscaenrae.sh 2 palabra

0 1 2

números entre corchetes
avanzan hacia infinitos
insondables
perdiendo la palabra
que nunca quisieron sostener
en el horizonte de una contraseña

el destornillador
atrona el silencio
con gritos de luz azul

son órdagos del tiempo
anudados en cordones
de lana muerta

0 1 2
a la orilla del mar
a la orilla del mal
a la orilla

dejándose llevar por olas de indiferencia

Supongamos un niño o una niña adimensional

Supongamos un niño o una niña adimensional (que ocupa menos espacio, obviamente, que su equivalente real) que ha de mantener una distancia de seguridad de radio 1,5 metros.

Eso supondría un área de aproximadamente pi por r al cuadrado cada niño/a. Comparando eso con el área de una clase promedio podemos saber si cabrían 20 alumnos en el espacio destinado para ellos/as (suponiendo ninguna pérdida de espacio entre niños/as, no entre niñas/os y paredes)

π×(1,5)2×20=141,371669411541 m2.

¿Cuál es el área promedio de un aula de instituto público de Madrid?

Dobles negaciones

He perdido otro valioso rato de mi vida leyendo un texto de un médico jubilado que escribía una carta abierta en una red social a algún ministro o cargo sanitario que según él está gestionando muy mal este periodo pandémico o plandémico o como quieran llamarlo. No entro a valorar este tema del que me considero un total ignorante ni quiero perder mi tiempo con estadísticas que no sé contextualizar, ni con informes médicos que no quiero conocer (no tengo el nivel suficiente para comprender).

Pero cuando leo estas frases, pierdo el respeto a quien las firma:

Yo no soy ningún negacionista, al contrario; “Afirmo la falta de evidencias científicas en muchas de las medidas que ustedes llaman sencillas y esenciales”, y niego la existencia de datos irrefutables que las justifiquen”.

He marcado en negritas (o blanquitas) las palabras que me han llamado la atención:

«no soy ningún negacionista»: no puede tener más palabras «negativas». Veamos: «no» y «ningún», ¿Esta doble negación tan característica del idioma español significa en realidad SÍ? En caso de que no sea el caso (jejeje) lo que está diciendo (sin el ningún se entiende mejor) «no soy negacionista».

Y aquí llega lo mejor, «al contrario»: es decir, negando lo anterior…

«afirmo la falta»: lo que vuelve a ser negacionista, aunque use la palabra «afirmo». Afirmar una negación es negar. Menos mal que termina reconociendo que «niega la existencia».

Este señor, aparte de negacionista, es un compendio de malas praxis en la redacción a la búsqueda de ampulosidad que dote a su carta abierta de cierta «credibilidad».

Por supuesto, aparte de negacionista, es casi nihilista… y eso hasta cabría decir que me ha hecho gracia.

Intrusismos diseñando…

Aunque en realidad ni siquiera son actividades intrusistas, pues me he dedicado a copiar una plantilla que Carmen había utilizado para hacer sus carteles promocionales de las temáticas diferenciadoras de sus Clases de Tango Argentino, que luego he incluido en su página web www.carmendelarosa.com

Ella utiliza unas cuantas apps del móvil y suele quedar «resultón», pero si quieres tenerlas juntas las imágenes o usarlas en una web… acaba siendo más fácil hacerlas con herramientas, digamos, serias, como las que utilizo para diseñar las cubiertas de los libros (Inkscape sobre Linux, en resumen).

Inkscape es un programa que tiene todo lo que yo pueda necesitar en los próximos años. Se le supone capacidad (o pretensión) de emular al poderoso Ilustrator, aunque no tiene ese «flow» que tienen los productos Adobe. Es parco, algo simplón y algo inestable… pero cumple sobradamente su función. De momento, no echo nada en falta, pero quizá es que sé demasiado poco.

De momento, me sirvió para hacer en un par de horas los siguientes cartelitos para Carmen de la Rosa y su web, amén de promociones en Instagram, etc…

Uberificación Vintage

Llamamos a un uber
para ir a cenar con una amiga de Carmen.

No queríamos tocar la calle
por si un ramillete de ARN se colaba en nuestras entrañas.

Bajé al portal antes de recibir mensaje alguno
pero por si acaso me asomé a la calle
miré a ambos lados
y vi un vehículo extravagante
en mitad de la calzada.

Supuse que se apartaría
en cuanto llegase nuestro carruaje
que ya parecía tener algo de retraso.

Claro:
Las imágenes me delatan.
Este poema no tiene ningún misterio.

Distinguí el distintivo que indica que es un vehículo
autorizado por la comunidad de madrid
para transporte de personas.

Y verifiqué que la matrícula del mismo
coincidía con la matrícula del coche previsto
para recogernos.

Carmen no lo podía creer.
Quería fotografiarlo sin parar.
Yo me sentía algo avergonzado
no sólo por contribuir a la uberificación
de la economía
sino por ser el centro de atención
de una ciudad dormida.

Conversaciones con el conductor
como si yo entendiese de coches
dando por supuesto que ella no entendía
como si me interesase
aunque sí me apetecía saber
si ese curioso artefacto podía conducirlo
siempre que eligiese
y si eso le repercutía en una mejora salarial
intentado no sentirme mal
por contribuir a la uberificación
de la economía.

Al salir
nos permitió tomar una fotografía (4)
que presumían de una especie de episodio vacacional
en mitad de una ciudad
vencida
que llora miseria disfrazada de opulencia.

Enviamos las fotografías
contribuyendo a la difusión (intencionada)
de la apuesta por el postinaje
de la mentada compañía.

Esto no es una broma