mirror of https://github.com/testerSunshine/12306
增加日志
parent
0b3d04ace4
commit
133606f170
|
@ -1,3 +1,4 @@
|
|||
*.html
|
||||
*.pyc
|
||||
*.yaml
|
||||
*.log
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
saleMinDelayDay = 0
|
||||
saleMaxDelayDay = 59
|
||||
saleStartTime = "06:00:00"
|
||||
saleStopTime = "23:00:00"
|
||||
rushRefreshMinTimeIntval = 2000
|
||||
rushRefreshMaxTimeIntval = 3600000
|
||||
rushRefreshTimeIntval = 100
|
||||
|
||||
RS_SUC = 0
|
||||
RS_TIMEOUT = 1
|
||||
RS_JSON_ERROR = 2
|
||||
RS_OTHER_ERROR = 3
|
||||
|
||||
|
||||
def getNowTimestamp():
|
||||
return time.time()
|
||||
|
||||
|
||||
def getMinimumDate():
|
||||
return time.localtime(getNowTimestamp() + saleMinDelayDay * 24 * 3600)[:3]
|
||||
|
||||
|
||||
def getMaximumDate():
|
||||
return time.localtime(getNowTimestamp() + saleMaxDelayDay * 24 * 3600)[:3]
|
||||
|
||||
|
||||
def getMinimumTime():
|
||||
return [int(x) for x in saleStartTime.split(":")]
|
||||
|
||||
|
||||
def getMaximumTime():
|
||||
return [int(x) for x in saleStopTime.split(":")]
|
||||
|
||||
|
||||
def decMakeDir(func):
|
||||
def handleFunc(*args, **kwargs):
|
||||
dirname = func(*args, **kwargs)
|
||||
if not os.path.exists(dirname):
|
||||
os.makedirs(dirname)
|
||||
elif not os.path.isdir(dirname):
|
||||
pass
|
||||
|
||||
return dirname
|
||||
|
||||
return func
|
||||
|
||||
|
||||
def getWorkDir():
|
||||
return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
|
||||
@decMakeDir
|
||||
def getTmpDir():
|
||||
return os.path.join(getWorkDir(), "tmp")
|
||||
|
||||
|
||||
@decMakeDir
|
||||
def getLogDir():
|
||||
return os.path.join(getTmpDir(), "log")
|
||||
|
||||
|
||||
@decMakeDir
|
||||
def getCacheDir():
|
||||
return os.path.join(getTmpDir(), "cache")
|
||||
|
||||
|
||||
@decMakeDir
|
||||
def getVCodeDir():
|
||||
return os.path.join(getTmpDir(), "vcode")
|
||||
|
||||
|
||||
def getVCodeImageFile(imageName):
|
||||
return os.path.join(getVCodeDir(), imageName + ".jpg")
|
||||
|
||||
|
||||
def getCacheFile(cacheType):
|
||||
return os.path.join(getCacheDir(), cacheType + ".cache")
|
|
@ -0,0 +1,61 @@
|
|||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import time
|
||||
import logging
|
||||
|
||||
from config import configCommon
|
||||
|
||||
logger = None
|
||||
loggerHandler = None
|
||||
dateStr = '' #默认拥有日期后缀
|
||||
suffix = '' #除了日期外的后缀
|
||||
|
||||
def setSuffix(s):
|
||||
global suffix
|
||||
suffix = s
|
||||
|
||||
def getTodayDateStr():
|
||||
return time.strftime("%Y-%m-%d", time.localtime(configCommon.getNowTimestamp()))
|
||||
|
||||
def setDateStr(s):
|
||||
global dateStr
|
||||
dateStr = s
|
||||
|
||||
def isAnotherDay(s):
|
||||
global dateStr
|
||||
return dateStr != s
|
||||
|
||||
def getLogFile():
|
||||
global dateStr, suffix
|
||||
rtn = os.path.join(configCommon.getLogDir(), dateStr)
|
||||
if suffix:
|
||||
rtn += "_" + suffix
|
||||
return rtn + ".log"
|
||||
|
||||
def log(msg, func = "info"):
|
||||
global logger
|
||||
if not logger:
|
||||
logger = logging.getLogger()
|
||||
logger.setLevel(logging.INFO)
|
||||
|
||||
todayStr = getTodayDateStr()
|
||||
if isAnotherDay(todayStr):
|
||||
setDateStr(todayStr)
|
||||
logger.removeHandler(loggerHandler)
|
||||
|
||||
fh = logging.FileHandler(getLogFile())
|
||||
fm = logging.Formatter(u'[%(asctime)s][%(levelname)8s] --- %(message)s (%(filename)s:%(lineno)s)')
|
||||
fh.setFormatter(fm)
|
||||
|
||||
logger.addHandler(fh)
|
||||
|
||||
levels = {
|
||||
"debug": logger.debug,
|
||||
"info": logger.info,
|
||||
"warning": logger.warning,
|
||||
"error": logger.error,
|
||||
"critical": logger.critical
|
||||
}
|
||||
|
||||
levels[func](msg)
|
|
@ -41,10 +41,10 @@
|
|||
|
||||
set:
|
||||
station_dates:
|
||||
- "2018-01-27"
|
||||
# - "2018-01-27"
|
||||
# - "2018-01-28"
|
||||
# - "2018-02-10"
|
||||
# - "2018-02-09"
|
||||
- "2018-02-10"
|
||||
- "2018-02-09"
|
||||
station_trains:
|
||||
- "G2365"
|
||||
# - "K4300"
|
||||
|
@ -67,25 +67,25 @@ set:
|
|||
12306count:
|
||||
# - uesr: ""
|
||||
# - pwd: "apple1995"
|
||||
- uesr: "@qq.com"
|
||||
- uesr: "931128603@qq.com"
|
||||
- pwd: "QWERTY"
|
||||
|
||||
select_refresh_interval: 0.1
|
||||
expect_refresh_interval: 0.3
|
||||
select_refresh_interval: 0.5
|
||||
expect_refresh_interval: 0.1
|
||||
ticket_black_list_time: 3
|
||||
is_aotu_code: False
|
||||
is_aotu_code: True
|
||||
aotu_code_type: 2
|
||||
#enable_proxy: False
|
||||
|
||||
damatu:
|
||||
uesr: ""
|
||||
uesr: "931128603"
|
||||
pwd: "qazWSX1995"
|
||||
|
||||
email_conf:
|
||||
is_email: False
|
||||
email: "@qq.com "
|
||||
notice_email_list: "@qq.com"
|
||||
username: ""
|
||||
is_email: True
|
||||
email: "931128603@qq.com "
|
||||
notice_email_list: "61995120@qq.com"
|
||||
username: "931128603"
|
||||
password: "xwopwxbkupbqbfgb"
|
||||
host: "smtp.qq.com"
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ class GoLogin:
|
|||
print ("下载验证码...")
|
||||
codeimgUrl = code_url
|
||||
img_path = './tkcode'
|
||||
result = self.httpClint.send(codeimgUrl)
|
||||
result = self.httpClint.send(codeimgUrl, is_logger=False)
|
||||
try:
|
||||
open(img_path, 'wb').write(result)
|
||||
if self.is_aotu_code:
|
||||
|
|
|
@ -5,7 +5,9 @@ import socket
|
|||
from time import sleep
|
||||
|
||||
import requests
|
||||
import sys
|
||||
|
||||
from config import logger
|
||||
|
||||
class HTTPClient(object):
|
||||
|
||||
|
@ -76,7 +78,7 @@ class HTTPClient(object):
|
|||
self._s.headers.update({"Referer": referer})
|
||||
return self
|
||||
|
||||
def send(self, url, data=None, **kwargs):
|
||||
def send(self, url, data=None, is_logger=True, **kwargs):
|
||||
"""send request to url.If response 200,return response, else return None."""
|
||||
allow_redirects = False
|
||||
error_data = {"code": 99999, "message": "重试次数达到上限"}
|
||||
|
@ -86,6 +88,8 @@ class HTTPClient(object):
|
|||
else:
|
||||
method = "get"
|
||||
self.resetHeaders()
|
||||
logger.log(
|
||||
u"url: {0}\n入参: {1}\n请求方式: {2}\n".format(url,data,method,))
|
||||
for i in range(10):
|
||||
try:
|
||||
response = self._s.request(method=method,
|
||||
|
@ -95,10 +99,15 @@ class HTTPClient(object):
|
|||
allow_redirects=allow_redirects,
|
||||
**kwargs)
|
||||
if response.status_code == 200:
|
||||
if response.content:
|
||||
return json.loads(response.content) if method == "post" else response.content
|
||||
else:
|
||||
return error_data
|
||||
if response.content:
|
||||
if is_logger:
|
||||
logger.log(
|
||||
u"出参:{0}".format(response.content))
|
||||
return json.loads(response.content) if method == "post" else response.content
|
||||
else:
|
||||
logger.log(
|
||||
u"url: {} 返回参数为空".format(url))
|
||||
return error_data
|
||||
else:
|
||||
sleep(0.1)
|
||||
except (requests.exceptions.Timeout, requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError):
|
||||
|
|
BIN
tkcode
BIN
tkcode
Binary file not shown.
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Loading…
Reference in New Issue