Se acerca el día de mi proximo examen, y ya sabemos todos lo que eso significa: más actividad en
Astaroth's World que me distraiga del peñazo que tengo que estudiarme XD!
Como
actividad difusa que
"me obligue" a no estudiar hoy, he elegido la de retocar
el programa que hice hace poco para poder controlar los envíos de correo que se hagan a
Japón o desde
Japón a través de
EMS (
Express Mail Service).
(Pinchar sobre la imagen para verla a tamaño real) Básicamente, el programa se metía en la página de
Japan Post cada cierto tiempo especificado por tí y te informaba de cada cambio individual que detectase. Así te evitaba el tener que meterte tu mismo cada dos por tres.
Esta nueva versión mejora la forma de mostrar esos cambios, los cuales aparecerán todos en una tabla (en vez de uno por uno, como ocurría anteriormente) como esta:
(Pinchar sobre la imagen para ver a tamaño real)
Además, incluye la opción de buscar en un
mapa de Google la localización de tu paquete en cada etapa (pinchando en la opción
"Mapa" en la fila que corresponda.
El código del programa (a excepción de la parte gráfica realizada en
glade) es el siguiente:
#!/bin/bash
#
#*********************
# EMStracer v2.0
#*********************
#
# Este script está diseñado para chequear automáticamente si hay actualizaciones
#en un envío realizado por Express Mail Service (EMS) a Japón.
#
# Está basado en el servicio de seguimiento de Japan Post ( http://www.post.japanpost.jp )
#
# Realizado por Astaroth (O.R.G.)
# e-Mail: Webmaster@astarothsworld.zzn.com
# Página: http://astarothsworld.blogspot.com/
#
# Para más información, visita: http://astarothsworld.blogspot.com/2008/11/ni-godzilla-podr-evitar-que-estemos-al.html#arriba
#
carpetainicial=`pwd`
#Leemos los valores de las variables:
function def {
echo $igual | sed 's/\"//g' | grep -o "$1\=[[:alnum:]]*" | sed 's/'$1'\=//g'
}
igual=`gtkdialog -g if/interface.glade -p window1 | grep \=`
n=`def n`
t=`def t`
Informe=`def Informe`
EXIT=`def EXIT`
if [ $EXIT = "Aceptar" -o $Informe = "true" ] ; then
#Definimos carpeta temporal:
mkdir $HOME/.EMS$n
rm $HOME/.EMS$n/*
cd $HOME/.EMS$n
w3m http://tracking.post.japanpost.jp/service/singleSearch.do?searchKind=S004\&locale=en\&reqCodeNo1=$n > Informe.txt
if [ $Informe = "true" ] ; then
fi
if [ $EXIT = "Aceptar" ] ; then
#Bucle infinito
k=1
Actualiz=0
while [ $k -eq 1 ] ; do
clear
T=`echo "$t * 60" | bc`
hora=`date +%T`
echo "Qué quieres?, son las $hora"'!!!'
echo "Me has mandado dormir $t minutos ($T segundos), así que ahora no molestes..."
echo "En la última revisión encontré $Actualiz actualizaciones."
sleep $T
w3m http://tracking.post.japanpost.jp/service/singleSearch.do?searchKind=S004\&locale=en\&reqCodeNo1=$n > Informe2.txt
#Determinación de márgenes:
Fin=`grep -n ┗ Informe.txt | awk -F\: '{print $1}'`
Ini2=`grep -n ┏ Informe2.txt | awk -F\: '{print $1}'`
Fin2=`grep -n ┗ Informe2.txt | awk -F\: '{print $1}'`
d2=`cat Informe2.txt | awk -F\│ '{print $1}' | grep -n ─ | awk -F\: '{print $1}'`
P=0
Actualiz=0
if [ ! $Fin2 = $Fin ] ; then
a=`echo "$Fin + 1" | bc`
for i in $d2 ; do
if [ $i -gt $Fin ] ; then
if [ $i -lt $Fin2 ] ; then
P=`echo "$P + 1" | bc`
I=`echo "$i - 1" | bc`
cat Informe2.txt | sed -n ''$a','$I'p' > proc$P.txt
a=`echo "$i + 1" | bc`
fi
fi
done
P=`echo "$P + 1" | bc`
I=`echo "$Fin2 - 1" | bc`
cat Informe2.txt | sed -n ''$a','$I'p' > proc$P.txt
Actualiz=$P
fi
#Lectura de procesos nuevos:
function unalin {
}
echo 'zenity --list --checklist --height=300 --width=1000 --title="Nueva actualización de su envío :D\!" --text="Hemos localizado '"$Actualiz"' actualizacion(es) en su envío\! A continuación, pasamos a detallarle los datos de la(s) misma(s):\n\n *Datos referentes al código EMS: '"$n"'" --column "Mapa" --column "#" --column "Mes" --column "Día" --column "Hora" --column "Estado" --column "Detalles" --column "Oficina" --column "Código Postal" --column "Prefectura"' > tabla.txt
for proc in $(seq $P) ; do
Date=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $1}'`
Date=`unalin $Date`
Mes=`echo $Date | sed 's/[0-9]*//g' | sed 's/://g'`
Dia=`echo $Date | sed 's/[0-9]*:[0-9]*//g'| grep -o "[0-9]*"`
Hora=`echo $Date | grep -o "[0-9]*:[0-9]*"`
Estado=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $2}'`
Estado=`unalin $Estado`
Detalles=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $3}'`
Detalles=`unalin $Detalles`
Oficina=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $4}'`
Oficina=`unalin $Oficina`
Nomof=`echo "$Oficina" | sed 's/[0-9]*-[0-9]*//g'`
CP=`echo "$Oficina" | grep -o "[0-9]*-[0-9]*"`
Prefectura=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $5}'`
Prefectura=`unalin $Prefectura`
echo "\" \" \"$proc\" \"$Mes\" \"$Dia\" \"$Hora\" \"$Estado\" \"$Detalles\" \"$Nomof\" \"$CP\" \"$Prefectura\"" >> tabla.txt
done
if [ ! $Actualiz = 0 ] ; then
tabla=`cat tabla.txt`
echo $tabla > tabla.txt
Mapa=`bash tabla.txt`
for nm in $(seq $Actualiz) ; do
if ( echo $Mapa | grep $nm ) ; then
io=`echo "10 * $nm - 1" | bc`
ip=`echo "10 * $nm + 1" | bc`
Oficina=`cat tabla.txt | awk -F"\" \"" '{print $'$io'}' | awk '{print $1}'`
Prefectura=`cat tabla.txt | awk -F"\" \"" '{print $'$ip'}' | awk '{print $1}'`
firefox http://maps.google.es/maps\?f\=q\&hl\=es\&geocode\=\&q\=$Oficina,+$Prefectura
fi
done
fi
mv Informe2.txt Informe.txt
rm proc*.txt
rm tabla.txt
done
fi
fi
#rm -R $HOME/.EMS$n
cd $carpetainicial
gtkdialog -g if/interface.glade -p window2
Os podéis descargar el programa de la siguiente dirección (será necesario copiarla y pegarla en tu navegador web):
---------------------------
ActualizaciónAhora que
estoy en racha, aprovecho para sacar una nueva versión XD, saco una por día XD! Esta tercera versión la coloco aquí, como un anexo de la segunda, porque en realidad tampoco difiere tanto de ella. El primer cambio es un nuevo diseño en la
skin principal:
La otra diferencia es que en vez de dibujar un mapa por ubicación seleccionada (abriendo varias ventanas o pestañas en el
Firefox), ahora
intentará localizar todas las direcciones que seleccionemos en un único mapa. Este procedimiento no es fácil (al menos con mis conocimientos :p), y lo que he hecho es basarme en el sistema de
"rutas" de
Google Maps.
Este sistema presenta problemas en nuestro caso. Por ejemplo, cuál es la ruta entre dos puntos iguales? (parece la pregunta de un intrigante profesor de física XD). Según
Google, la respuesta es
"ninguna", y si nos equivocamos y seleccionamos para que nos localice dos ubicaciones iguales, el programa falla. También falla si no encuentra mecanismos para unir ambos puntos (esto pasa para puntos internacionales distantes entre sí).
Todo esto era para intentar mejorar la representación en un mapa de varias localizaciones que pudiesen haber salido en una única actualización (es decir, si hacemos caso a los valores por defecto, todas las actualizaciones que hayan ocurrido en
15 minutos). Como no es normal (o al menos en los casos que yo he vivido) que haya más de
dos o tres actualizaciones al día, resulta bastante improbable que coincidan varias en una actualización que se hace cada
15 minutos, por lo que lo mismo os vale la versión anterior de
EMStracer (la del principio de esta entrada) que va bien para representar localizaciones de una en una.
Os dejo el código y el
link de descarga:
#!/bin/bash
#
#*********************
# EMStracer v3.0
#*********************
#
# Este script está diseñado para chequear automáticamente si hay actualizaciones
#en un envío realizado por Express Mail Service (EMS) a Japón.
#
# Está basado en el servicio de seguimiento de Japan Post ( http://www.post.japanpost.jp )
#
# Realizado por Astaroth (O.R.G.)
# e-Mail: Webmaster@astarothsworld.zzn.com
# Página: http://astarothsworld.blogspot.com/
#
# Para más información, visita: http://astarothsworld.blogspot.com/2008/11/ni-godzilla-podr-evitar-que-estemos-al.html#arriba
#
#
# NOTAS DE LA VERSIÓN:
#
# Esta versión se diferencia de la anterior en la representación de los mapas. En
#esta versión, se hace en forma de ruta, así que en vez abrir varias ventanas de
#Firefox para mostrar varios resultados, se muestran en un sólo mapa. Esto puede
#fallar porque Google maps a veces no calcula con facilidad trayectos internacionales.
#
carpetainicial=`pwd`
#Leemos los valores de las variables:
function def {
echo $igual | sed 's/\"//g' | grep -o "$1\=[[:alnum:]]*" | sed 's/'$1'\=//g'
}
igual=`gtkdialog -g if/interface.glade -p window1 | grep \=`
n=`def n`
t=`def t`
Informe=`def Informe`
EXIT=`def EXIT`
if [ $EXIT = "Aceptar" -o $Informe = "true" ] ; then
#Definimos carpeta temporal:
mkdir $HOME/.EMS$n
rm $HOME/.EMS$n/*
cd $HOME/.EMS$n
w3m http://tracking.post.japanpost.jp/service/singleSearch.do?searchKind=S004\&locale=en\&reqCodeNo1=$n > Informe.txt
if [ $Informe = "true" ] ; then
fi
if [ $EXIT = "Aceptar" ] ; then
#Bucle infinito
k=1
Actualiz=0
while [ $k -eq 1 ] ; do
clear
T=`echo "$t * 60" | bc`
hora=`date +%T`
echo "Qué quieres?, son las $hora"'!!!'
echo "Me has mandado dormir $t minutos ($T segundos), así que ahora no molestes..."
echo "En la última revisión encontré $Actualiz actualizaciones."
sleep $T
w3m http://tracking.post.japanpost.jp/service/singleSearch.do?searchKind=S004\&locale=en\&reqCodeNo1=$n > Informe2.txt
#Determinación de márgenes:
Fin=`grep -n ┗ Informe.txt | awk -F\: '{print $1}'`
Ini2=`grep -n ┏ Informe2.txt | awk -F\: '{print $1}'`
Fin2=`grep -n ┗ Informe2.txt | awk -F\: '{print $1}'`
d2=`cat Informe2.txt | awk -F\│ '{print $1}' | grep -n ─ | awk -F\: '{print $1}'`
P=0
Actualiz=0
if [ ! $Fin2 = $Fin ] ; then
a=`echo "$Fin + 1" | bc`
for i in $d2 ; do
if [ $i -gt $Fin ] ; then
if [ $i -lt $Fin2 ] ; then
P=`echo "$P + 1" | bc`
I=`echo "$i - 1" | bc`
cat Informe2.txt | sed -n ''$a','$I'p' > proc$P.txt
a=`echo "$i + 1" | bc`
fi
fi
done
P=`echo "$P + 1" | bc`
I=`echo "$Fin2 - 1" | bc`
cat Informe2.txt | sed -n ''$a','$I'p' > proc$P.txt
Actualiz=$P
fi
#Lectura de procesos nuevos:
function unalin {
}
echo 'zenity --list --checklist --height=300 --width=1000 --title="Nueva actualización de su envío :D\!" --text="Hemos localizado '"$Actualiz"' actualizacion(es) en su envío\! A continuación, pasamos a detallarle los datos de la(s) misma(s):\n\n *Datos referentes al código EMS: '"$n"'" --column "Mapa" --column "#" --column "Mes" --column "Día" --column "Hora" --column "Estado" --column "Detalles" --column "Oficina" --column "Código Postal" --column "Prefectura"' > tabla.txt
for proc in $(seq $P) ; do
Date=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $1}'`
Date=`unalin $Date`
Mes=`echo $Date | sed 's/[0-9]*//g' | sed 's/://g'`
Dia=`echo $Date | sed 's/[0-9]*:[0-9]*//g'| grep -o "[0-9]*"`
Hora=`echo $Date | grep -o "[0-9]*:[0-9]*"`
Estado=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $2}'`
Estado=`unalin $Estado`
Detalles=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $3}'`
Detalles=`unalin $Detalles`
Oficina=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $4}'`
Oficina=`unalin $Oficina`
Nomof=`echo "$Oficina" | sed 's/[0-9]*-[0-9]*//g'`
CP=`echo "$Oficina" | grep -o "[0-9]*-[0-9]*"`
Prefectura=`cat proc$proc.txt | sed 's/├/│/g' | sed 's/┤/│/g' | sed 's/─//g' | sed 's/┃//g' | awk -F\│ '{print $5}'`
Prefectura=`unalin $Prefectura`
echo "\" \" \"$proc\" \"$Mes\" \"$Dia\" \"$Hora\" \"$Estado\" \"$Detalles\" \"$Nomof\" \"$CP\" \"$Prefectura\"" >> tabla.txt
done
if [ ! $Actualiz = 0 ] ; then
tabla=`cat tabla.txt`
echo $tabla > tabla.txt
Mapa=`bash tabla.txt`
dibmap=0
NP=0
for nm in $(seq $Actualiz) ; do
echo 'http://maps.google.es/maps?f=d&saddr=' > Mapa.txt
if ( echo $Mapa | grep $nm ) ; then
NP=`echo "$NP + 1" | bc`
dibmap=1
io=`echo "10 * $nm - 1" | bc`
ip=`echo "10 * $nm + 1" | bc`
Oficina=`cat tabla.txt | awk -F"\" \"" '{print $'$io'}' | awk '{print $1}'`
Prefectura=`cat tabla.txt | awk -F"\" \"" '{print $'$ip'}' | awk '{print $1}'`
if [ $NP = 1 ]; then
echo "$Oficina,+$Prefectura" >> Dires.txt
else
echo "+to:$Oficina,+$Prefectura" >> Dires.txt
fi
fi
done
if [ $dibmap = 1 ]; then
url=`cat Mapa.txt Dires.txt`
url=`echo $url | sed 's/ //g'`
firefox $url
fi
fi
mv Informe2.txt Informe.txt
rm proc*.txt
rm tabla.txt
rm Mapa.txt
rm Dires.txt
done
fi
fi
#rm -R $HOME/.EMS$n
cd $carpetainicial
gtkdialog -g if/interface.glade -p window2
http://usuarios.lycos.es/astarothsworld/EMStracer3.zipTal vez te intesere:
jejejejej
ResponderEliminarestás siguiendo a tu reloj???l preocupado t veo,deberías d haberle implantado un chip cómo si fuera una mascota para poder detectarlo...
cómo va ese exámen?´
akí llueve y hace un frío k no veas así k cómo entretenimiento difuso voy a seguir ojeando x akí a ver k se cuenta la página de astaroth...
jejejejejejejejejejejeje
besos mil
lady savan
ajaja tienes k ponerte el modo acecho en lo de seguir al reloj
ResponderEliminar:)
ayyyyy astaroth
ResponderEliminark rallao t tiene éste exámen t debería d haber conocido cuándo estaba en el instituto k llegué a cou con la física y las mates de segundo pendientes ajajajaja
es curioso éste programa..pero sigo pensando en lo del modo acecho ajajaja ganas 5 puntos d vida si lo sigues hasta su destino sin perderlo de vista ;)
k sueño hay hoy con éste frío ártico y polar!!!zzzz