监控库存的脚本已经比较多了,实现起来也比较简单,几行代码就完成了,只是好像没有用起来特别方便的。
支持了一下 docker ,这样可以直接方便跑在服务器上。
自动下单没找到现有的,索性花了点时间实现了,但是这两天 15 的实体店库存都刷不出来,也不知道能不能一次成功,等测成功了再提上去吧。
Github 地址:ToolGallery
推送支持了 bark, 钉钉通知。
懒人示例:
docker run --rm toolgallery/ape-store-assistant:main -p MTQ43CH/A -l '广东 深圳 罗湖区' -c cn
# 产品型号可以通过 -lp --code 15-pro -c cn 获取
比较菜,轻喷。
1
mylighting 2023-09-21 11:26:03 +08:00
谢谢,我要试试,首发没抢到啊啊啊啊
|
2
cairnechen 2023-09-21 11:47:11 +08:00
俺用的站内另一位同学做的,只是提醒不能自动下单,等楼主做好了我试试,官网预计发货时间 10 月 24 号以后确实等不了
|
3
tallest 2023-09-21 12:12:58 +08:00
啊~
我魔改的一个 Java 的,好像也是站内另一个同学的,我给它加了个微信消息提醒 ![20230921121136.png]( https://s2.loli.net/2023/09/21/Gg2zj6cBYpyrxPZ.png) |
4
cairnechen 2023-09-21 13:38:20 +08:00
@tallest 求教怎么加微信提醒啊
|
5
TAFMT 2023-09-21 13:45:55 +08:00
感谢,我前几天用那个库存提醒的 + 手动抢。费好大劲也没抢到。。
|
6
infante 2023-09-21 13:58:24 +08:00
感谢, 真的很需要
|
7
Soulkim 2023-09-21 14:36:55 +08:00
请问 location 是怎么获取的?
|
8
gps949 2023-09-21 14:40:45 +08:00
OP 可以拿别的有库存的旧型号产品做一下自动下单实验。感觉这个还是很必要的
|
10
oreainters OP |
11
oreainters OP @gps949 其他型号测试成功了的,就是不知道在新款上效果如何
|
12
gps949 2023-09-21 15:16:29 +08:00
@oreainters 那应该问题不大,毕竟提交订单模式都是一致的。OP 把这个加上呗,大不了可以跑俩容器,一个只监测的,一个开自动下单的
|
13
oreainters OP @gps949 我都是固定参数测试的,等我改改推上去
|
14
Soulkim 2023-09-21 15:50:37 +08:00
@oreainters #10 感谢,通知搞定了,期待能自动下单
|
15
565656 2023-09-21 15:52:15 +08:00
|
18
Richared 2023-09-21 16:12:42 +08:00
去年抢 14pm 自己实现了一个,提醒再去刷就没有了,还是自动下单靠谱。
|
19
Canm 2023-09-21 16:18:06 +08:00 via iPhone
哈哈,厉害了厉害👍🏻
|
20
WenJimmy 2023-09-21 16:30:48 +08:00
等个自动下单
|
21
Fange 2023-09-22 02:10:56 +08:00
有点好奇 不需要填写个人信息和付款方式吗?
|
22
oreainters OP @Fange 需要基本信息
|
23
calpes 2023-09-22 16:58:36 +08:00
@oreainters 我注意到似乎没有填写到店时间?
|
24
Soulkim 2023-09-22 16:59:42 +08:00
@oreainters #22 大佬能给个自动下单的示例吗,刚上手不太明白,还有个问题就是不用登录 appleid 的吗?
|
26
calpes 2023-09-22 17:23:07 +08:00
@oreainters 设置为 5s 后边都会失败,apple store 的服务器不太行吗
|
27
zjunjun 2023-09-22 17:51:38 +08:00
用脚本买到一个 256 黑,后天下午可取。楼主厉害👍
|
28
oreainters OP @zjunjun 厉害厉害,实话讲,我到现在也没买到,放的太少了。
|
29
oreainters OP @Soulkim 不用,这个是用游客进行下单,下单成功后在邮件里进行支付,示例我看看补充在 readme 里
|
30
rzjsbbbb 2023-09-22 23:45:51 +08:00
可不可以加一个白名单或者限制距离的功能啊,苏州甚至查长沙的库存。。。
|
31
oreainters OP @rzjsbbbb 已加
|
32
cairnechen 2023-09-23 17:51:48 +08:00
|
33
Hades300 2023-09-23 21:49:01 +08:00
感谢楼主,已经挂着跑了一整个下午了,发现不少这种报错,每次都在 start_checkout: Starting checkout... 之后,代码我改过一些行数不一定准。。 准备开个 debug level 调调看,楼主遇到过吗
File "/Users/XXX/PycharmProjects/APEStoreAssistant/src/actions/order.py", line 148, in start_checkout signin_url = resp_json["head"]["data"]["url"] KeyError: 'data' |
34
Hades300 2023-09-24 08:44:41 +08:00
InventoryMonitor 持有的 Order 一直复用一个 session ,会不会存在前面下单失败,购物车里积攒了很多个商品的问题🧐
|
35
Hades300 2023-09-24 10:11:52 +08:00
感谢楼主贡献的代码和思路,对我而言感觉是个很规范的 python 项目,学到了蛮多。
发现一个问题和一些优化点 1. 我在页面上购买杭州的 14Plus 测试,无法在付款前拿到 timewindow 的,这个不是下单的必要条件。 2. 填充付款方式和联系人信息是可以并行的🤣(杭州货好难抢,每次补货只持续 2-10s ) 3. monitor 模块和 order 模块目前串行耦合,一个 available 的机会是可以开多个 order 并行 race 一下的(相当于模拟多位 guest 同时下单) 4. 激进一些,甚至可以初始化时拿好 store 信息,不 check 库存直接下单(这个有些脑补,需要测出无库存时的表现) 关于第一点,可能是不同地区的下单逻辑稍有不同,比如上海就能通过楼主给的流程下单,但对其他地区是致命的因为必失败。 除此之外,刚刚验证了,上面 order 复用问题确实是个缺陷,购物车会越攒越多(程序一直挂着跑,抢 15PM 的话首次失败后后续失败也几乎是必然的)。 感觉是个潘多拉魔盒,想给楼主提 PR 但是又有点不敢提了,不过该说的都说了,,我相信一定有闭源的现存下单工具。。但真的很纠结。。。 @oreainters |
36
oreainters OP @Hades300 哈哈,可以提 PR ,order 复用的问题已经发现了,后面修改下。
第一点应该是必要条件,那个是获取取货的时间,很多时候监控到有货,再到拿取货时间的时候已经没了 2 ,3 ,4 都是速度相关的优化,其实已经写好了一个维护 order 池下单的一个方案,下单可以做到 5-6 秒左右,不太确定要不要放出来。 |
37
Hades300 2023-09-24 14:08:47 +08:00
@oreainters 酷酷!不过取货时间真的是必要的吗,在杭州下单 iPhone14 是不显示可预约取货时间的,得先付款🤯。在抢 15PM 的时候经常发现有机器但是没有可约时间,怀疑也是和 14 一样。
|
38
rzjsbbbb 2023-09-24 14:28:01 +08:00
@oreainters 我看很多现货产品 14/iPad 之类的都是取货日期待付款完成后确定,要先付款才行
|
39
oreainters OP |
40
c5QzzesMys8FudxI 2023-09-25 08:23:11 +08:00
OP 我没看懂这个参数 能举个简单的例子么? 比如我在北京想监控 iPhone15promax 钛原色 256G 请问怎么跑
|
41
thy44h2 2023-09-25 10:40:25 +08:00
显示下单成功,但是一个小时了还没收到支付的邮件和信息,然后马上下单的取货时间也快过了
@oreainters 想问一下,有什么办法可以看到下单的状态吗?谢谢 |
42
c5QzzesMys8FudxI 2023-09-25 11:37:55 +08:00
@thy44h2 请问下下单的参数怎么加
|
43
kiraku 2023-09-25 12:43:51 +08:00 via iPhone
@4rat 示例:docker run -e DELIVERY_FIRST_NAME=myname (剩余的环境变量…) --rm toolgallery/ape-store-assistant:main -p MTQ43CH/A -l '广东 深圳 罗湖区' -c cn
|
44
tallest 2023-09-25 15:28:03 +08:00
@cairnechen 调 PC 微信 hook 的接口
|
45
ddv12138 2023-09-25 18:21:14 +08:00
救大命,库存监控跑了两天,就出现两次有货,每次都是几秒钟货就没了,没有脚本根本抢不赢
|
46
kiraku 2023-09-25 20:34:57 +08:00
请问会不定期报这个错误是为啥呀,有无大佬帮忙看看:
Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 971, in json return complexjson.loads(self.text, **kwargs) File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/local/lib/python3.10/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/app/actions/inventory_monitoring.py", line 44, in start inventory_data = self.get_data( File "/app/actions/inventory_monitoring.py", line 164, in get_data return resp.json() File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 975, in json raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) |
49
thy44h2 2023-09-26 16:58:50 +08:00
今天抢到了,来分享一下经验。
@kiraku 你这个问题,我的感受就是你设置的查询间隔太短了,我设置的 8 秒,基本就没在报这个错误。 然后前面我提到的问题,下单成功但是没收到邮件和消息,也就是其实下单没有成功。受前面的 v 友的启发 @Hades300 ,在想有没有可能 order 复用的问题导致的,索性删除 image 重新安装,然后就成功下单收到订单号了。 最后感谢 op @oreainters 的贡献,让我能提前半月拿到新机。 |
51
fivesmallq 2023-09-29 14:46:58 +08:00
已抢到 15pm 512 黑色,北京,感谢 @Hades300 今天放货贼多,感觉黄牛要砸手里了,可能过几天就都有现货了。
|
52
Hades300 2023-09-29 15:35:28 +08:00
@fivesmallq 手持 15PM 回复😏,是不是感谢错人了
|
53
fivesmallq 2023-09-29 18:04:44 +08:00
@Hades300 @oreainters 都感谢:)
|
54
nZWVjowEHkQN 2023-10-01 11:44:01 +08:00
@oreainters 麻烦楼主帮忙看下参数正不正确, 伺服器上挂了两个, 其实前几天都抢到了, 最后脚本终止了. 但是手机这边没有收到推送通知, 邮箱里面也没有订购的邮件. 我可以保证的是, 等号后面的参数一定是正确的. 提前感謝!
nohup docker run -e DELIVERY_FIRST_NAME=姓 -e DELIVERY_LAST_NAME=名 -e DELIVERY_EMAIL=邮箱 -e DELIVERY_PHONE=手机 -e DELIVERY_IDCARD=身分证最后四位 -e DELIVERY_PAYMENT=WECHAT -e DELIVERY_PAYMENT_NUMBER=0 -e BARK_TOKRN=bark 唯一 ID --rm toolgallery/ape-store-assistant:main -c cn -p MU2N3CH/A -l "广东 广州 天河区" -o -onc -1 --code 15-pro -i 30 -sft 珠江新城 天环广场 > monitor.log 2>&1 & |
55
nZWVjowEHkQN 2023-10-01 13:01:19 +08:00
@thy44h2 可以分享一下指令吗, 谢谢!
|
56
mylighting 2023-10-02 07:51:38 +08:00 1
@nZWVjowEHkQN 你那个指令我感觉没啥问题,除了姓名弄反了
|
57
thy44h2 2023-10-02 15:25:40 +08:00 1
@nZWVjowEHkQN 看起来没问题,其实你这个和我之前遇到的问题一样,以为成功下单了,其实并没有。成功下单了会收到一条提供临时 icloud 空间的短信,里面有订单号。你没有收到这个消息就表示下单失败。我的经验是删掉 image 重新下载,就能成功下单了
|
58
Neight99 2023-10-17 17:01:08 +08:00
基本没怎么写过 python ,很简陋地支持了一版下单时一并下单 ac+的功能,提了个 pr
|