-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetRegData.py
110 lines (93 loc) · 3.51 KB
/
getRegData.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# coding:utf-8
import urllib
import urllib2
import json
import smtplib
from email.mime.text import MIMEText
import time
import sys
from log import Logger
import httplib
import datetime
import userConfig
mailto_list = ["[email protected]"]
mail_host = "smtp.163.com"
mail_user = userConfig.setting["mail_user"]
mail_pass = userConfig.setting["mail_pass"]
mail_postfix = "XXX.com"
logger = Logger(logName='log.txt', logLevel="INFO", logger="getRegData.py").getlog()
json_str = ""
def timer(n):
while True:
logger.info("start");
begin_date = "";
reg_date = userConfig.setting["reg_date"]
main(begin_date, reg_date)
current_date = time.strftime('%Y-%m-%d', time.localtime(time.time()))
current_hour = int(time.strftime('%H', time.localtime(time.time())))
begin_date=generate_begin_date(current_date,reg_date)
time_range = [22, 23, 00, 01]
if current_hour in time_range or (current_date >= begin_date):
d = 15
else:
d = 3600
time.sleep(d)
def generate_begin_date(current_date, reg_date):
begin_date = ""
for each_date in reg_date:
if current_date<=each_date:
begin_date = datetime.datetime.strptime(each_date, "%Y-%m-%d") - datetime.timedelta(days=14)
return begin_date.strftime('%Y-%m-%d')
def send_mail(to_list, sub, content):
me = "hello" + "<" + mail_user + "@" + mail_postfix + ">"
msg = MIMEText(content, _subtype='plain', _charset='UTF-8')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user, mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False
def post(url, data):
req = urllib2.Request(url)
data = urllib.urlencode(data)
# enable cookie
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
response = opener.open(req, data)
return response.read()
def main(desire_date, reg_date):
try:
global json_str
json_str = ""
posturl = "http://wx.zhicall.cn/dragon-wechat/yuyueGuahao/schedule/findExpertSchedules"
data = userConfig.setting["doctors_list"]
for data_single in data:
hjson = json.loads(post(posturl, data_single))
json_str = json.dumps(hjson, ensure_ascii=False, indent=2)
for regSchedulelist in hjson["data"]["regScheduleVOList"]:
for time in regSchedulelist["times"]:
if time["leftNum"] >0:
#and regSchedulelist["regDate"] in reg_date:
send_mail(mailto_list,
hjson["data"]["name"]+"-"+hjson["data"]["speciality"]+"-NewHua Hospital RegTime -" + regSchedulelist["regDate"] + time[
"timeline"],
"Total" + str(time["totalNum"]) + "left:" + str(time["leftNum"]))
# print hjson["data"]["regScheduleVOList"][0]["time"]
except httplib.IncompleteRead, e:
logger.info(e.partial)
except:
# get detail from sys.exc_info() method
error_type, error_value, trace_back = sys.exc_info()
logger.info(error_value)
logger.info(json_str)
send_mail(mailto_list,
"NewHua Hospital Reg Error",
json_str + str(error_value))
if __name__ == '__main__':
timer(10);