test version

dev
wenxianping 2018-01-25 14:15:47 +08:00
parent b056211587
commit c1ce4e4469
5 changed files with 85 additions and 36 deletions

View File

@ -41,18 +41,36 @@
set: set:
station_dates: station_dates:
# - "2018-01-27" - "2018-02-23"
# - "2018-01-28"
- "2018-02-09"
- "2018-02-10"
# - "2018-02-09"
station_trains: station_trains:
- "G4741" - "G1031"
- "G2365" - "G1013"
- "G1371" - "G73"
- "G1337" - "G6001"
- "G1377" - "G6163"
- "G1329" - "G1015"
- "G79"
- "G6031"
- "G279"
- "G817"
- "G1017"
- "G6485"
- "G821"
- "G1019"
- "G6033"
- "G75"
- "G6025"
- "G1021"
- "G825"
- "G6027"
- "G6141"
# - "G4741"
# - "G2365"
# - "G1371"
# - "G1337"
# - "G1377"
# - "G1329"
# - "G1302" # - "G1302"
# - "G1372" # - "G1372"
# - "G1326" # - "G1326"
@ -65,13 +83,13 @@ set:
# - "G1373" # - "G1373"
# - "G1363" # - "G1363"
# - "G4933" # - "G4933"
from_station: "上海" from_station: "长沙南"
to_station: "邵阳" to_station: "深圳北"
set_type: set_type:
- "二等座" - "二等座"
is_more_ticket: True is_more_ticket: True
ticke_peoples: ticke_peoples:
- "文贤平" - "高智"
# - "彭淑杰" # - "彭淑杰"
12306count: 12306count:
# - uesr: "" # - uesr: ""

View File

@ -32,6 +32,29 @@ class GoLogin:
# for index, c in enumerate(myurllib2.cookiejar): # for index, c in enumerate(myurllib2.cookiejar):
# stoidinput(c) # stoidinput(c)
def getRandCode(self):
"""
识别验证码
:return: 坐标
"""
if self.is_aotu_code:
if self.aotu_code_type == 1:
return DamatuApi(_get_yaml()["damatu"]["uesr"], _get_yaml()["damatu"]["pwd"], "./tkcode").main()
elif self.aotu_code_type == 2:
rc = RClient(_get_yaml()["damatu"]["uesr"], _get_yaml()["damatu"]["pwd"])
im = open('./tkcode', 'rb').read()
Result = rc.rk_create(im, 6113)
if "Result" in Result:
return self.codexy(Ofset=",".join(list(Result["Result"])), is_raw_input=False)
else:
if "Error" in Result and Result["Error"]:
print Result["Error"]
return ""
else:
img = Image.open('./tkcode')
img.show()
return self.codexy()
def readImg(self, code_url): def readImg(self, code_url):
""" """
增加手动打码只是登录接口完全不用担心提交订单效率 增加手动打码只是登录接口完全不用担心提交订单效率
@ -47,26 +70,8 @@ class GoLogin:
result = self.httpClint.send(codeimgUrl, is_logger=False) result = self.httpClint.send(codeimgUrl, is_logger=False)
try: try:
open(img_path, 'wb').write(result) open(img_path, 'wb').write(result)
if self.is_aotu_code:
if self.aotu_code_type == 1:
return DamatuApi(_get_yaml()["damatu"]["uesr"], _get_yaml()["damatu"]["pwd"], img_path).main()
elif self.aotu_code_type == 2:
rc = RClient(_get_yaml()["damatu"]["uesr"], _get_yaml()["damatu"]["pwd"])
im = open('./tkcode', 'rb').read()
Result = rc.rk_create(im, 6113)
if "Result" in Result:
return self.codexy(Ofset=",".join(list(Result["Result"])), is_raw_input=False)
else:
if "Error" in Result and Result["Error"]:
print Result["Error"]
return ""
else:
img = Image.open('./tkcode')
img.show()
return self.codexy()
except OSError as e: except OSError as e:
print (e) print (e)
return ""
def codexy(self, Ofset=None, is_raw_input=True): def codexy(self, Ofset=None, is_raw_input=True):
""" """
@ -212,13 +217,13 @@ class GoLogin:
while True: while True:
self.cookietp() self.cookietp()
self.httpClint.set_cookies(_jc_save_wfdc_flag="dc", _jc_save_fromStation="%u4E0A%u6D77%u8679%u6865%2CAOH", _jc_save_toStation="%u5170%u5DDE%u897F%2CLAJ", _jc_save_fromDate="2018-02-14", _jc_save_toDate="2018-01-16", RAIL_DEVICEID="EN_3_EGSe2GWGHXJeCkFQ52kHvNCrNlkz9n1GOqqQ1wR0i98WsD8Gj-a3YHZ-XYKeESWgCiJyyucgSwkFOzVHhHqfpidLPcm2vK9n83uzOPuShO3Pl4lCydAtQu4BdFqz-RVmiduNFixrcrN_Ny43135JiEtqLaI") self.httpClint.set_cookies(_jc_save_wfdc_flag="dc", _jc_save_fromStation="%u4E0A%u6D77%u8679%u6865%2CAOH", _jc_save_toStation="%u5170%u5DDE%u897F%2CLAJ", _jc_save_fromDate="2018-02-14", _jc_save_toDate="2018-01-16", RAIL_DEVICEID="EN_3_EGSe2GWGHXJeCkFQ52kHvNCrNlkz9n1GOqqQ1wR0i98WsD8Gj-a3YHZ-XYKeESWgCiJyyucgSwkFOzVHhHqfpidLPcm2vK9n83uzOPuShO3Pl4lCydAtQu4BdFqz-RVmiduNFixrcrN_Ny43135JiEtqLaI")
self.randCode = self.readImg(self.urlConf["getCodeImg"]["req_url"]) self.readImg(self.urlConf["getCodeImg"]["req_url"])
self.randCode = self.getRandCode()
login_num += 1 login_num += 1
self.auth() self.auth()
if self.codeCheck(): if self.codeCheck():
uamtk = self.baseLogin(user, passwd) uamtk = self.baseLogin(user, passwd)
if uamtk: if uamtk:
self.getUserName(uamtk)
break break
def logout(self): def logout(self):

