增加单个任务添加多个出发和到达车站
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# 🚂 py12306 购票助手
|
||||
多账号,多任务购票
|
||||
支持多账号,多任务购票
|
||||
|
||||
## 前言
|
||||
今年回家的票明显要难买很多,早早就答应了父母今年的票没问题,到现在一张票没买到,虽然家里已经订了汽车票,让我不用操心,但是想想他们一行还有小孩,心还是很伤的。
|
||||
@@ -11,7 +11,7 @@
|
||||
- [x] 用户状态恢复
|
||||
- [x] 电话语音通知
|
||||
- [x] 多账号、多任务、多线程支持
|
||||
- [ ] 单个任务多站点查询
|
||||
- [x] 单个任务多站点查询
|
||||
- [ ] Docker 支持
|
||||
- [ ] 邮件通知
|
||||
|
||||
@@ -57,7 +57,7 @@ python main.py -t -n
|
||||
python main.py
|
||||
```
|
||||
|
||||
## 下单成功图片
|
||||
## 下单成功截图
|
||||

|
||||
|
||||
## Thanks
|
||||
|
||||
@@ -52,10 +52,18 @@ QUERY_JOBS = [
|
||||
"2019-01-25",
|
||||
"2019-01-26",
|
||||
],
|
||||
'stations': { # 车站 :Dict
|
||||
'stations': { # 车站 支持多个车站同时查询 :Dict or :List
|
||||
'left': '北京',
|
||||
'arrive': '深圳',
|
||||
},
|
||||
# # 多个车站示例 (建议添加多个,有时多买几站成功率会高一点)
|
||||
# 'stations': [{
|
||||
# 'left': '北京',
|
||||
# 'arrive': '深圳',
|
||||
# },{ # 多个车站示例
|
||||
# 'left': '北京',
|
||||
# 'arrive': '广州',
|
||||
# }],
|
||||
'members': [ # 乘客姓名,会根据当前账号自动识别乘客类型 购买儿童票 设置两个相同的姓名即可,程序会自动识别 如 ['张三', '张三']
|
||||
"张三",
|
||||
"王五",
|
||||
|
||||
@@ -52,7 +52,9 @@ class QueryLog(BaseLog):
|
||||
index = 1
|
||||
for job in jobs:
|
||||
self.add_log('================== 任务 {} =================='.format(index))
|
||||
self.add_log('出发站:{} 到达站:{}'.format(job.left_station, job.arrive_station))
|
||||
for station in job.stations:
|
||||
self.add_log('出发站:{} 到达站:{}'.format(station.get('left'), station.get('arrive')))
|
||||
|
||||
self.add_log('乘车日期:{}'.format(job.left_dates))
|
||||
self.add_log('坐席:{}'.format(','.join(job.allow_seats)))
|
||||
self.add_log('乘车人:{}'.format(','.join(job.members)))
|
||||
|
||||
@@ -14,6 +14,7 @@ class Job:
|
||||
|
||||
left_dates = []
|
||||
left_date = None
|
||||
stations = []
|
||||
left_station = ''
|
||||
arrive_station = ''
|
||||
left_station_code = ''
|
||||
@@ -45,10 +46,13 @@ class Job:
|
||||
|
||||
def __init__(self, info, query):
|
||||
self.left_dates = info.get('left_dates')
|
||||
self.left_station = info.get('stations').get('left')
|
||||
self.arrive_station = info.get('stations').get('arrive')
|
||||
self.left_station_code = Station.get_station_key_by_name(self.left_station)
|
||||
self.arrive_station_code = Station.get_station_key_by_name(self.arrive_station)
|
||||
# 多车站已放在下面处理
|
||||
# self.left_station = info.get('stations').get('left')
|
||||
# self.arrive_station = info.get('stations').get('arrive')
|
||||
# self.left_station_code = Station.get_station_key_by_name(self.left_station)
|
||||
# self.arrive_station_code = Station.get_station_key_by_name(self.arrive_station)
|
||||
self.stations = info.get('stations')
|
||||
self.stations = [self.stations] if isinstance(self.stations, dict) else self.stations
|
||||
|
||||
self.account_key = info.get('account_key')
|
||||
self.allow_seats = info.get('seats')
|
||||
@@ -74,13 +78,15 @@ class Job:
|
||||
:return:
|
||||
"""
|
||||
QueryLog.print_job_start()
|
||||
for date in self.left_dates:
|
||||
self.left_date = date
|
||||
response = self.query_by_date(date)
|
||||
self.handle_response(response)
|
||||
self.safe_stay()
|
||||
if is_main_thread():
|
||||
QueryLog.flush(sep='\t\t')
|
||||
for station in self.stations:
|
||||
self.refresh_station(station)
|
||||
for date in self.left_dates:
|
||||
self.left_date = date
|
||||
response = self.query_by_date(date)
|
||||
self.handle_response(response)
|
||||
self.safe_stay()
|
||||
if is_main_thread():
|
||||
QueryLog.flush(sep='\t\t')
|
||||
if is_main_thread():
|
||||
QueryLog.add_quick_log('').flush()
|
||||
else:
|
||||
@@ -201,6 +207,12 @@ class Job:
|
||||
User.check_members(self.members, self.account_key, call_back=self.set_passengers)
|
||||
return True
|
||||
|
||||
def refresh_station(self, station):
|
||||
self.left_station = station.get('left')
|
||||
self.arrive_station = station.get('arrive')
|
||||
self.left_station_code = Station.get_station_key_by_name(self.left_station)
|
||||
self.arrive_station_code = Station.get_station_key_by_name(self.arrive_station)
|
||||
|
||||
# 提供一些便利方法
|
||||
def get_info_of_left_date(self):
|
||||
return self.ticket_info[self.INDEX_LEFT_DATE]
|
||||
|
||||
Reference in New Issue
Block a user