def handle_timetable(): name = request.args.get('name', '') passwd = request.args.get('passwd', '') cookies = login(name, passwd) post_data = {'xnm': 2020, 'xqm': 3} timetable = session.post(config.timetable_url, data=post_data, cookies=cookies).json() return {'code': 0, 'data': build_timetable_items(timetable)}
def handle_timetable_all(): name = request.args.get('name', '') passwd = request.args.get('passwd', '') cookies = login(name, passwd) all_timetable = [] for data in config.term_list: post_data = data['postData'] name = data['name'] timetable = session.post(config.timetable_url, data=post_data, cookies=cookies).json() if len(timetable["kbList"]) == 0: continue info = {'name': name, 'timetable': build_timetable_items(timetable)} all_timetable.append(info) return {'code': 0, 'data': all_timetable}
def handle_export_grade(): name = request.args.get('name', type=str) passwd = request.args.get('passwd', type=str) file_type = request.args.get('type', 'pdf') cookies = login(name, passwd) if file_type == 'pdf': post_data1 = {'gsdygx': '10353-zw-mrgs1'} pdf_message = session.post(config.pdf_url1, data=post_data1, cookies=cookies).content.decode() if pdf_message.find('可打印') == -1: custom_abort(-3, pdf_message) pdf_url = session.post(config.pdf_url2, data=post_data1, cookies=cookies).content.decode().replace( '\\', '').replace('\"', '') if pdf_url.find('成功') != -1: pdf_content = session.get('http://222.31.49.139' + pdf_url.split('#')[0], cookies=cookies).content file_name = 'files/%s-grade-%s.pdf' % \ (name, hashlib.md5((name + app_secret).encode('utf-8')).hexdigest()[:5]) with open(file_name, 'wb') as pdf_file: pdf_file.write(pdf_content) upload_to_qiniu(file_name) return { 'code': 0, 'data': { 'url': 'https://blog-cdn.dreace.top/' + file_name } } custom_abort(-3, pdf_url) else: xls_content = session.post(config.excel_url, data=config.post_data, cookies=cookies).content file_name = 'files/%s-grade-%s.xls' % \ (name, hashlib.md5((name + app_secret).encode('utf-8')).hexdigest()[:5]) with open(file_name, 'wb') as xls_file: xls_file.write(xls_content) upload_to_qiniu(file_name) return { 'code': 0, 'message': { 'url': 'https://blog-cdn.dreace.top/' + file_name } }
def handle_exam(): name = request.args.get('name', '') passwd = request.args.get('passwd', '') cookies = login(name, passwd) post_data = { 'xqm': 3, 'xnm': 2020, 'queryModel.showCount': 500 } items = session.post(config.exam_url, data=post_data, cookies=cookies).json() exam_items = [] for item in items["items"]: exam_items.append({ 'type': item['ksmc'], 'college': item['kkxy'], 'location': item['cdmc'], 'time': item['kssj'], 'name': item['jxbmc'] }) return { 'code': 0, 'data': exam_items }
import pprint import traceback import pymysql import requests from global_config import NAME, PASSWD from plugins_v3._login.login import login pp = pprint.PrettyPrinter(indent=2) cookies = login(NAME, PASSWD) session = requests.session() course_db = pymysql.connect("", "", "", "nuc_info", charset='utf8mb4') course_cursor = course_db.cursor() post_data = { "xnm": "2020", "xqm": "3", "xqh_id": "01", "njdm_id": "", "jg_id": "", "zyh_id": "", "zyfx_id": "", "bh_id": "", "_search": "false", "queryModel.showCount": "5000", } pre_data = session.post( "http://222.31.49.139/jwglxt/kbdy/bjkbdy_cxBjkbdyTjkbList.html?gnmkdm=N214505", data=post_data, cookies=cookies).json() for item in pre_data["items"]:
def handle_class_timetable(class_name: str): if not class_name: custom_abort(-6, '空关键词') cookies = {} try: cookies = login(NAME, PASSWD) except CustomHTTPException: logging.warning('全局账号登录失败') custom_abort(-6, '查询失败') post_data = { 'xnm': '2020', 'xqm': '3', 'xqh_id': '01', 'njdm_id': '', 'jg_id': '', 'zyh_id': '', 'zyfx_id': '', 'bh_id': class_name, '_search': 'false', 'queryModel.showCount': '1', } pre_data_json = session.post(config.pre_class_timetable_url, data=post_data, cookies=cookies).json() if not pre_data_json['items']: custom_abort(-6, '无效的班级号') post_data = { 'xnm': '2020', 'xqm': '3', 'xnmc': '2020-2021', 'xqmmc': '1', 'xqh_id': '01', 'njdm_id': pre_data_json['items'][0]['njdm_id'], 'zyh_id': pre_data_json['items'][0]['zyh_id'], 'bh_id': class_name, 'tjkbzdm': '1', 'tjkbzxsdm': '0', # 'zxszjjs': True } timetable = session.post(config.class_timetable_url, data=post_data, cookies=cookies).json() timetable_items = [] cnt = 0 name_dict = {} for index, table in enumerate(timetable['kbList']): spited = table['jcor'].split('-') if table['kcmc'] not in name_dict: name_dict[table['kcmc']] = cnt cnt += 1 timetable_items.append({ 'name': table.get('kcmc', ''), 'teacher': table.get('xm'), # 哪几周上课,形如”9-14周“ 'weeks': table.get('zcd', ''), 'color': name_dict[table['kcmc']], # 星期几 'dayOfWeek': table.get('xqj', ''), # 第几小节开始 'start': int(spited[0]), # 上几小节 'length': int(spited[1]) - int(spited[0]) + 1, 'building': table.get('xqmc'), 'classroom': table.get('cdmc') }) for d in timetable['sjkList']: timetable_items.append({'name': d['sjkcgs']}) return {'code': 0, 'data': timetable_items}
def handle_login(): name = request.args.get('name', type=str) passwd = request.args.get('passwd', type=str) login(name, passwd, True) return {'code': 0, 'message': 'OK'}