# -*- coding: utf-8 -*-
"""
@Time : 2020/8/6 11:59
@Auth : Ne_21
@File :index.py
@IDE :PyCharm
@Motto:Another me.
河北科技大学体温提交云函数版
"""
import requests
import re
import time
import json
from random import randint
class HEBUST_temperature(object):
# 初始化
def __init__(self):
self.stuNum = ''
self.pwd = ''
self.s = requests.Session()
# 13位时间戳
def get_13_timestamp(self):
timestamp1 = time.time()
return int(round(timestamp1) * 1000)
# 登陆并获取cookies
def get_cookies(self):
data = {
'stuNum': self.stuNum,
'pwd': self.pwd,
}
print('用户:' + str(self.stuNum))
# 登陆
respond1 = self.s.post("http://xscfw.hebust.edu.cn/survey/ajaxLogin", data=data)
a = respond1.json()
if a.get("data") == True:
print("登陆成功,请等待")
else:
print("登陆失败,请检查账号和密码")
# 获取表格数据
def get_ids(self):
# 获取表格id
respond2 = self.s.get("http://xscfw.hebust.edu.cn/survey/index")
try:
get_sid = re.findall('
', respond2.text)[0]url = 'http://xscfw.hebust.edu.cn/survey/surveyEdit?id=' + get_sid
respond3 = self.s.get(url)
# print(respond3.text)
# 获取stuId
stuId = re.findall('', respond3.text)[0]
# 获取qid
qid = re.findall('', respond3.text)[0]
# 表格信息
# 以下两种表格方式二选一
# # 第一种
#
# #``````
# #本地正则获取数据↓
# #``````
#
# data = re.findall('var formJson = (.*?);', respond3.text)[0]
# data = json.loads(data)
# # 生成随机体温
# def sjtw():
# return str(randint(362, 370) / 10)
# c3 = sjtw()
# c6 = sjtw()
# if c3 >= c6:
# b = c6
# c6 = c3
# c3 = b
# else:
# pass
# # 构造数据列表
# formdata = [(data[0].get('options'))[0].get('value'), (data[2].get('options'))[0].get('value'), c3, (data[5].get('options'))[0].get('value'), c6, (data[8].get('options'))[0].get('value')]
# # 构造表格信息
# form = {
# 'id': get_sid,
# 'stuId': stuId,
# 'qid': qid,
# 'location': '',
# 'c0': formdata[0],
# 'c2': formdata[1],
# 'c3': formdata[2], # 早上体温
# 'c5': formdata[3],
# 'c6': formdata[4], # 中午体温
# 'c8': formdata[5],
# }
# #第一种结束
# 第二种
# `````
# 通过服务器获取数据(推荐)↓
# `````
apiurl = 'http://netease.gocos.cn/twform/index.php?id=' + str(get_sid) + '&stuId=' + str(stuId) + '&qid=' + str(qid)
respond4 = self.s.get(apiurl)
form = respond4.json()
# 第二种结束
return form
except IndexError:
print("今日体温上报暂未发放,请一会再试")
return False
# 上传数据
def updata(self, form):
# 时间戳
timestamp = self.get_13_timestamp()
# 上报
posturl = 'http://xscfw.hebust.edu.cn/survey/surveySave?timestamp=' + str(timestamp)
respond5 = self.s.post(url=posturl, data=form)
print('响应码:' + str(respond5.status_code) + '\n体温提交完成!')
# 主函数
def main(self, stuNum, pwd):
self.stuNum = stuNum
self.pwd = pwd
self.get_cookies()
listdata = self.get_ids()
if listdata == False:
print('失败,请等待下一次重试')
return ('false')
else:
self.updata(listdata)
print('成功')
return ('success')
# 云函数入口
def main_handler(event, context):
# 登录信息
stuNum = "" # 登陆账号
pwd = "" # 登陆密码
run = HEBUST_temperature()
run.main(stuNum, pwd)
return ("Status:success")