本项目应用主要用来监测Apple Store线下直营店货源情况,主要使用Python实现。
首先感谢iPhone-Pickup-Monitor项目带来的灵感,同时有些实现也直接使用了该项目的一些代码。
本项目在iPhone-Pickup-Monitor原有功能的基础上去掉了声音通知,但添加了多货源同时监控以及钉钉消息通知功能。
- 增加Telegram bot机器人群发功能,感谢zsm1703。【PR #1】
- 将异常事件的提醒限制在6:00 ~ 23:00期间。
- 可配置想要排除的直营店。
- 可配置在程序发生异常时是否发送通知。
- 增加Bark推送【仅iOS】,感谢zh616110538。【PR #2】
- 修复未选择排除的直营店时出现的异常。
# 拉取代码
git clone https://github.com/LennonChin/AppleStore-Monitor.git
# 进入目录
cd AppleStore-Monitor
# 安装依赖
pip install -r requirements.txt
【强烈建议配置】如不配置则没有通知功能。
本监控提供了钉钉监控的功能,可以在监控到有货源时将消息发送到钉钉群。如要启用该功能,首先需要创建一个钉钉群,并添加群机器人,详细可参考文档:
机器人配置完毕后,记下相关的Access Token和Secret Key,后面配置时需要用到。
Telegram bot群发功能已添加了,文档暂空。留给有需求的同学自己补充。
Bark仅针对iOS平台的推送,使用比较简单,下载Bark App,在下面的配置过程中输入携带了Key的URL即可。
使用python monitor.py config
命令进行配置,可以配置多个监控商品:
$> python monitor.py config
--------------------
[0] Apple Watch
[1] AirPods
[2] iPhone 13
选择要监控的产品:1
--------------------
[0] AirPods
[1] AirPods Max
选择要监控的产品子类:1
--------------------
[0] AirPods Max - 银色
选择要监控的产品型号:0
--------------------
是否添加更多产品[Enter继续添加,非Enter键退出]:
--------------------
[0] Apple Watch
[1] AirPods
[2] iPhone 13
选择要监控的产品:2
--------------------
[0] iPhone 13 Mini
[1] iPhone 13
[2] iPhone 13 Pro
[3] iPhone 13 Pro Max
选择要监控的产品子类:3
--------------------
...
[11] 512GB 远峰蓝色
...
选择要监控的产品型号:11
--------------------
是否添加更多产品[Enter继续添加,非Enter键退出]:n
选择计划预约的地址:
请稍后...1/3
--------------------
[0] 北京
[1] 上海
...
请选择地区序号:1
请稍后...2/3
请稍后...3/3
--------------------
[0] 黄浦区
...
请选择地区序号:0
正在加载网络资源...
--------------------
选择的计划预约的地址是:上海 上海 黄浦区,加载预约地址周围的直营店...
[0] 香港广场,地址:上海市黄浦区淮海中路 282 号
[1] 南京东路,地址:上海市黄浦区南京东路 300 号
[2] 上海环贸 iapm ,地址:上海市徐汇区淮海中路 999 号
[3] 浦东,地址:上海市浦东新区陆家嘴世纪大道 8 号
[4] 环球港,地址:上海市普陀区中山北路 3300 号
[5] 五角场,地址:上海市杨浦区翔殷路 1099 号
[6] 七宝,地址:上海市闵行区漕宝路 3366 号
[7] 苏州,地址:苏州市苏州工业园区
[8] 无锡恒隆广场,地址:无锡市梁溪区
[9] 天一广场,地址:宁波市海曙区碶闸街 155 号
[10] 杭州万象城,地址:杭州市江干区富春路 701 号
[11] 西湖,地址:杭州市上城区平海路 100 号
排除无需监测的直营店,输入序号[直接回车代表全部监测,多个店的序号以空格分隔]:7 8 9 10 11
已选择的无需监测的直营店:苏州,无锡恒隆广场,天一广场,杭州万象城,西湖
--------------------
输入钉钉机器人Access Token[如不配置直接回车即可]:
输入钉钉机器人Secret Key[如不配置直接回车即可]:
--------------------
输入Telegram机器人Token[如不配置直接回车即可]:
输入Telegram机器人Chat ID[如不配置直接回车即可]:
输入Telegram HTTP代理地址[如不配置直接回车即可]:
--------------------
输入Bark URL[如不配置直接回车即可]:
--------------------
输入扫描间隔时间[以秒为单位,默认为30秒,如不配置直接回车即可]:
--------------------
是否在程序异常时发送通知[Y/n,默认为n]:
--------------------
扫描配置已生成,并已写入到apple_store_monitor_configs.json文件中
请使用 python monitor.py start 命令启动监控
配置完成后,会在当前目录下生成一个apple_store_monitor_configs.json文件:
{
"selected_products": {
"MGYJ3CH/A": [
"AirPods Max",
"AirPods Max - 银色"
],
"MLHG3CH/A": [
"iPhone 13 Pro Max",
"512GB 远峰蓝色"
]
},
"selected_area": "上海 上海 黄浦区",
"exclude_stores": [
"R688",
"R574",
"R531",
"R532",
"R471"
],
"notification_configs": {
"dingtalk": {
"access_token": "",
"secret_key": ""
},
"telegram": {
"chat_id": "",
"bot_token": "",
"http_proxy": ""
},
"bark": {
"url": "",
"query_parameters": {
"url": null,
"isArchive": null,
"group": null,
"icon": null,
"automaticallyCopy": null,
"copy": null
}
}
},
"scan_interval": 30,
"alert_exception": false
}
如果你明白每项的意思,也可以手动填写该JSON文件,不过一定要按照上面例子中的层级,尤其是selected_products
部分。
另外欢迎各位补充本项目的products.json文件,添加更多产品信息。
接下来只需要用下面的命令启动监控即可:
比如前台启动:
python monitor.py start
或者后台启动:
nohup python -u monitor.py start > monitor.log 2>&1 &
4种情况会通知:
- 启动时通知,以确认相关信息是否正确,启动是否成功。
- 扫描到有货源时会通知。
- 每天6:00 ~ 23:00整点报时,以确保程序还正常运行。
- 程序异常时会通知,如不是致命异常,不用理会。
相关通知截图:
钉钉:
Telegram:
Bark: