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