Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
janlyn06
12306
提交
6d9ebc9b
1
12306
项目概览
janlyn06
/
12306
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
1
12306
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6d9ebc9b
编写于
9月 03, 2019
作者:
文
文贤平
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化候补逻辑
上级
28c3b37c
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
24 addition
and
24 deletion
+24
-24
TickerConfig.py
TickerConfig.py
+9
-4
Update.md
Update.md
+5
-0
init/select_ticket_info.py
init/select_ticket_info.py
+5
-14
inter/ChechFace.py
inter/ChechFace.py
+1
-1
inter/Query.py
inter/Query.py
+3
-4
inter/SubmitOrderRequest.py
inter/SubmitOrderRequest.py
+1
-1
未找到文件。
TickerConfig.py
浏览文件 @
6d9ebc9b
# 关于软件使用配置说明,一定要看!!!
# 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
Update.md
浏览文件 @
6d9ebc9b
...
...
@@ -168,3 +168,8 @@
-
剔除新增TICKET_TYPE字段,发现此字段冗余,目前改为全天自动候补+捡漏
-
增加候补订单功能
-
优先级:下单再候补
-
2019.09.03更新
-
恢复TICKET_TYPE字段,1=刷票 2=候补+刷票
-
优化候补逻辑
-
候补订单只能在规定车次内候补
init/select_ticket_info.py
浏览文件 @
6d9ebc9b
...
...
@@ -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
)
...
...
inter/ChechFace.py
浏览文件 @
6d9ebc9b
...
...
@@ -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"
):
"""
未通过人脸核验
"""
...
...
inter/Query.py
浏览文件 @
6d9ebc9b
...
...
@@ -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,我将添加上
判断车次是否可以候补
...
...
inter/SubmitOrderRequest.py
浏览文件 @
6d9ebc9b
...
...
@@ -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
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录