########################################################
# 火车票抢票系统V1.0
########################################################
import requests
import Station_Parse
import threading
import os
from datetime import datetime
from splinter.browser import Browser
from time import sleep
from tkinter import *
from PIL import Image, ImageTk
from tkinter import messagebox
from requests.packages.urllib3.exceptions import InsecureRequestWarning
# 忽视该警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
# 车票查询部分
#-------------------------------------------------------------------------------------------------------------------------------------------
# 数据处理+显示
class Trains_Demo():
# 初始化
def __init__(self, txt_show_ticket, raw_trains, option):
self.headers = '车次: 车站: 时间: 历时: 商务/特等座: 一等座: 二等座: 高级软卧: 软卧: 动卧: 硬卧: 软座: 硬座: 无座:'.split()
self.raw_trains = raw_trains
self.option = option
txt_show_ticket.delete(1.0, END)
# 获取出发和到达站
def get_from_to_station_name(self, data_list):
self.from_station_name = data_list[6]
self.to_station_name = data_list[7]
self.from_to_station_name = Station_Parse.parse_station().disparse(self.from_station_name) + '-->' + Station_Parse.parse_station().disparse(self.to_station_name)
return self.from_to_station_name
# 获得出发和到达时间
def get_start_arrive_time(self, data_list):
self.start_arrive_time = data_list[8] + '-->' + data_list[9]
return self.start_arrive_time
# 解析trains数据(与headers依次对应)
def parse_trains_data(self, data_list):
return {
'trips': data_list[3],
'from_to_station_name': self.get_from_to_station_name(data_list),
'start_arrive_time': self.get_start_arrive_time(data_list),
'duration': data_list[10],
'business_premier_seat': data_list[32] or '--',
'first_class_seat': data_list[31] or '--',
'second_class_seat': data_list[30] or '--',
'senior_soft_sleep': data_list[21] or '--',
'soft_sleep': data_list[23] or '--',
'move_sleep': data_list[33] or '--',
'hard_sleep': data_list[28] or '--',
'soft_seat': data_list[24] or '--',
'hard_seat': data_list[29] or '--',
'no_seat': data_list[26] or '--',
}
# 判断是否需要显示
def need_show(self, data_list):
self.trips = data_list[3]
initial = self.trips[0].lower()
if 'a' in self.option:
return self.trips
else:
return(initial in self.option)
# 数据显示
def show_trian_data(self):
self.t_num = 0
for self.train in self.raw_trains:
self.data_list = self.train.split('|')
if self.need_show(self.data_list):
self.values_row = []
self.parsed_train_data = self.parse_trains_data(self.data_list)
self.values_row.append(self.headers[0] + self.parsed_train_data['trips'])
self.values_row.append(self.headers[1] + self.parsed_train_data['from_to_station_name'])
self.values_row.append(self.headers[2] + self.parsed_train_data['start_arrive_time'])
self.values_row.append(self.headers[3] + self.parsed_train_data['duration'])
self.values_row.append(self.headers[4] + self.parsed_train_data['business_premier_seat'])
self.values_row.append(self.headers[5] + self.parsed_train_data['first_class_seat'])
self.values_row.append(self.headers[6] + self.parsed_train_data['second_class_seat'])
self.values_row.append(self.headers[7] + self.parsed_train_data['senior_soft_sleep'])
self.values_row.append(self.headers[8] + self.parsed_train_data['soft_sleep'])
self.values_row.append(self.headers[9] + self.parsed_train_data['move_sleep'])
self.values_row.append(self.headers[10] + self.parsed_train_data['hard_sleep'])
self.values_row.append(self.headers[11] + self.parsed_train_data['soft_seat'])