À propos du projet
Matcha Restock Alert est un petit projet d’automatisation qui surveille chaque produit matcha de la boutique internationale Marukyu-Koyamaen et envoie un e-mail lorsqu’un article passe de rupture de stock à de nouveau disponible. Comme la boutique réapprovisionne de façon aléatoire sans annoncer de calendrier, le projet s’exécute dans le cloud en continu, même lorsque votre propre ordinateur est éteint.
Fonctionnement : un service externe gratuit de ping (cron-job.org) appelle le workflow GitHub Actions toutes les cinq minutes via l’API workflow_dispatch. Le workflow exécute matcha_monitor.py, qui visite chaque page produit et recherche le message propre à la boutique « actuellement en rupture de stock et indisponible » ; l’absence de message signifie que l’article est achetable. Le script enregistre le dernier statut de chaque produit dans state.json, qui est renvoyé par commit dans le dépôt après chaque exécution, et n’envoie d’e-mail qu’en cas de nouveau réapprovisionnement, afin d’éviter les spams répétés. Si l’envoi d’un e-mail échoue, l’alerte est réessayée à l’exécution suivante.
Pour être poli envers la boutique, chaque exécution toutes les cinq minutes ne revérifie que les articles actuellement en rupture, avec un balayage complet une fois par heure pour détecter les nouvelles ruptures. Les requêtes sont espacées de deux secondes et utilisent une identité de navigateur normale. Le script analyse également le catalogue pour détecter de tout nouveaux produits matcha, les surveille automatiquement et envoie un e-mail lors de leur apparition. La planification cron interne */30 du workflow n’est conservée qu’en secours, car le cron de GitHub est fortement limité en pratique.
La configuration nécessite un mot de passe d’application Gmail, des secrets de dépôt pour l’utilisateur SMTP, le mot de passe et le destinataire, ainsi qu’un jeton GitHub à granularité fine, limité au dépôt et disposant de la permission Actions lecture/écriture, configuré sur cron-job.org comme une tâche POST avec un corps JSON. Une exécution de test renvoyant 204 confirme son fonctionnement, et un déclenchement du workflow test-email vérifie la distribution.
La liste de surveillance se trouve dans products.json avec environ 50 produits matcha ; les articles peuvent être ajoutés, supprimés ou mis en pause avec « watch": false. Les produits découverts automatiquement sont stockés dans state.json et peuvent être mis en pause de la même manière. Les principaux fichiers sont matcha_monitor.py (le vérificateur et l’expéditeur d’e-mails, également exécutable localement avec --force), products.json, state.json et le fichier de workflow GitHub Actions.
Remarques : la boutique décourage le scraping agressif et sa protection anti-bots peut bloquer les requêtes. Le script détecte les pages de blocage ou de défi et ne les confond jamais avec un statut en stock ; les vérifications bloquées sont simplement réessayées à l’exécution suivante. Le matcha est limité à cinq articles par commande, et la boutique refuse les commandes qu’elle estime destinées à la revente.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.