#!/usr/bin/python3
# -*- coding: utf-8 -*-
import json
import time
import datetime
import pickle
import requests
import random
def notification(param, key='', action='changed'):
# Define your own notification.
# Get notification of warnings and status
# If return False, then stop the submit process
return True
if __name__ == '__main__':
username = "17080000" # 你的学号
password = "123456789" # 你的登录密码
location = ''
if location == '':
print('【生成地址】没有指定地址,正在生成随机地址…')
# lng = 116.397499 + random.random() / 10.0 - 0.05
# lat = 39.908722 + random.random() / 10.0 - 0.05
# 学校
lng = 116.473056
lat = 39.877778
# 广东茂名——经纬度随便改,但不要超出我国,否则会为空
# lng = 111
# lat = 22
coordination = str(lng) + ',' + str(lat)
PARAMS = {
'key': '729923f88542d91590470f613adb27b5',
's': 'rsv3',
'location': coordination
}
r = requests.get(
url='https://restapi.amap.com/v3/geocode/regeo', params=PARAMS)
location = r.json()
location['lng'] = lng
location['lat'] = lat
try:
print(r.json()['regeocode']['formatted_address'])
print('3 秒钟后继续')
time.sleep(3)
except:
print('生成地址时遇到问题')
exit('程序已经中断')
else:
location = json.loads(location)
lng = location['lng']
lat = location['lat']
print('【使用地址】' + location['regeocode']['formatted_address'])
# init
s = requests.session()
headers = {}
curr_time = datetime.datetime.now()
# login
data = {'username': username, 'password': password}
r = s.post('https://itsapp.bjut.edu.cn/uc/wap/login/check',
data=data, headers=headers)
tmp = '【登录】' + r.json()['m']
print(tmp)
if not '成功' in r.text:
time.sleep(3)
exit()
# report
data = {
'ismoved': '0',
'dqjzzt': '0', # 当前居住状态,0为在校、1为在京不在校
'jhfjrq': '', # 计划返京日期
'jhfjjtgj': '', # 计划返京交通工具
'jhfjhbcc': '', # 计划返京航班车次
'tw': 2, # 体温范围所对应的页面上的序号(下标从 1 开始)
'sfcxtz': '0', # 今日是否出现发热、乏力、干咳、呼吸困难等症状?
'sfjcbh': '0', # 今日是否接触疑似/确诊人群?
'sfcxzysx': '0', # 是否有任何与疫情相关的注意事项?
'qksm': '', # 情况说明
'sfyyjc': '0', # 是否医院检查
'jcjgqr': '0', # 检查结果确认
'remark': '',
'address': location['regeocode']['formatted_address'],
'geo_api_info': json.dumps({
'type': 'complete',
'info': 'SUCCESS',
'status': 1,
'position': {
'O': lng,
'P': lat,
'lng': lng,
'lat': lat
},
'message': 'Get geolocation success.Convert Success.Get address success.',
'location_type': 'html5',
'accuracy': random.randint(10, 100),
'isConverted': True,
'addressComponent': location['regeocode']['addressComponent'],
'formatted_address': location['regeocode']['formatted_address'],
'roads': [],
'crosses': [],
'pois': [],
}, ensure_ascii=False),
'area': '北京市 ' + location['regeocode']['addressComponent']['district'],
'province': '北京市',
'city': '北京市',
'sfzx': '0', # 是否已经返校
'sfjcwhry': '0', # 是否接触武汉人员
'sfjchbry': '0', # 是否接触湖北人员
'sfcyglq': '0', # 是否处于隔离期
'gllx': '', # 隔离类型
'glksrq': '', # 隔离开始日期
'jcbhlx': '', # 接触病患类型
'jcbhrq': '', # 接触病患日期
'bztcyy': '', # 当前地点与上次不在同一城市,原因如下:2 探亲, 3 旅游, 4 回家, 1 其他
'sftjhb': '0', # 是否停经湖北
'sftjwh': '0', # 是否停经武汉
'sfsfbh': '0', # 是否所在省份变化
'xjzd': '', # 现居住地
'jcwhryfs': '', # 接触武汉人员方式
'jchbryfs': '', # 接触湖北人员方式
'szgj': '', # 所在国家
'jcjg': '', # 检查结果
# --- The following are uncommented field --- #
'date': datetime.datetime.now().strftime('%Y%m%d'),
# 'uid': '0',
'created': int(time.time()),
'jcqzrq': '',
'sfjcqz': '',
'szsqsfybl': 0,
'sfsqhzjkk': 0,
'sqhzjkkys': '',
'sfygtjzzfj': 0,
'gtjzzfjsj': '',
'ljrq': '',
'ljjtgj': '',
'ljhbcc': '',
'fjrq': '',
'fjjtgj': '',
'fjhbcc': '',
'fjqszgj': '',
'fjq_province': '',
'fjq_city': '',
'fjq_szdz': '',
'jrfjjtgj': '',
'jrfjhbcc': '',
'fjyy': '',
'szsqsfty': '',
'sfxxxbb': '',
'created_uid': 0,
# 'id': 0,
'gwszdd': '',
'sfyqjzgc': '',
'jrsfqzys': '',
'jrsfqzfy': ''
}
r = s.post('https://itsapp.bjut.edu.cn/ncov/wap/default/save',
data=data, headers=headers)
r.raise_for_status()
if r.status_code != 200:
print('Err: Login failed!')
if str(r.json()['e']) == '0':
notification(r.json()['m'])
作者:艾孜尔江