#!/bin/bash

# Xavier Fernández i Marín
# abril de 2005
#
# Segona versió, corregida i ampliada per David Manyé
# juny de 2005
#
# Programa per a accedir al diccionari de l'IDEC
# inspirat en el:
# Programa para acceder al diccionario de la RAE
# (c) 2003 Javier Fernandez-Sanguino Peña
# Distribuido bajo los términos de la licencia GNU GPL
# ver http://www.gnu.org
#
# Gràcies a Carles Pina i Estany per treure'm de més d'un entrebanc
# Gràcies a David Manyé per millorar de dalt a baix el programa 
#  i ensenyar-me com fer anar el bash molt millor

# Com funciona aquest programa
# ----------------------------
# Primer cal descarregar una pàgina on apareix el número 
# que s'assigna a la paraula.
# En una segona operació cal descarreglar la pàgina amb el número
# com a referència
# Finalment, cal arreglar la informació i mostrar-a finament.

# COSES A FER (TODO)
# ------------------
# La llista que hi havia se l'ha cruspit la feina d'en David Manyé
# Però es podria ampliar la funcionalitat accedint a altres diccionaris de
# català (el de l'Enciclopèdia, per exemple)

function error () {
        echo "ERROR: $1"
        exit 1
}

# Ús
[ -z "$1" ] && error "Mode d'ús: $0 paraula"

[ -z "$PAGER" ] && PAGER=more

# Determina la utilització de l'arxiu temporal 
if [ -n "`which tempfile`" ]; then
        didectmp=`tempfile`
else
        didectmp=/tmp/didec.$$
fi
trap "rm -rf $didectmp" 1 2 3 9 15

# Comprova que wget existeixi
if [ -n "`which wget`" ]; then
        DESCARREGA="wget -q -O $didectmp";
else
        error "No es troba cap programa que pugui ser emprat per a accedir al diccionari";
fi

# Comprova que hi hagi un visualitzador en mode text
if [ -n "`which lynx`" ]; then
        GOITA="lynx --dump --nolist -force_html -stdin";
elif [ -n "`which links`" ]; then
        GOITA="links -dump";
elif [ -n "`which w3ma`" ]; then
        GOITA="w3m -dump -T text/html -s";
else
       error "No es troba cap programa que pugui ser emprat per a visualitzar correctament els resultats";
fi

while [ $# -gt 0 ]
do

  # ventilem l'anterior cerca, si n'hi ha.
  cat /dev/null > "$didectmp"
  
# Descarrega la pàgina amb la paraula a buscar
# i desa-la en un arxiu temporal
$DESCARREGA "http://pdl.iec.es/entrada/resultats_diec.asp?LECODI=13441&LECONT=$1&Proc=1" 
[ $? -ne 0 ] && error "Error en accedir al servidor de l'IEC"

# cercar la línia on apareix 'MOCODI=xxxx&Page' i, doncs, el seu número
#num_paraula=$(grep 'MOCODI' $didectmp | sed 's/.*MOCODI=//' | sed 's/&Page=.*//')

codis=`cat $didectmp | tr '&' '\n' | grep MOCODI | sed -e "s/^.*MOCODI=\([0-9]*\).*$/\1/g"`
if [ -z "$codis" ]
then 
  # els de l'enciclopèdia catalana, quan no troben la paraula buscada, et mostren els 
  #   mots "propers" o semblants. seria realment interessant...
  echo -e "\nparaula NO trobada: $1"
else
  for i in $codis
  do
    # Descarrega la pàgina final on hi ha la descripció de la paraula
    $DESCARREGA "http://pdl.iec.es/entrada/fitxa_DIEC.asp?MOCODI=$i&Page=diec" 
    [ $? -ne 0 ] && error "Error en accedir a pdl.iec.es"

     # Cercar la línia on apareix 'definicio' i mostrar-la
    if [ -f "$didectmp" ]
    then
  	grep 'definicio' $didectmp | $GOITA
    else
       error "Error en accedir al fitxer temporal (no creat)"
    fi 
  done
fi

shift
done


# acaba
exit 0
