Closed goku1977 closed 3 years ago
Hola, mira si puedes hacer login manual, parece que no funciona tampoco (lo he probado en diferentes dispositivos). Si el login manual funciona y el automático no, avísame. Gracias
Hola.
Que rapidez! efectivamente el manual tampoco funciona desde la instancia de chrome que abre el bot, sin embargo si lo hago en una instancia "normal" no abierta por el bot, me puedo logar sin problemas. Creo que han modificado algo de su lado, igual para evitar precisamente esto (por decir algo, no soy un experto).
Siendo así entiendo que hay poco que hacer, pero gracias de nuevo!
Un saludo.
Si tienes un rato, puedes probar el bot en el que me basé para hacer la compra: https://github.com/elpatronaco/pccomponentes-buy-bot Si el login y procesos posteriores funcionan, en unos días puedo actualizarlo (o puedes hacer un pull request si te animas).
Pues el caso es que probe ese ayer y si me funciono el login, pero como realmente no se programar en node.js (programe otros lenguajes hace muchos años, pero llevo tiempo desconectado), no se si seré capaz de integrar la forma de hacer login de ese bot en este, en cualquier caso lo voy a intentar y te digo.
Te voy contando...
Hola Joan.
He intentado copiar la forma de hacer login del otro bot pero no soy capaz, la verdad no manejo estos lenguajes y estoy muy oxidado en la programación, me da para hacer algún cambio pequeño y poco más. He visto que en el código del bot de elpatronaco lo que hacen es "imitar" la forma de logarse de un humano, y entiendo que por eso les funciona, porque creo que lo que ha hecho pccomponentes es poner una protección contra logados automaticos. Resumiendo: si pudieras cambiar la forma de hacer el login y ponerla como el otro te estaría muy agradecido. Posteriormente si quieres puedo subir la modificación que yo hice para que funcionase el tema del pago, aunque es una tonteria pero por si ayuda. Eso sí, tiene que ser con tarjeta. También elimine el while de la compra porque muchas veces no existe el botón de compra, y cuando pasaba eso se quedaba en un loop infinito.
Gracias y ya me contarás.
Buenas, gracias por la info, este finde lo chequeo junto con los cambios que me comentas :)
Mil gracias, de verdad, así da gusto! El tema del while por si te sirve lo ideal sería que intentase comprar una vez, y si no lo consigue pasase a la siguiente de la lista. Muchas veces aparecen varias a la vez y tal y como estan las cosas ahora para comprar creo que sería el funcionamiento "ideal".
Gracias de nuevo.
@goku1977 se han quedado sin stock de gráficas en el outlet, cuando aparezcan hago las pruebas con los cambios.
Hola! Si, suelen sacar a lo largo de la semana, si quieres pasarme la version tal y como la tengas y probarlo yo también no tengo problema.
Gracias.
Hola Joan.
Solo confirmarte que casi todos los días han sacado tarjetas en el outlet. Por si estabas pendiente para probarlo.
Gracias por todo.
Joan save us!!!! merci por adelantado!
Buenas, entre semana no tengo mucho tiempo, entre hoy y mañana pruebo los cambios y lo subo.
Hola Joan.
Por supuesto, solo faltaba, en ningún caso te queríamos meter prisa, solo era por si no habiais podido estar pendiente de la página. En cuanto lo subas lo pruebo y te cuento.
Gracias otra vez!
Confirmo que los cambios en el login funcionan en mi entorno, no hay gráficas ahora mismo así que cuando aparezcan lo pruebo todo otra vez antes de subirlo (he cambiado prácticamente todo el código y necesito probar la parte de compra y envío de Telegrams)
Perfecto! Si necesitas que haga algo me dices sin problemas.
Genial Joan, si necesitas que te hagamos de conejillos de india! ya sabes! Gracuas!
@Gabba82 @goku1977 agradecería si podéis probar la rama develop y verificar que las notificaciones funcionan, y también activar el modo de compra y verificar que hace login (lo muestra por consola). He cambiado el package manager de npm a yarn, está todo explicado en el README.md https://github.com/joanroig/pccomponentes-outlet-bot/tree/develop En unos días espero tener migrado el código de autocompra. Gracias!
acabo de probar sin usuario de pc componentes
empieza a fallar cuando en el config.json le pongo alguno de los ejemplos que tienes en la carpeta de ejemplos
@Gabba82 según los logs parece que no estás corriendo la versión de la rama develop, debería salir algo así:
Hola Joan.
Disculpa que hasta ahora no pude probarlo. Acabo de hacerlo con la rama develop y me ha salido esto:
Como ahora no abre ventana de chrome entiendo que el logado ha funcionado bien, al menos error no me ha dado y he utilizado una cuenta de pccomponentes válida. Además me han llegado bien los mensajes al telegram. Creo que pinta bien, pero tu me dices si hago más pruebas.
Gracias.
@goku1977 el login lo hace cuando el sistema de compra está activado, lo puedes activar en el config.json y te dirá por consola si el login ha funcionado. Para ver el buscador, cambia en puppeteer-config.json la variable debug a true Gracias!
Pues lo acabo de probar como indicas y me da login correcto! Lo único que después me sale una excepción pero probablemente sea por que falta la parte de la compra, pero te la pongo aquí por si acaso:
Ya me cuentas, pero pinta muy bien.
Hello! I just followed your steps with the newest developer version of the bot, but i am getting this message:
(node:17280) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined
at C:\Users\kille\pccomponentes-outlet-bot-develop\src\product-tracker.ts:130:48
at Array.forEach (--unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
And it is repeating. What did i wrong?
@goku1977 @drifter250 please check it again, I solved some more issues. Let me know if the same error appears.
$ yarn start yarn run v1.22.10 $ ts-node src/app.ts
Starting pccomponentes-outlet-bot Version 1.2.0
Current configuration:
Notifications enabled. Purchase disabled.
GPUs: Product tracker started.
(node:9064) UnhandledPromiseRejectionWarning: Error: 400: Bad Request: chat not found
at Telegram.callApi (C:\Users\kille\proba1\node_modules\telegraf\lib\core\network\client.js:258:19)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
(Use node --trace-warnings ...
to show where the warning was created)
(node:9064) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:9064) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:9064) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined
at C:\Users\kille\proba1\src\product-tracker.ts:138:48
at Array.forEach (--unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
i does something wrong?
@drifter250 you did not set the CHAT_ID, please fetch the last update on /develop as I've added some logs in the console to guide new users into having the notifications up and running.
Buenos días, Joan.
He probado las modificaciones y funciona el login, las notificaciones, y navega a la página del oulet, pero después aparece el siguiente error:
Gracias!
Good morning! I have the same error message as goku1977.
Maybe can you create a video, where you set up and start the bot? I am newbie, i have to run a browser when start the bot?
C:\Users\kille\proba2>yarn start yarn run v1.22.10 $ ts-node src/app.ts
Starting pccomponentes-outlet-bot Version 1.2.0
Current configuration:
Notifications enabled. Purchase enabled, but still not implemented.
Attempting login...
(node:13540) UnhandledPromiseRejectionWarning: Error: Could not find element with selector "input[data-cy='email']", make sure you're waiting for the elements with "puppeteer.waitForSelector"
at Object.node --trace-warnings ...
to show where the warning was created)
(node:13540) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:13540) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
molt bones Joan!
ahora si! hasta el punto de buscar y encontrar works fine!
EDIT: 13:37
con la compra activada
y el tema de las notificaciones en telegram van como la seda!
Si quieres que probemos algo mas avisa que yo en lo que pueda lo pruebo!
Saludos!
Thx!
I am still getting this error messages, login failed, and after that the same error.
Starting pccomponentes-outlet-bot Version 1.2.0
Current configuration:
Notifications enabled. Purchase enabled, but still not implemented.
Preparing browser... Browser ready!
Attempting login... Exception thrown while logging in: Error: Could not find element with selector "input[data-cy='email']", make sure you're waiting for the elements with "puppeteer.waitForSelector"
Preparing trackers... GPUs: Product tracker started.
(node:12036) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined
at C:\Users\kille\proba3\src\product-tracker.ts:139:48
at Array.forEach (node --trace-warnings ...
to show where the warning was created)
(node:12036) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
@Gabba82 Perfecto gracias por las capturas :) @drifter250 The purchase system is quite unusable right now. I've fixed all code that was throwing exceptions, so the bot should run fine in all conditions (but the purchase will fail with a red console message). I also made the notification setup easier to manage, so you should be able to receive Telegram notifications.
I am still getting this error messages, login failed, and after that the same error.
Starting pccomponentes-outlet-bot Version 1.2.0
Current configuration:
Notifications enabled. Purchase enabled, but still not implemented.
Preparing browser... Browser ready!
Attempting login... Exception thrown while logging in: Error: Could not find element with selector "input[data-cy='email']", make sure you're waiting for the elements with "puppeteer.waitForSelector"
Preparing trackers... GPUs: Product tracker started.
BOT STARTED
(node:12036) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined at C:\Users\kille\proba3\src\product-tracker.ts:139:48 at Array.forEach () at ProductTracker.processData (C:\Users\kille\proba3\src\product-tracker.ts:136:16) at ProductTracker. (C:\Users\kille\proba3\src\product-tracker.ts:129:10) at step (C:\Users\kille\proba3\src\product-tracker.ts:33:23) at Object.next (C:\Users\kille\proba3\src\product-tracker.ts:14:53) at fulfilled (C:\Users\kille\proba3\src\product-tracker.ts:5:58) at processTicksAndRejections (internal/process/task_queues.js:93:5) (Use
node --trace-warnings ...
to show where the warning was created) (node:12036) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag--unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
This looks like the page had no login input fields, please try to set the debug to true and make a screenshot of the browser page if the same happens again. You can then disable the purchase and jut keep the notifications enabled, as the login is not needed for the Telegram alerts.
Buenos días, Joan.
Ahora funciona perfecto y sin errores (logado, telegram y escaneo del outlet). Te adjunto captura:
Si en algún momento tienes tiempo de dejar operativo el tema de la compra nos avisas y pruebo, comprar ahora de manera manual es poco menos que imposible. Mil gracias en cualquier caso, un trabajo fantástico.
It is working now :) Thank you, but i am not fast enough to buy anything :( If i change the link of the outlet page to the normal graphic card section, the tracking will work?
@drifter250 I experienced some random login issues in the past hours, if you experience it again please open an issue with all details you can gather. It will be helpfil to reimplement the purchase feature.
Regarding your question, no, it will not work as the bot is not yet prepared for it. But it is a feature that can be implemented, I will open a task to do it. The URL will need to be something like this one, which is the content the bot understands:
I will also add some documentation about how to get those URLs in the next days for the outlet section, and in the future it will be also possible to track specific parts of the normal sections as well.
I close this bug as the login issue seems to be solved if there are no further changes. Please open new issues if you find something that starts failing. In the next days I will open a project here to prepare the next features and keep a track of all changes: https://github.com/joanroig/pccomponentes-outlet-bot/projects Thank you all! I hope you can get the graphics card you really need (don't be scalpers, please).
Gracias de nuevo Joan, estaremos pendientes de las nuevas funcionalidades y descuida, al menos por mi parte no soy un scalper ;)
Muuuuuuchas Gracias Joan!
Thank you very much for your time and work!
@drifter250 I have added some examples on how to track normal stocks of graphics cards, you can check it on the master branch. @Gabba82 @goku1977 He hecho cambios importantes en el bot y en las configuraciones, a parte de arreglar bugs relacionados con el match de artículos. Agradecería si podéis probarlo unas cuantas horas a ver si todo funciona bien (rama master). He detectado un fallo tras unas 5 horas que dejó el bot muerto pero no pude encontrar motivo, por eso he añadido una carpeta de logs en la que se guardará todo lo que salga por consola, si detectáis cualquier fallo podéis abrir bug con el log adjunto para que le eche un ojo. PD: Tenéis que hacer un clone o cambiar la URL remota, he cambiado el nombre del proyecto. Un saludo!
Buenas Noches Joan, ya lo he dejado ejecutandose, mañana por la mañana le echo un ojo a ver como va, sin implementar la compra automatica es imposible por muy rapido que abra el enlace que envia el bot! muchas gracias, mañana si veo algo raro te paso el log! Muchisimas Gracias de nuevo por tu tiempo y trabajo!
@Gabba82 Gracias, no acabo de entender que es lo que pasa porque he hecho pruebas, accediendo a una url 2-3 segundos después de que aparezca en la web, y ya no hay botón de comprar ni nada. Empiezo a sospechar que activan el botón en diferido para esquivar bots o algo por el estilo, dudo que alguien esté comprando todas las gpu al segundo a lo loco. Puedes probarlo tú mismo poniendo a una categoría la siguiente configuración, y poniendo el tiempo de refresco bastante rápido, con esto se chequea solo la primera página y si encuentra un match lo abre en el navegador por defecto: "openOnBrowser": true, "checkPages": 1,
@joanroig Yo también lo estoy probando, mañana te cuento pero en principio pinta bien. En cuanto a lo que comentas del botón es tal y como indicas, a veces si aparece (casi siempre ya apagado) y a veces no. Yo he abierto en ocasiones el outlet al segundo de recibir la notificación y ya no aparece, y he estado refrescando un buen rato y nada, creo que, aunque parezca mentira, si están comprando a lo loco sin importar casi marca o modelo. Justo te iba a preguntar como se hacía lo de que abra la página cuando encuentra alguna y lo acabas de explicar, así que lo estoy probando con esa opción activada (aunque inicialmente no aparece en el config.json la he añadido y no me ha dado error, ahora a esperar que salga algo).
Gracias otra vez!
@goku1977 en breves subo documentación de todas las opciones y sigo con la implementación de la autocompra, pero si ni abriendo el link al momento funciona dudo que consiga que la autocompra sea útil :( de todas formas creo que pondré una opción para pagar con tarjeta vinculada o con transferencia, y cerrar así una versión estable completa con todo funcionando.
@joanroig en realidad yo si llegue a comprar una con la versión anterior del bot, es verdad que tarde un par de semanas pero al final salio (por desgracia luego la tuve que devolver porque no funcionaba bien). Ten en cuenta que habrá mucha más gente con bots, pero si bien así es difícil sin él es directamente imposible, a precios normales claro. Normalmente cuando se consigue alguna es porque salen varias de golpe y en esos momentos a veces puedes llegar a comprar una al menos, pero solo si el bot tiene la autocompra automática. Respecto a lo que comentas del modo de pago mi recomendación es que lo hagas solo con tarjeta, la opción de transferencia hace tiempo que Pccomponentes la deshabilitó para las tarjetas gráficas.
Gracias y si te sirve de algo creo que el proceso de autocompra si sería muy útil, así al menos tenemos alguna oportunidad.
Gracias!
@goku1977 gracias por la info! He estado mejorando el sistema de compra para evitar que, por ejemplo, dos trackers compren el mismo artículo a la vez, y por defecto la compra de cada tracker va limitado a una unidad (es configurable). Sobre lo que comentas de que salen varias de golpe, quizás hay una posibilidad si se abren todos los artículos en pestañas diferentes a la vez y se comprueba la disponibilidad, en vez de ir una a una como hacía hasta ahora. El proceso de abrir los nuevos matches en el navegador los abre todos de golpe también. Le echo un vistazo
@joanroig te paso el log de las ultimas 12 horas, no he tenido problema alguno, lo mio es una maquina virtual de ubuntu, si quieres que pruebe en otro entorno/arquitectura avisame log-1621365425106.log
Buenos días, Joan.
No se si sigues dando soporte a este bot, pero si es así me gustaría comentarte un problema que estoy teniendo. He tenido funcionando la rama purchase hasta hace un par de días (pude solucionar el tema del chromewebdriver y lo del pago por tarjeta), pero desde hace poco se me queda parado en la pantalla de login. Me indica continuamente usuario o contraseña incorrectos pero me consta que estan bien. Este es el error que me sale aunque creo que dice poco sobre el problema:
El mensaje que aparece en el navegador abre el bot de usuario o contraseña incorrectos aparece incluso antes de que los rellene, tengo la sensación de que han cambiado algo en la página, o puede que sea que la versión de chrome ya no es compatible con el bot, pero sinceramente ando muy perdido.
Si me puedes echar una mano te estaría muy agradecido, pero sino en cualquier caso gracias por haberte tomado la molestía de hacer el bot ya que hasta ahora me ha sido muy util.
Un saludo.