From 6d9ebc9b8acf78c55c93127396ed63583abe7353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E8=B4=A4=E5=B9=B3?= Date: Tue, 3 Sep 2019 09:38:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=80=99=E8=A1=A5=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TickerConfig.py | 13 +++++++++---- Update.md | 5 +++++ init/select_ticket_info.py | 19 +++++-------------- inter/ChechFace.py | 2 +- inter/Query.py | 7 +++---- inter/SubmitOrderRequest.py | 2 +- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/TickerConfig.py b/TickerConfig.py index 61de20d..3ad9823 100644 --- a/TickerConfig.py +++ b/TickerConfig.py @@ -1,18 +1,20 @@ # 关于软件使用配置说明,一定要看!!! # ps: 如果是候补车票,需要通过人证一致性核验的用户及激活的“铁路畅行”会员可以提交候补需求,请您按照操作说明在铁路12306app.上完成人证核验 -# 这个日期一定要填小于最长订票时间(30天) -# t("#fromDate").val() + "#" + t("#dafaultTime").html().replace("时", "") + "#" + t("#dafaultMinutes").html().replace("分", ""), # 关于候补了之后是否还能继续捡漏的问题在此说明: 软件为全自动候补加捡漏,如果软件候补成功则会停止抢票,发出邮件通知,但是不会影响你继续捡漏, # 如果这个时候捡漏捡到的话,也是可以付款成功的,也就是说,捡漏+候补,可以最大程度提升抢票成功率 -# 候补最晚兑现日期,目前软件为捡漏加自动候补,所以这个值一定要填 +# 刷票模式:1=刷票 2=候补+刷票 +TICKET_TYPE = 2 + +# 候补最晚兑现日期,目前软件为捡漏加自动候补,所以这个值一定要填,并且这个日期一定要填小于最长订票时间(30天) # 格式为日期+小时+分 # 举例: 比如今天才可以买10.1号的票,比如你那个发车是10.1号上午两点,你兑现时间写到10.1晚上22点? +# t("#fromDate").val() + "#" + t("#dafaultTime").html().replace("时", "") + "#" + t("#dafaultMinutes").html().replace("分", ""), J_Z_PARAM = "2019-09-28#22#59" # 出发日期(list) "2018-01-06", "2018-01-07" STATION_DATES = [ - "2019-09-27" + "2019-10-01" ] # 填入需要购买的车次(list),"G1353" @@ -125,3 +127,6 @@ PASSENGER_TICKER_STR = { '软卧': 4, '硬卧': 3, } + +# 软件版本 +RE_VERSION = "1.0.101" \ No newline at end of file diff --git a/Update.md b/Update.md index a29f695..e1cb050 100644 --- a/Update.md +++ b/Update.md @@ -168,3 +168,8 @@ - 剔除新增TICKET_TYPE字段,发现此字段冗余,目前改为全天自动候补+捡漏 - 增加候补订单功能 - 优先级:下单再候补 + +- 2019.09.03更新 + - 恢复TICKET_TYPE字段,1=刷票 2=候补+刷票 + - 优化候补逻辑 + - 候补订单只能在规定车次内候补 diff --git a/init/select_ticket_info.py b/init/select_ticket_info.py index 97b9494..8462a95 100755 --- a/init/select_ticket_info.py +++ b/init/select_ticket_info.py @@ -54,8 +54,10 @@ class select: :return: """ print(u"*" * 50) + print(f"检查当前版本为: {TickerConfig.RE_VERSION}") print(u"检查当前python版本为:{},目前版本只支持3.6以上".format(sys.version.split(" ")[0])) - print(u"12306刷票小助手,最后更新于2019.01.08,请勿作为商业用途,交流群号:286271084(已满)," + print(u"12306刷票小助手,最后更新于2019.09.03,请勿作为商业用途,交流群号:" + u" 1群:286271084(已满)\n" u" 2群:649992274(已满)\n" u" 3群:632501142(已满)\n" u" 4群: 606340519(已满)\n" @@ -236,19 +238,8 @@ class select: c.sendChechFace() else: random_time = round(random.uniform(sleep_time_s, sleep_time_t), 2) - print(u"正在第{0}次查询 随机停留时长:{6} 乘车日期: {1} 车次:{2} 查询无票 cdn轮询IP:{4}当前cdn总数:{5} 总耗时:{3}ms".format(num, - ",".join( - TickerConfig.STATION_DATES), - ",".join( - TickerConfig.STATION_TRAINS), - ( - datetime.datetime.now() - now).microseconds / 1000, - queryResult.get( - "cdn", - None), - len( - self.cdn_list), - random_time)) + nateMsg = ' 候补无资格' if TickerConfig.ORDER_TYPE == 2 else "" + print(f"正在第{num}次查询 随机停留时长:{random_time} 乘车日期: {','.join(TickerConfig.STATION_DATES)} 车次:{'.'.join(TickerConfig.STATION_TRAINS)} 下单无票{nateMsg} 耗时:{(datetime.datetime.now() - now).microseconds / 1000}ms") time.sleep(random_time) except PassengerUserException as e: print(e) diff --git a/inter/ChechFace.py b/inter/ChechFace.py index 480de6d..db03239 100644 --- a/inter/ChechFace.py +++ b/inter/ChechFace.py @@ -33,7 +33,7 @@ class chechFace: print("".join(chechFaceRsp.get("messages")) or chechFaceRsp.get("validateMessages")) return data = chechFaceRsp["data"] - if not data.get("face_flag") and data.get("face_check_code") == 14: + if not data.get("face_flag"): """ 未通过人脸核验 """ diff --git a/inter/Query.py b/inter/Query.py index 304c81c..fc4c3d0 100644 --- a/inter/Query.py +++ b/inter/Query.py @@ -91,12 +91,11 @@ class query: # "status": True, # } # elif TickerConfig.TICKET_TYPE is 1: - if ticket_info[1] == "预订": # 筛选未在开始时间内的车次 + if ticket_info[1] == "预订" and self.check_is_need_train(ticket_info): # 筛选未在开始时间内的车次 for j in self._station_seat: is_ticket_pass = ticket_info[j] if ticket_info[11] == "Y": - if is_ticket_pass != '' and is_ticket_pass != '无' and is_ticket_pass != '*' and self.check_is_need_train( - ticket_info): # 过滤有效目标车次 + if is_ticket_pass != '' and is_ticket_pass != '无' and is_ticket_pass != '*': # 过滤有效目标车次 secretStr = ticket_info[0] train_no = ticket_info[2] query_from_station_name = ticket_info[6] @@ -149,7 +148,7 @@ class query: "cdn": self.httpClint.cdn, "status": True, } - elif is_ticket_pass == '无' and ticket_info[-2] == "1": + elif is_ticket_pass == '无' and ticket_info[-2] == "1" and TickerConfig.TICKET_TYPE is 2: """ is_ticket_pass如果有别的显示,但是可以候补,可以提issues提出来,附上query log,我将添加上 判断车次是否可以候补 diff --git a/inter/SubmitOrderRequest.py b/inter/SubmitOrderRequest.py index 7cac605..3206d5a 100644 --- a/inter/SubmitOrderRequest.py +++ b/inter/SubmitOrderRequest.py @@ -102,7 +102,7 @@ class submitOrderRequestByAfterNate: def sendSubmitOrderRequest(self, ): submitOrderRequestRsp = self.session.httpClint.send(urls.get("SubmitOrderRequestRsp"), self.data_apr()) - if not submitOrderRequestRsp.get("status"): + if not submitOrderRequestRsp.get("status") or not submitOrderRequestRsp.get("data", {}).get("flag"): print("".join(submitOrderRequestRsp.get("messages")) or submitOrderRequestRsp.get("validateMessages")) return confirm = confirmHB(self.secretList, self.session, self.tickerNo)