Estamos usando mucho amazon prime now para comprar provisiones de supermercado. En el lugar que estamos ahora, a través de este servicio se pueden comprar productos de DIA% y los envian al hogar. El servicio es bueno, sencillo y cumple con lo que necesitamos.
El problema surgió cuando comenzó la pandemia de covid-19. Amazon prime now se saturó de repente
Inicialmente empezaron a usar un cartel que decía “vuelve a las 12 de la noche que se abrirán mas turnos”, el sitio se caía a las 12 de la noche (error 500) y si no conseguíamos el turno ahí, nos quedábamos sin envío.
Luego modificaron el sitio para empezar a liberar turnos durante el día de a poco, entonces la única forma que teníamos de comprar es quedándonos frente a la pantalla refrescando, esperando a que se libere un turno de envío
A los 10 minutos de estar perdiendo tiempo frente a la pantalla, me puse a investigar como hacer una extension de chrome que hiciera esto por mi. Pense que lo iba a poder hacer en menos de una hora, pero no fue así, resultó ser mas complejo de lo que creía y tarde unas 4hs. Eventualmente funcionó y comparto el codigo aqui
Básicamente el funcionamiento es sencillo:
El código busca un string que diga “Actualmente no hay ventanas”
a. si ese string esta presente en el html, quiere decir que no hay turnos, entonces refresca la pantalla y vuelve a intentar 3.
b. si ese string no esta presente en el html, quiere decir que hay turnos, envía una desktop notificacion y deja de refrescar la pantalla.
Fragmento de manifest.json
{
"browser_action": {
"default_popup": "popup.html",
},
"content_scripts": [
{
"matches": [
"https://primenow.amazon.es/*"
],
"js": [
"contentScript.js"
]
}
],
"background": {
"scripts": [
"background.js"
],
}
}
Esto nos deja con 3 archivos importantes:
Cada script tiene acceso a diferentes funcionalidades o partes de chrome:
La comunicación entre scripts se debe hacer siempre utilizando 2 event emmiter que chrome ofrece: