From d7c5c7215c5db070492a25098288e2cb7620ec2f Mon Sep 17 00:00:00 2001 From: wenxianping <931128603@qq.com> Date: Sun, 21 Jan 2018 09:12:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=20=E6=96=B0=E7=89=88?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=80=BB=E8=BE=91=20=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?=E8=AE=A2=E7=A5=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++++ config/ticketConf.py | 1 - config/urlConf.py | 1 - init/login.py | 4 +++- init/select_ticket_info.py | 9 ++------- tkcode | Bin 11760 -> 11661 bytes 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2c4ac8e..ed17b64 100644 --- a/README.md +++ b/README.md @@ -170,4 +170,10 @@ - 更新请求第三方库 - 优化若干代码,小伙伴尽情的放肆起来 +- 2018.1.21跟新 + - 修复若干bug + - 合并dev + - 恢复之前因为12306改版引起的订票功能 + + diff --git a/config/ticketConf.py b/config/ticketConf.py index f67221d..ea70f22 100644 --- a/config/ticketConf.py +++ b/config/ticketConf.py @@ -1,6 +1,5 @@ # -*- coding: utf8 -*- __author__ = 'MR.wen' - import os import yaml diff --git a/config/urlConf.py b/config/urlConf.py index d2e7651..59c6afd 100644 --- a/config/urlConf.py +++ b/config/urlConf.py @@ -85,5 +85,4 @@ urls = { "req_url": "https://kyfw.12306.cn/otn/queryOrder/initNoComplete", "req_type": "post" } - } \ No newline at end of file diff --git a/init/login.py b/init/login.py index 6fbb34d..c67e265 100644 --- a/init/login.py +++ b/init/login.py @@ -149,7 +149,7 @@ class GoLogin: if messages.find("密码输入错误") is not -1: raise UserPasswordException("{0}".format(messages)) else: - print ("登录失败: {0}".format("".join(tresult))) + print ("登录失败: {0}".format(messages)) print ("尝试重新登陆") return False else: @@ -180,6 +180,8 @@ class GoLogin: :return: """ user, passwd = _get_yaml()["set"]["12306count"][0]["uesr"], _get_yaml()["set"]["12306count"][1]["pwd"] + if not user or not passwd: + raise UserPasswordException("温馨提示: 用户名或者密码为空,请仔细检查!") login_num = 0 while True: self.cookietp() diff --git a/init/select_ticket_info.py b/init/select_ticket_info.py index 8754487..3f73178 100644 --- a/init/select_ticket_info.py +++ b/init/select_ticket_info.py @@ -1,17 +1,14 @@ # -*- coding=utf-8 -*- import json import datetime -import random import re import socket import urllib import sys import time from collections import OrderedDict - from config import urlConf from init import login - from config.emailConf import sendEmail from config.ticketConf import _get_yaml from damatuCode.damatuWeb import DamatuApi @@ -141,7 +138,7 @@ class select: 获取提交车票请求token :return: token """ - initdc_url = self.confUrl["initdc_url"]["req+url"] + initdc_url = self.confUrl["initdc_url"]["req_url"] initdc_result = self.httpClint.send(initdc_url) token_name = re.compile(r"var globalRepeatSubmitToken = '(\S+)'") ticketInfoForPassengerForm_name = re.compile(r'var ticketInfoForPassengerForm=(\{.+\})?') @@ -187,7 +184,7 @@ class select: select_url = self.confUrl["select_url"]["req_url"].format( self.station_date if station_date is None else station_date, from_station, to_station) station_ticket = self.httpClint.send(select_url) - return station_ticket + return json.loads(station_ticket) def submitOrderRequestImplement(self, from_station, to_station,): """ @@ -652,8 +649,6 @@ class select: print(e.message) - - if __name__ == '__main__': login() # a = select('上海', '北京') diff --git a/tkcode b/tkcode index d7eb6d9af360f49606fa45327ec329586336e529..e71efdc8a9813a4a512fb974c981f66cdabe8e5e 100644 GIT binary patch delta 10536 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 x_RA#GVJoOkZ~Utg{P_0?_