这个项目能做什么
Matcha Restock Alert 是一个小型自动化项目,用于监控 Marukyu-Koyamaen 国际商店中的每一款抹茶产品,并在商品从售罄恢复为有货时发送电子邮件。由于该商店会随机补货且不公布时间表,项目会在云端全天候运行,因此你自己的电脑可以保持关闭。
工作方式:外部免费定时服务 cron-job.org 通过 workflow_dispatch API 每五分钟调用一次 GitHub Actions 工作流。工作流运行 matcha_monitor.py,该脚本访问每个商品页面并查找商店自身的“currently out of stock and unavailable”消息;没有该消息即表示商品可购买。脚本将每个商品的上一次状态存储在 state.json 中,并在每次运行后提交回仓库;只有在商品新近补货时才发送邮件,以避免重复骚扰。如果邮件发送失败,下次运行时会重试该提醒。
为礼貌对待商店,每五分钟的运行只重新检查当前售罄的商品,每小时进行一次全面扫描,以发现新的售罄情况。请求间隔两秒,并使用普通浏览器身份。脚本还会扫描目录中是否有全新的抹茶产品,自动监控它们,并在其出现时发送邮件。工作流自身的 */30 cron 计划仅作为备用,因为 GitHub 的 cron 在实际使用中会受到严重限流。
设置需要 Gmail 应用密码、用于 SMTP 用户名、密码和收件人的仓库密钥,以及一个限定于该仓库、具备 Actions 读写权限的细粒度 GitHub token;在 cron-job.org 上将其配置为带 JSON 请求体的 POST 任务。测试运行返回 204 即表示正常,test-email 工作流分发可验证邮件是否送达。
监控列表位于 products.json 中,包含约 50 款抹茶产品;可以添加、移除商品,或通过设置 "watch": false 暂停监控。自动发现的产品存储在 state.json 中,也可以用同样方式暂停。主要文件包括 matcha_monitor.py(检查器和邮件发送器,也可在本地使用 --force 运行)、products.json、state.json 以及 GitHub Actions 工作流文件。
注意事项:商店不鼓励激进抓取,其机器人防护可能会阻止请求。脚本会检测拦截或验证页面,绝不会将其误认为有货状态;被阻止的检查只会在下次运行时重试。每笔订单限购五件抹茶,商店会拒绝其认为用于转售的订单。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。