View File

@ -19,6 +19,8 @@ from myException.ticketConfigException import ticketConfigException
from myException.ticketIsExitsException import ticketIsExitsException from myException.ticketIsExitsException import ticketIsExitsException
from myException.ticketNumOutException import ticketNumOutException from myException.ticketNumOutException import ticketNumOutException
from myUrllib.httpUtils import HTTPClient from myUrllib.httpUtils import HTTPClient
import threading
reload(sys) reload(sys)
sys.setdefaultencoding('utf-8') sys.setdefaultencoding('utf-8')
@ -41,6 +43,8 @@ class select:
self.httpClint = HTTPClient() self.httpClint = HTTPClient()
self.confUrl = urlConf.urls self.confUrl = urlConf.urls
self.login = GoLogin(self.httpClint, self.confUrl, self.is_aotu_code, self.aotu_code_type) self.login = GoLogin(self.httpClint, self.confUrl, self.is_aotu_code, self.aotu_code_type)
self.is_download_img = False
self.randCode = ""
def get_ticket_info(self): def get_ticket_info(self):
""" """
@ -136,6 +140,22 @@ class select:
tomorrow = today+datetime.timedelta(1) tomorrow = today+datetime.timedelta(1)
return tomorrow.strftime('%Y-%m-%d') return tomorrow.strftime('%Y-%m-%d')
def callReadImg(self, code_url):
"""
下载验证码
:param code_url: 验证码url
:return:
"""
self.login.readImg(code_url=code_url)
self.is_aotu_code = True
def callRandCode(self):
"""
识别验证码
:return:
"""
self.randCode = self.login.getRandCode()
def getRepeatSubmitToken(self): def getRepeatSubmitToken(self):
""" """
获取提交车票请求token 获取提交车票请求token
@ -228,6 +248,8 @@ class select:
break break
else: else:
print ('正在尝试提交订票...') print ('正在尝试提交订票...')
t = threading.Thread(target=self.callReadImg, args=self.confUrl["codeImgByOrder"]["req_url"])
t.start()
# self.submitOrderRequestFunc(from_station, to_station, self.time()) # self.submitOrderRequestFunc(from_station, to_station, self.time())
self.submit_station() self.submit_station()
self.getPassengerTicketStr(self._station_seat[j].encode("utf8")) self.getPassengerTicketStr(self._station_seat[j].encode("utf8"))
@ -240,7 +262,7 @@ class select:
pass pass
else: else:
pass pass
time.sleep(self.expect_refresh_interval) # time.sleep(self.expect_refresh_interval)
else: else:
print "车次配置信息有误,或者返回数据异常,请检查 {}".format(station_ticket) print "车次配置信息有误,或者返回数据异常,请检查 {}".format(station_ticket)
@ -459,13 +481,16 @@ class select:
"_json_at": "", "_json_at": "",
"REPEAT_SUBMIT_TOKEN": self.get_token(), "REPEAT_SUBMIT_TOKEN": self.get_token(),
} }
try: try:
for i in range(3): for i in range(3):
if is_node_code: if is_node_code:
print("正在使用自动识别验证码功能") print("正在使用自动识别验证码功能")
checkRandCodeAnsyn = self.confUrl["checkRandCodeAnsyn"]["req_url"] checkRandCodeAnsyn = self.confUrl["checkRandCodeAnsyn"]["req_url"]
codeImgByOrder = self.confUrl["codeImgByOrder"]["req_url"] codeImgByOrder = self.confUrl["codeImgByOrder"]["req_url"]
randCode = self.login.readImg(codeImgByOrder) self.login.readImg(codeImgByOrder)
randCode = self.login.getRandCode()
randData = { randData = {
"randCode": randCode, "randCode": randCode,
"rand": "randp", "rand": "randp",

View File

@ -9,6 +9,7 @@ import sys
from config import logger from config import logger
class HTTPClient(object): class HTTPClient(object):
def __init__(self): def __init__(self):

BIN
tkcode

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB