Automatizando la comprobación de disponibilidad del Nexus 4

Nexus 4¿Quieres un Nexus4 y todavía no has podido comprarlo?

Parecía que por fin había vuelto de forma estable a Google Play este mes pero tras unos días de disponibilidad vuelve a estar agotado de nuevo, y a pesar de que según las declaraciones de LG debería ir normalizándose el stock durante Febrero la situación puede ser un poco desesperante.

Aprovechando el problema de la falta de información acerca de cuándo volverá a aparecer el móvil en Google Play han ido apareciendo aplicaciones para el móvil que te notificaban de la disponibilidad, pero ¿para qué instalar un programa que te va a estar consumiendo datos en el móvil cuando puedes crear algo igualmente útil tú mismo?.

A estas alturas puede que ya no sea tan necesario, pero sea para esto, para otras situaciones similares o simplemente como curiosidad, vamos a ver cómo crearnos una notificación automática que nos avise en nuestro móvil.

En un artículo anterior vimos cómo enviar desde nuestro PC mensajes de GTalk a través de un script Bash. Lo que vamos a hacer es aprovechar este sistema de notificación dentro de un script que nos compruebe cada cierto tiempo la web de Google Play, con lo que en cuanto sea posible hacer la compra nos llegará un mensaje al móvil (y al chat de GMail, ya de paso).

Para el ejemplo nos vamos a crear una carpeta ~/scripts donde vamos a meter nuestro script bash:

cd
mkdir scripts
cd scripts
gedit checkgplay.sh

En este archivo ponemos lo siguiente:

#!/bin/bash

FOUND=$(wget -O - https://play.google.com/store/devices/details?id=nexus_4_16gb 2>/dev/null |grep -ci "Añadir al carrito")
EFOUND=$(wget -O - https://play.google.com/store/devices/details?id=nexus_4_16gb 2>/dev/null |grep -ci "Add to cart")

if [ "$FOUND" == "1" -o "$EFOUND" == "1" ]
then
WASAVAIL=$(cat ~/scripts/n4avail.txt)
if [ "$FOUND" == "$WASAVAIL" ]
then
echo $FOUND > ~/scripts/n4avail.txt
else
echo "Ya está disponible!!" |sendxmpp -t -u cuentagtalk -o gmail.com [email protected]
MENSAJE="..."
mail -s "Ya está disponible" [email protected] < $MENSAJE
echo $FOUND > ~/scripts/n4avail.txt
fi
else
WASAVAIL=$(cat ~/scripts/n4avail.txt)
if [ "$FOUND" == "$WASAVAIL" ]
then
echo $FOUND > ~/scripts/n4avail.txt
else
echo "Se ha vuelto a agotar!!" |sendxmpp -t -u cuentagtalk -o gmail.com [email protected]
MENSAJE="..."
mail -s "Se ha vuelto a agotar" [email protected] < $MENSAJE
echo $FOUND > ~/scripts/n4avail.txt
fi
fi

Reemplazando lo siguiente:

  • Donde pone [email protected] pon la dirección de correo/gtalk donde quieras recibir la alerta.
  • Donde pone cuentagtalk pon el nombre de la cuenta que configuraste siguiendo el tutorial de envío de mensajes desde la consola.

Ahora inicializamos el archivo n4avail.txt donde se guardará el último estado de disponibilidad comprobado. Esto lo hago para que los mensajes se envíen una única vez cuando cambia el estado y no continuamente cada vez que se comprueba.

echo 0 > n4avail.txt

Por último sólo nos falta darle al script permisos de ejecución:

chmod +x checkgplay.sh

Y añadir el script al cron para que se ejecute con la frecuencia que queramos. Para abrir el editor del cron ejecutamos:

crontab -e

Y añadimos por ejemplo esta línea al final:

*/2 * * * * /home/tuusuario/scripts/checkgplay.sh

Pon el nombre de tu usuario donde pone “tuusuario”, y con esto se estará comprobando cada dos minutos.

Como veis en el script además de las notificaciones de GTalk he añadido también un envío de correo a la misma cuenta. Es posible que para que os funcione esa parte, si os interesa, necesitéis instalar el paquete postfix:

sudo apt-get install postfix

Si no os interesa o no queréis instalar ese paquete podéis simplemente eliminar las líneas donde aparece lo de mail -s.

Y eso es todo, feliz cacería de móvil.