import tkinter.messagebox as messagebox
import requests
import sys
from stationapi import url_leftTicket
#得出原始车票信息
def query(condition):
url = 'https://kyfw.12306.cn/otn/{}?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(url_leftTicket [0],condition[0], condition[1], condition[2])
print(url)
try:
tickethtml = requests.get(url,verify=False)
ticket_list = tickethtml.json()['data']['result']
except:
messagebox.showinfo('连接故障','网络连接不稳定,请稍后再试!')
sys.exit()
return ticket_list
#得出分析后的车票信息
def analyze(ticket_list,stations):
tickets = []
for t in ticket_list:
ta = t.split('|')
if ta[0] == "null":
continue
train_no = ta[2]
checi = ta[3]
shifazhan = ta[4]
zhongdian = ta[5]
chufazhan = ta[6]
daodazhan = ta[7]
chufashijian = ta[8]
daodashijian = ta[9]
lishi = ta[10]
train_date = ta[13]
from_station_no = ta[16]
to_station_no = ta[17]
gaojiruanwo = ta[21]
ruanwo = ta[23]
wuzuo = ta[26]
yingwo = ta[28]
yingzuo = ta[29]
erdengzuo = ta[30]
yidengzuo = ta[31]
shangwuzuo = ta[25] or ta[32]
dongwo = ta[33]
seat_types = ta[35]
station = '-'.join([stations[chufazhan][1], stations[daodazhan][1]])
qtime = '-'.join([chufashijian, daodashijian])
tickets.append([checi,station,qtime,lishi,shangwuzuo,yidengzuo,erdengzuo,ruanwo,dongwo,yingwo,yingzuo,wuzuo,train_no,train_date,from_station_no,to_station_no,seat_types])
return tickets
#获取票价信息
def get_price(ticket):
tlen = 13
price = ['' for n in range(tlen)]
d = ticket[14][:4]+'-'+ticket[14][4:6]+'-'+ticket[14][6:]
url = 'https://kyfw.12306.cn/otn/leftTicket/queryTicketPrice?train_no={}&from_station_no={}&to_station_no={}&seat_types={}&train_date={}'.format(ticket[13],ticket[15],ticket[16],ticket[17],d)
#print(url)
ps = requests.get(url,verify=False)
try:
pd = ps.json()["data"]
#高铁
if ticket[1].startswith('G'):
if ("O" in pd.keys()):
price[7] = pd["O"]
if ("A9" in pd.keys()):
price[5] = pd["A9"]
if ("P" in pd.keys()):
price[5] = pd["P"]
if ("M" in pd.keys()):
price[6] = pd["M"]
#动车
elif ticket[1].startswith('D'):
if ("A4" in pd.keys()):
price[8] = pd["A4"]
if ("F" in pd.keys()):
price[9] = pd["F"]
if ("O" in pd.keys()):
price[7] = pd["O"]
if ("WZ" in pd.keys()):
price[12] = pd["WZ"]
if ("M" in pd.keys()):
price[6] = pd["M"]
#Z K T
else:
if ("A4" in pd.keys()):
price[8] = pd["A4"]
if ("A3" in pd.keys()):
price[10] = pd["A3"]
if ("A1" in pd.keys()):
price[11] = pd["A1"]
if ("WZ" in pd.keys()):
price[12] = pd["WZ"]
except:
return price
return price
python火车票余票查询(ticketapi)
最新推荐文章于 2024-01-20 17:31:25 发布