mirror of https://github.com/testerSunshine/12306
增加配置
parent
246b364a52
commit
e5320663e8
|
@ -7,6 +7,7 @@ import threading
|
||||||
import urllib
|
import urllib
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
import Queue
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from config.ticketConf import _get_yaml
|
from config.ticketConf import _get_yaml
|
||||||
|
@ -32,6 +33,7 @@ class select:
|
||||||
self.user_info = ""
|
self.user_info = ""
|
||||||
self.secretStr = ""
|
self.secretStr = ""
|
||||||
self.ticket_black_list = dict()
|
self.ticket_black_list = dict()
|
||||||
|
self.submitQueue=Queue.Queue(20)
|
||||||
|
|
||||||
def get_ticket_info(self):
|
def get_ticket_info(self):
|
||||||
"""
|
"""
|
||||||
|
@ -226,25 +228,29 @@ class select:
|
||||||
# tiket_values = [k for k in value['map'].values()]
|
# tiket_values = [k for k in value['map'].values()]
|
||||||
self.secretStr = ticket_info[0]
|
self.secretStr = ticket_info[0]
|
||||||
train_no = ticket_info[3]
|
train_no = ticket_info[3]
|
||||||
print ('车次: ' + train_no + ' 始发车站: ' + self.from_station + ' 终点站: ' +
|
# print ('车次: ' + train_no + ' 始发车站: ' + self.from_station + ' 终点站: ' +
|
||||||
self.to_station + ' ' + self._station_seat[j].encode("utf8") + ':' + ticket_info[self.station_seat(self._station_seat[j].encode("utf8"))])
|
# self.to_station + ' ' + self._station_seat[j].encode("utf8") + ':' + ticket_info[self.station_seat(self._station_seat[j].encode("utf8"))])
|
||||||
if self.ticket_black_list.has_key(train_no) and (datetime.datetime.now() - self.ticket_black_list[train_no]).seconds/60 < int(self.ticket_black_list_time):
|
if self.ticket_black_list.has_key(train_no) and (datetime.datetime.now() - self.ticket_black_list[train_no]).seconds/60 < int(self.ticket_black_list_time):
|
||||||
print("该车次{} 正在被关小黑屋,跳过此车次".format(train_no))
|
print("该车次{} 正在被关小黑屋,跳过此车次".format(train_no))
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
print ('正在尝试提交订票...')
|
print ('正在尝试提交订票...')
|
||||||
if self.check_user():
|
self.submitQueue.put({"obj":self,"train_no":train_no,"seat":self._station_seat[j].encode("utf8")})
|
||||||
self.submit_station()
|
# if self.check_user():
|
||||||
self.getPassengerTicketStr(self._station_seat[j].encode("utf8"))
|
# self.submit_station()
|
||||||
self.getRepeatSubmitToken()
|
# self.getPassengerTicketStr(self._station_seat[j].encode("utf8"))
|
||||||
self.user_info = self.getPassengerDTOs()
|
# self.getRepeatSubmitToken()
|
||||||
if self.checkOrderInfo(train_no, self._station_seat[j].encode("utf8")):
|
# self.user_info = self.getPassengerDTOs()
|
||||||
break
|
# if self.checkOrderInfo(train_no, self._station_seat[j].encode("utf8")):
|
||||||
|
# break
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
else:
|
print "当前车次{0} 查询无符合条件坐席,正在重新查询".format(ticket_info[3])
|
||||||
pass
|
# elif ticket_info[11] == "N":
|
||||||
time.sleep(self.expect_refresh_interval)
|
# print("当前车次{0} 无票".format(ticket_info[3]))
|
||||||
|
# else:
|
||||||
|
# print("当前这次还处于待售状态,请耐心等待")
|
||||||
|
# time.sleep(self.expect_refresh_interval)
|
||||||
else:
|
else:
|
||||||
raise ticketConfigException("车次配置信息有误,请检查")
|
raise ticketConfigException("车次配置信息有误,请检查")
|
||||||
|
|
||||||
|
@ -619,16 +625,20 @@ class select:
|
||||||
from_station, to_station = self.station_table(self.from_station, self.to_station)
|
from_station, to_station = self.station_table(self.from_station, self.to_station)
|
||||||
if self.leftTicketLog(from_station, to_station):
|
if self.leftTicketLog(from_station, to_station):
|
||||||
num = 1
|
num = 1
|
||||||
|
runedTime=0
|
||||||
while 1:
|
while 1:
|
||||||
try:
|
try:
|
||||||
num += 1
|
num += 1
|
||||||
time.sleep(self.select_refresh_interval)
|
sleepTime=self.select_refresh_interval*1000-runedTime
|
||||||
|
if sleepTime>0:
|
||||||
|
time.sleep(sleepTime/1000.0)
|
||||||
if time.strftime('%H:%M:%S', time.localtime(time.time())) > "23:00:00":
|
if time.strftime('%H:%M:%S', time.localtime(time.time())) > "23:00:00":
|
||||||
print "12306休息时间,本程序自动停止,明天早上七点运行"
|
print "12306休息时间,本程序自动停止,明天早上七点运行"
|
||||||
break
|
break
|
||||||
start_time = datetime.datetime.now()
|
start_time = datetime.datetime.now()
|
||||||
self.submitOrderRequest(from_station, to_station)
|
self.submitOrderRequest(from_station, to_station)
|
||||||
print "正在第{0}次查询 乘车日期: {1} 车次{2} 查询无票 代理设置 无 总耗时{3}ms".format(num, self.station_date, ",".join(self.station_trains), (datetime.datetime.now()-start_time).microseconds/1000)
|
runedTime=(datetime.datetime.now()-start_time).microseconds/1000
|
||||||
|
print "正在第{0}次查询 乘车日期: {1} 车次{2} 查询无票 代理设置 无 总耗时{3}ms".format(num, self.station_date, ",".join(self.station_trains), runedTime)
|
||||||
except PassengerUserException as e:
|
except PassengerUserException as e:
|
||||||
print e.message
|
print e.message
|
||||||
break
|
break
|
||||||
|
@ -648,27 +658,41 @@ class select:
|
||||||
print(e.message)
|
print(e.message)
|
||||||
|
|
||||||
|
|
||||||
# class selectProducer(threading.Thread):
|
class selectProducer(threading.Thread):
|
||||||
# """刷票队列"""
|
"""刷票队列"""
|
||||||
# def __init__(self, t_name, queue):
|
def __init__(self, t_name, data):
|
||||||
# threading.Thread.__init__(self, name=t_name)
|
self.data=data
|
||||||
# self.data = queue
|
# tName=data.train_no+"_"+str(random.random)
|
||||||
# print "{0} 正在运行".format(t_name)
|
threading.Thread.__init__(self, name=t_name)
|
||||||
#
|
print "{0} 正在运行".format(t_name)
|
||||||
# def run(self):
|
|
||||||
# pass
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# class submitOrderConsumer(threading.Thread):
|
|
||||||
# """订单队列"""
|
|
||||||
# def __init__(self, t_name, queue):
|
|
||||||
# threading.Thread.__init__(self, name=t_name)
|
|
||||||
# self.data = queue
|
|
||||||
# print "{0} 正在运行".format(t_name)
|
|
||||||
#
|
|
||||||
# def run(self):
|
|
||||||
# pass
|
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.worker(self.data)
|
||||||
|
|
||||||
|
def worker(self,data):
|
||||||
|
if data.obj.check_user():
|
||||||
|
data.obj.submit_station()
|
||||||
|
data.obj.getPassengerTicketStr(self._station_seat[j].encode("utf8"))
|
||||||
|
data.obj.getRepeatSubmitToken()
|
||||||
|
data.obj.user_info = self.getPassengerDTOs()
|
||||||
|
if data.obj.checkOrderInfo(data.train_no, data.seat):
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
class submitOrderConsumer(threading.Thread):
|
||||||
|
"""订单队列"""
|
||||||
|
def __init__(self,t_name, queue):
|
||||||
|
threading.Thread.__init__(self, name=t_name)
|
||||||
|
self.data = queue
|
||||||
|
print "{0} 正在运行".format(t_name)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
while 1:
|
||||||
|
if not self.data.empty():
|
||||||
|
taskData=self.data.get()
|
||||||
|
selectProducer('submit_'+str(random.random),taskData).start()
|
||||||
|
else:
|
||||||
|
time.sleep(1.5)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
a = select('上海', '北京')
|
a = select('上海', '北京')
|
||||||
|
|
Loading…
Reference in New Issue