diff --git a/init/select_ticket_info.py b/init/select_ticket_info.py index 85a8da0..655f4e5 100644 --- a/init/select_ticket_info.py +++ b/init/select_ticket_info.py @@ -170,7 +170,7 @@ class select: 'normal_passengers']: normal_passengers = jsonData['data']['normal_passengers'] _normal_passenger = [normal_passengers[i] for i in range(len(normal_passengers))if normal_passengers[i]["passenger_name"] in self.ticke_peoples] - return _normal_passenger if _normal_passenger else normal_passengers[0] # 如果配置乘车人没有在账号,则默认返回第一个用户 + return _normal_passenger if _normal_passenger else [normal_passengers[0]] # 如果配置乘车人没有在账号,则默认返回第一个用户 else: if 'data' in jsonData and 'exMsg' in jsonData['data'] and jsonData['data']['exMsg']: print(jsonData['data']['exMsg']) @@ -246,20 +246,21 @@ class select: 检查用户是否达到订票条件 :return: """ - check_user_url = self.confUrl["check_user_url"]["req_url"] - data = dict(_json_att=None) - check_user = self.httpClint.send(check_user_url, data) - check_user_flag = check_user['data']['flag'] - if check_user_flag is True: - return True + # check_user_url = self.confUrl["check_user_url"]["req_url"] + # data = dict(_json_att=None) + # check_user = self.httpClint.send(check_user_url, data) + # check_user_flag = check_user['data']['flag'] + is_login = self.call_login(auth=True) + if "result_code" in is_login and is_login["result_code"] == 0: + self.is_check_user["user_time"] = datetime.datetime.now() else: - if check_user['messages']: - print ('用户检查失败:%s,可能未登录,可能session已经失效' % check_user['messages'][0]) + if "result_message" in is_login and is_login["result_message"]: + print ('用户检查失败:%s,可能未登录,可能session已经失效' % is_login["result_message"]) print ('正在尝试重新登录') self.call_login() self.is_check_user["user_time"] = datetime.datetime.now() else: - print ('用户检查失败: %s,可能未登录,可能session已经失效' % check_user) + print ('用户检查失败: %s,可能未登录,可能session已经失效' % is_login) print ('正在尝试重新登录') self.call_login() self.is_check_user["user_time"] = datetime.datetime.now() @@ -618,23 +619,27 @@ class select: # else: # self.submitOrderRequest() - def call_login(self): + def call_login(self, auth=False): """ 登录回调方法 :return: """ login = GoLogin(self.httpClint, self.confUrl) - login.go_login() + if auth: + return login.auth() + else: + login.go_login() def main(self): self.call_login() from_station, to_station = self.station_table(self.from_station, self.to_station) # if self.leftTicketLog(from_station, to_station): + self.check_user() num = 1 while 1: try: num += 1 - if "user_time" in self.is_check_user and (datetime.datetime.now() - self.is_check_user["user_time"]).seconds/60 > 10: + if "user_time" in self.is_check_user and (datetime.datetime.now() - self.is_check_user["user_time"]).seconds/60 > 5: # 十分钟检查一次用户是否登录 self.check_user() time.sleep(self.select_refresh_interval) diff --git a/myUrllib/httpUtils.py b/myUrllib/httpUtils.py index 0330e48..0149160 100644 --- a/myUrllib/httpUtils.py +++ b/myUrllib/httpUtils.py @@ -77,6 +77,7 @@ class HTTPClient(object): def send(self, url, data=None, **kwargs): """send request to url.If response 200,return response, else return None.""" + error_data = {"code": 99999, "data": ""} if data: method = "post" self.setHeaders({"Content-Length": "{0}".format(len(data))}) @@ -84,31 +85,34 @@ class HTTPClient(object): method = "get" self.resetHeaders() response = self._s.request(method=method, + timeout=10, url=url, data=data, **kwargs) - # print "url: {0} 返回码: {1}, 返回码type: {2}".format(url, response.status_code, type(response.status_code)) - # print "response.content" + response.content try: if not response.content: response = self._s.request(method=method, + timeout=10, url=url, data=data, **kwargs) if response.content: return json.loads(response.content) if method == "post" else response.content else: - return "" + return error_data + except requests.exceptions.Timeout as e: + print e.message + return error_data except requests.exceptions.ConnectionError as e: print e.message + return error_data except ValueError as e: if e.message == "No JSON object could be decoded": print("12306接口无响应,正在重试") + return error_data else: print(e.message) - except KeyError as e: - print(e.message) - except TypeError as e: - print(e.message) + return error_data except socket.error as e: - print(e.message) \ No newline at end of file + print(e.message) + return error_data \ No newline at end of file diff --git a/tkcode b/tkcode index bc670e4..b0cac8e 100644 Binary files a/tkcode and b/tkcode differ