from urllib.request import quote, unquote import base64 import json # 西区第一教学楼 WESTID = { # 西区第一教学楼 'teaching_building_1': 'f74dac26-c58a-4eae-bc46-ff2055b2de19', # 西区第二教学楼 'teaching_building_2': '201a429b-df6d-489e-9a1d-de7c85f0081e', # 西区图书馆 'library': '3adb80f2-7e27-4058-a60c-fbb32cb36587' } EASTID = { # 东区第一教学楼 'teaching_building_1': 'd91cc53c-a9ad-4be3-becf-7f3ed62e8762', # 东区第二教学楼 'teaching_building_2': 'e14b90bd-0c92-422e-b299-7009118104b9', # 东区第三教学楼 'teaching_building_3': '3534f8ce-f10b-4058-a818-95a116d9bca4', # 东区前楼 'front_building': '6accca4d-b092-4bdc-b2e0-0c1941782eec' } SOUTHID = { # 南区研究生教学楼 'graduate_building': '20a207f7-65ef-4ae4-9286-2a2b5a73e1c9', # 南区实训楼 'practical_training_building': 'cb5265e8-84a1-41ed-985b-3920449738aa' } IDLIST = { 'wtb1': WESTID['teaching_building_1'], 'wtb2': WESTID['teaching_building_2'], 'wl': WESTID['library'], 'etb1': EASTID['teaching_building_1'], 'etb2': EASTID['teaching_building_2'], 'etb3': EASTID['teaching_building_3'], 'efb': EASTID['front_building'], 'sgb': SOUTHID['graduate_building'], 'sptb': SOUTHID['practical_training_building'], } COURSELIST = ['0102', '0304', '0506', '0708', '0910', '1112'] # JSON转base64 def btoa(content): return base64.b64encode(quote(content).encode()) # base64转JSON def atob(content): return unquote(base64.b64decode(content).decode()) def getParam(SJ, JSs, Addr): try: checkData(SJ, JSs, Addr) except Exception as e: print(e) raise Exception(str(e)) param = { "EmptyRoomParam": { "SJ": SJ, "JCs": JSs }, "PagingParam": { "IsPaging": 1, "Offset": 0, "Limit": 500, "Conditions": { "PropertyParams": [ { "Field": "BDJXLXXID", "Value": IDLIST[Addr] } ] } } } return str(btoa(json.dumps(param)))[2:-1] # 校验数据 def checkData(sj, jss, addr): # 校验sj sj_split = sj.split('-') if len(sj_split) != 3: raise Exception('SJ错误') for content in sj_split: if len(content) == 0: raise Exception('SJ错误') # 校验jss if not isinstance(jss,list): raise Exception('JSs错误') for content in jss: if content not in COURSELIST: raise Exception('JSs错误') # 校验addr if addr not in IDLIST: raise Exception('Addr错误')