优化查询与参数获取
This commit is contained in:
3
main.py
3
main.py
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import py12306
|
||||
|
||||
sys.path.insert(0, 'py12306')
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
@@ -236,6 +236,14 @@ class Ticket(TimestampMixin, BaseModel):
|
||||
class Meta:
|
||||
table = 'tickets'
|
||||
|
||||
@property
|
||||
def left_date_order(self):
|
||||
return self.left_date.strftime('%Y-%m-%d')
|
||||
|
||||
@property
|
||||
def secret_str_unquote(self) -> str:
|
||||
return urllib.parse.unquote(self.secret_str)
|
||||
|
||||
@classmethod
|
||||
def parse_tickets_text(cls, tickts: List[str]):
|
||||
ret = []
|
||||
|
||||
@@ -142,9 +142,9 @@ class OrderTicket:
|
||||
async def submit_order_request(self):
|
||||
""" 提交下单请求 """
|
||||
data = {
|
||||
'secretStr': self.ticket.secret_str_unquote(), # 解密
|
||||
'train_date': self.ticket.left_date_order(), # 出发时间
|
||||
'back_train_date': self.ticket.left_date_order(), # 返程时间
|
||||
'secretStr': self.ticket.secret_str_unquote, # 解密
|
||||
'train_date': self.ticket.left_date_order, # 出发时间
|
||||
'back_train_date': self.ticket.left_date_order, # 返程时间
|
||||
'tour_flag': 'dc', # 旅途类型
|
||||
'purpose_codes': 'ADULT', # 成人 | 学生
|
||||
'query_from_station_name': StationHelper.cn_by_id(self.query.left_station),
|
||||
@@ -226,7 +226,7 @@ class OrderTicket:
|
||||
""" 获取队列人数 """
|
||||
data = { #
|
||||
'train_date': '{} 00:00:00 GMT+0800 (China Standard Time)'.format(
|
||||
datetime.datetime.strptime(self.ticket.left_date_order(), '%Y-%m-%d').strftime("%a %h %d %Y")),
|
||||
self.ticket.left_date.strftime("%a %h %d %Y")),
|
||||
'train_no': self.ticket_info_for_passenger_form['queryLeftTicketRequestDTO']['train_no'],
|
||||
'stationTrainCode': self.ticket_info_for_passenger_form['queryLeftTicketRequestDTO']['station_train_code'],
|
||||
'seatType': self.ticket.available_seat.get('order_id'),
|
||||
|
||||
@@ -85,7 +85,7 @@ class QueryTicket:
|
||||
try:
|
||||
self.api_type = res.group(1)
|
||||
Logger.info(f'更新查询接口地址: {self.api_type}')
|
||||
except IndexError:
|
||||
except (IndexError, AttributeError):
|
||||
raise RetryException('获取车票查询地址失败')
|
||||
return await self.get_query_api_type()
|
||||
|
||||
@@ -162,7 +162,7 @@ class QueryTicket:
|
||||
response = await self.session.otn_query_left_ticket(await self.get_query_api_type(), query)
|
||||
if response.status is not 200:
|
||||
Logger.error(f'车票查询失败, 状态码 {response.status}, {response.reason} 请求被拒绝')
|
||||
return []
|
||||
raise RetryException(wait_s=1, default=[])
|
||||
result = response.json().get('data.result')
|
||||
if not result:
|
||||
Logger.error(f'车票查询失败, {response.reason}')
|
||||
|
||||
@@ -150,6 +150,19 @@ def json_friendly_dumps(obj: Any, **kwargs):
|
||||
return json.dumps(obj, ensure_ascii=False, default=json_encoder, **kwargs)
|
||||
|
||||
|
||||
def str_to_date(_str: str):
|
||||
if isinstance(_str, datetime.date):
|
||||
return _str
|
||||
if len(_str) is 10:
|
||||
return datetime.datetime.strptime(_str, '%Y-%m-%d').date()
|
||||
else:
|
||||
return datetime.datetime.strptime(_str, '%Y-%m-%d %H:%M:%S')
|
||||
|
||||
|
||||
def lmap(*args, **kwargs):
|
||||
return list(map(*args, **kwargs))
|
||||
|
||||
|
||||
class ShareInstance:
|
||||
__session = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user