def get(self, request, stu, user): user_filter = DakaUser.objects.filter(user=user.student_id, enable=True) if user_filter.exists(): user_filter.update(enable=False) return get_json_response(True) else: return get_json_response('找不到用户!', 3002)
def get(self, request, stu, user): data = sc_request( 'POST', user.student_id, 'https://dekt.hfut.edu.cn/scReports/api/wx/activedetail/' + request.GET['pid']) if data['code'] != '200': return get_json_response("未知错误:%s" % data['code'], 3204) else: return get_json_response({ 'name': data['data']['name'], 'module': data['data']['module'], 'form': data['data']['form'], 'level': data['data']['activityLevel'], 'category': data['data']['category'], 'tag': data['data']['label'], 'campus': data['data']['campus'], 'createtime': data['data']['ct'], 'applystart': data['data']['st'], 'applyend': data['data']['et'], 'projectstart': data['data']['lectureStartTime'], 'projectend': data['data']['lectureEndTime'], 'location': data['data']['theVenue'], 'sponsor': data['data']['sponsor'], 'organizer': data['data']['organizer'], 'teacher': data['data']['teacher'], 'phone': data['data']['phone'], 'goal': '德' + data['data']['virtue'] + '% 智' + data['data']['wisdom'] + '% 体' + data['data']['body'] + '% 美' + data['data']['beauty'] + '% 劳' + data['data']['work'] + '%', 'applyway': ('团队报名' if data['data']['applyWay'] else '个人报名'), 'applynum': (data['data']['bmTeamNum'] if data['data']['applyWay'] else data['data']['bmNum']), 'fullnum': (data['data']['teamNum'] if data['data']['applyWay'] else data['data']['peopleNum']), 'teamsize': (data['data']['teamSize'] if data['data']['applyWay'] else None), 'content': data['data']['content'] })
def get(self, request, stu, user): data = sc_request( 'POST', user.student_id, 'https://dekt.hfut.edu.cn/scReports/api/wx/activedetail/cancellRegistration/' + request.GET['id']) if data['data']: return get_json_response("取消报名成功") else: return get_json_response("操作失败", 3209)
def get(self, request): data = requests.get( 'https://webvpn.hfut.edu.cn/http/77726476706e69737468656265737421f3f652d22f367d44300d8db9d6562d/cas/password/getContactInfo?username=%s' % request.GET['id']).json() if data['code'] == 1: if data['data']['email'] is None or data['data']['phone'] is None: return get_json_response('预留信息无效,请尝试使用初始密码(身份证后6位)登录!', 3003) return get_json_response(data['data']) else: return get_json_response(data['msg'])
def get(self, request, stu, user): try: balance = stu.request( '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/thirdPartyApi/schoolcard/balance?sno=' + user.student_id).json()['data'] return get_json_response({ 'balance': balance, }) except Timeout: return get_json_response({'balance': '维护中'})
def get(self, request, stu, user): data = sc_request( 'GET', user.student_id, 'https://dekt.hfut.edu.cn/scReports/api/wx/report/getUserScore') if data['code'] == '200': userinfo = sc_request( 'GET', user.student_id, 'https://dekt.hfut.edu.cn/scReports/api/wx/uc/userInfo' )['data'] return get_json_response({ 'class': userinfo['deptAndClassesName'], 'data': [ { 'title': '思政学习', 'score': data['data']['szxx'] }, { 'title': '科技创新', 'score': data['data']['kjcx'] }, { 'title': '体育健身', 'score': data['data']['tyjs'] }, { 'title': '公益服务', 'score': data['data']['gyfw'] }, { 'title': '社会实践', 'score': data['data']['shsj'] }, { 'title': '创业活动', 'score': data['data']['cyhd'] }, { 'title': '文艺活动', 'score': data['data']['wyhd'] }, { 'title': '社团活动', 'score': data['data']['sthd'] }, { 'title': '技能项目', 'score': data['data']['jnxm'] }, ], 'hour': userinfo['serviceHour'] }) else: return get_json_response("未知错误", 3203)
def get(self, request, stu, user): data = stu.request( url='https://one.hfut.edu.cn/api/center/manage/user/update-mypwd', method='PUT', data=json.dumps({ 'oldPassword': request.GET['old'], 'newPassword': request.GET['new'] })).json() if data['code'] == 1: return get_json_response('修改成功!') else: return get_json_response(data['msg'], 3005)
def get(self, request, stu, user): data = stu.request( 'http://hfut-test.heppy.wang:7002/accountDoLoss.action', method='POST', params={ 'account': user.card_id, 'passwd': request.GET['password'] }).text data = BeautifulSoup(data, 'lxml').select('.biaotou')[0].text.strip() if '操作成功' in data: return get_json_response(data) else: return get_json_response(data, 3001)
def get(self, request, stu, user): data = sc_request('GET', request.GET['id'], 'https://dekt.hfut.edu.cn/scReports/api/wx/report/getUserScore') if data['code'] == '200': userinfo = sc_request('GET', request.GET['id'], 'https://dekt.hfut.edu.cn/scReports/api/wx/uc/userInfo')['data'] return get_json_response({ 'classname': userinfo['deptAndClassesName'], 'hour': userinfo['serviceHour'] }) else: return get_json_response({ 'classname': '未知', 'hour': '未知' })
def get(self, request): data = NoticeModel.objects.filter(page=request.GET['page'], show=True).order_by('-time').all() if len(data): response = [] for dat in data: response.append({'text': dat.text, 'theme': dat.theme}) return get_json_response({ 'theme': data[0].theme, 'notices': response }) else: return get_json_response({'theme': None, 'notices': []})
def get(self, request): try: mid = requests.post( url='https://userapi.qiekj.com/goods/scan/v2', params={ 'NQT': request.GET['NQT'] }, headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 Firefox/84.0 ' }).json() if mid['code'] == 4000: return get_json_response({'status': '设备可能已被拆除但仍未更新'}) mid = mid['data']['id'] if len(mid) >= 15: data = requests.post( 'https://userapi.qiekj.com/machine/detail', params={ 'machineId': mid }, headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 ' 'Firefox/84.0 ' }).json()['data'] if data['status'] == 1: status = '空闲' elif data['status'] == 2: status = '使用中,剩余%s秒' % data['remainTime'] else: status = '未知(%s)' % data['status'] else: data = requests.post( 'https://userapi.qiekj.com/goods/normal/details', params={ 'goodsId': mid }, headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 ' 'Firefox/84.0 ' }).json()['data'] if data['deviceErrorCode'] is None: status = '空闲' elif data['deviceErrorCode'] == 2: status = '使用中' else: status = data['deviceErrorMsg'] return get_json_response({'status': status}) except: return get_json_response({'status': '未知'})
def get(self, request): data = requests.get( url='https://api.weixin.qq.com/sns/jscode2session', params={ 'appid': 'wxa0cf6d472206fa8c', 'secret': 'b08be86e5f5934f4d8e6356806f779a1', 'js_code': request.GET['code'], 'grant_type': 'authorization_code' } ).json() ''' data = { 'errcode': 0, 'openid': 'testopenid' + request.GET['code'], 'unionid': 'testunionid' + request.GET['code'], 'errmsg': None } ''' print(data) if ('errcode' not in data) or (data['errcode'] == 0): token = uuid.uuid4() openid = data['openid'] session_key = data['session_key'] guest, success = Guest.objects.update_or_create( defaults={ 'nick_name': '', 'city': '', 'avatar': '' }, openid=openid, ) LoginState.objects.create( user_id=guest.pk, student_id=None, session_key=session_key, type=2, token=token, vpn_ticket="", at_token="", available=True ) return get_json_response({ 'type': 'guest', 'token': token }) else: return get_json_response({ 'msg': data['errmsg'] }, 3001)
def get(self, request, stu, user): data = stu.request( 'https://one.hfut.edu.cn/api/center/manage/user/update-mypwd', json={ 'newPassword': request.GET['new'], 'oldPassword': request.GET['old'], }).json() if data['code'] == 1: return get_json_response({'result': True}) else: return get_json_response( { 'result': False, 'message': data['msg'], }, 3001)
def get(self, request): data = requests.get( url= 'https://webvpn.hfut.edu.cn/http/77726476706e69737468656265737421f3f652d22f367d44300d8db9d6562d/cas/password/changePwd', cookies={ TICKET_NAME: request.GET['vpn_ticket'] }, params={ 'ticket': request.GET['ticket'], 'password': request.GET['password'] }).json() if data['code'] == 1: return get_json_response('修改成功!') else: return get_json_response(data['msg'], 3004)
def get(self, request, stu, user): data = stu.request( 'http://jxglstu.hfut.edu.cn/eams5-student/for-std/course-table/get-data?bizTypeId=2&semesterId=%s&dataId=%s' % (request.GET['sid'], user.eduadmin_id)).json() lessons = [] for lesson in data['lessons']: schedules = [] if lesson['scheduleText']['dateTimePlaceText']['text']: schedule_texts = lesson['scheduleText']['dateTimePlaceText'][ 'text'].split('; \n') schedules = [analyze(text) for text in schedule_texts] teachers = [{ 'name': teacher['teacher']['person']['nameZh'], 'title': teacher['teacher']['title']['name'] if teacher['teacher']['title'] else None } for teacher in lesson['teacherAssignmentList']] lessons.append({ 'code': lesson['code'], 'name': lesson['course']['nameZh'], 'schedules': schedules, 'classes': lesson['nameZh'], 'credits': lesson['course']['credits'], 'type': lesson['courseType']['name'], 'teachers': teachers }) return get_json_response({ 'layout': data['timeTableLayoutId'], 'last_week': data['weekIndices'][-1], 'current_week': data['currentWeek'], 'lessons': lessons })
def get(self, request, stu, user): data = json.loads(request.body) filters = data['filters'] building = '' if 'name' in filters: filters['name__contains'] = filters['name'] filters.pop('name') if 'classname' in filters: filters['classname__contains'] = filters['classname'] filters.pop('classname') if 'teacher' in filters: filters['teacher__contains'] = filters['teacher'] filters.pop('teacher') if 'building' in filters: building = filters['building'] filters.pop('building') query = Paginator(Lesson.objects.filter(**filters), 25) data = query.page(data['page']).object_list.values() response = [] if building: for l in data: for c in l['info']: if building in c['room']: response.append(l) break else: response = data return get_json_response({ 'last_page': query.num_pages, 'data': list(response) })
def get(self, request, stu, user): stu.request( '/http-8080/77726476706e69737468656265737421a2a611d2736526022a5ac7f9/reader/hwthau2.php' ) data = stu.request( '/http-8080/77726476706e69737468656265737421a2a611d2736526022a5ac7f9/reader/book_lst.php' ).text soup = BeautifulSoup(data, 'lxml').select('.table_line > tr') response = [] first = True for tr in soup: if first: first = False continue td = tr.select('td') print(td[1]) response.append({ 'name': td[1].text, 'starttime': td[2].text, 'endtime': td[3].text, 'marc': td[1].select('a')[0]['href'].split('marc_no=')[1] }) return get_json_response(response)
def get(self, request, stu, user): data = stu.request( url= 'http://jxglstu.hfut.edu.cn/eams5-student/for-std/course-table/info/%s' % user.eduadmin_id, headers={ 'Cache-Control': 'no-cache', 'Pragma': 'no-cache' }).text s = BeautifulSoup(data, 'lxml') soup = s.select('#allSemesters > option') response = [] default = 0 for option in soup: if option['value']: response.append({ 'label': option.text, 'value': option['value'], 'default': 'selected' in option.attrs }) if 'selected' in option.attrs: default = option['value'] details = json.loads( re.search(r'JSON.parse\(([\s\S]*?)\);', str(s.html))[1].replace('\'', '').replace('\\"', '"')) return get_json_response({ 'default': default, 'semesters': response, 'details': {item['id']: item for item in details} })
def post(self, request, stu, user): json_body = json.loads(request.body) filters = json_body['filters'] data = stu.request( '/http-8080/77726476706e69737468656265737421a2a611d2736526022a5ac7f9/opac/ajax_search_adv.php', method='POST', json={ "searchWords": [ { "fieldList": [ { "fieldCode": "any", "fieldValue": json_body['word'] } ] } ], "filters": filters, "limiter": [], "sortField": "relevance", "sortType": "desc", "pageSize": 20, "pageCount": int(json_body['page']), "locale": "zh_CN", "first": True }).json() return get_json_response(data)
def get(self, request, guest): mgr = Manager() data = mgr.request( url='/bizType/2/adminclass-course-table/semester/154/search', params={ 'nameZhLike': request.GET['name'], 'grades': request.GET['grade'], 'department': request.GET['deptid'], 'queryPage__': '%s,100' % request.GET['page'] }, headers={ 'Accept': 'application/json' }).json() return get_json_response({ 'classes': [{ 'name': item['nameZh'], 'code': item['code'], 'id': item['id'], 'grade': item['grade'], 'department': item['mngtDepart']['abbrZh'] } for item in data['data']], 'sum': data['_page_']['totalRows'], 'pages': data['_page_']['totalPages'] })
def get(self, request): query = Building.objects.filter( campus=request.GET['campus']).order_by('sort') data = [] for building in query: data.append({'name': building.name}) return get_json_response(data)
def get(self, request, stu, user): borrow_books = stu.request( '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/library/getBorrowNum' ).json()['data'] return get_json_response({ 'borrow_books': borrow_books, })
def get(self, request, stu, user): info = stu.userinfo balance = stu.request( '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/thirdPartyApi/schoolcard/balance?sno=' + info.id).json()['data'] borrow_books = stu.request( '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/library/getBorrowNum' ).json()['data'] subscribe_books = stu.request( '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/library/getSubscribeNum' ).json()['data'] emails = stu.request( '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/center/user/getBindMailList' ).json()['data'] unread_email = 0 for email in emails: unread_email += stu.request( '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/msg/mailBusiness/getUnreadMsg?mail=' + email['mail']).json()['data'] return get_json_response({ 'balance': balance, 'borrow_books': borrow_books, 'subscribe_books': subscribe_books, 'unread_email': unread_email })
def get(self, request, stu, user): data = stu.request('http://jxglstu.hfut.edu.cn/eams5-student/my/account').text soup = BeautifulSoup(data, 'lxml') password = soup.find(id='plainPassword')['value'] return get_json_response({ 'password': password })
def get(self, request, guest): mgr = Manager() resp = mgr.request('/bizType/2/adminclass-course-table/semester/%s/course-table/%s' % (request.GET['sid'], request.GET['cid'])) soup = BeautifulSoup(resp.content, 'lxml').select_one('#lessons > tbody').findAll('tr') lessons = [] for tr in soup: data = [td.text.strip() for td in tr.findAll('td')] print([item.strip() for item in data[8].split(';')]) lessons.append({ 'code': data[3], 'name': data[2], 'schedules': [analyze(item.strip()) for item in data[8].split(';')], 'classes': data[4], 'credits': None, 'type': data[5], 'teachers': [{ 'name': re.sub(r'\s{2,}|\n+', '', item), 'title': None } for item in data[7].split(',')] }) return get_json_response({ 'layout': int(re.search(LAYOUT_ID_REG, resp.text)[1]), 'last_week': None, 'current_week': None, 'lessons': lessons })
def get(self, request, stu, user): data = stu.request( '/http-8080/77726476706e69737468656265737421ffe7409f69386e456a468ca88d1b203b/opac/item.php?marc_no=' + request.GET['marc']).text soup = BeautifulSoup(data, 'lxml') information = [] content = '' for dl in soup.select('.booklist'): title = dl.select('dt')[0].text info = dl.select('dd')[0].text if title == '电子资源:' or title == '' or title == '豆瓣简介:': continue if title == '提要文摘附注:': content = info else: information.append({'title': title, 'value': info}) available = [] for tr in soup.select('.whitetext'): td = tr.select('td') if len(td) < 4: continue available.append({ 'bookno': td[0].text, 'barcode': td[1].text, 'place': td[3].text.strip(), 'status': td[4].text }) return get_json_response({ 'info': information, 'content': content, 'available': available })
def get(self, request): session = requests.session() captcha = session.get('https://webvpn.hfut.edu.cn/http/77726476706e69737468656265737421f3f652d22f367d44300d8db9d6562d/cas/vercode?randomStr=HFUTGo').content return get_json_response({ 'captcha': 'data:image/jpeg;base64,%s' % base64.b64encode(captcha).decode(), 'vpn_ticket': session.cookies[TICKET_NAME] })
def get(self, request, stu, user): data = stu.request( '/http-8080/77726476706e69737468656265737421e0f4408e237e60566b1cc7a99c406d3657/code.jsp' ).content return get_json_response({ 'image': 'data:image/jpeg;base64,' + base64.b64encode(data).decode() })
def get(self, request, stu, user): data = stu.request( method='POST', url='http://172.31.241.31:9999/ecc/api/booking/bookinginfo', data= 'page=%s&limit=20&status=%s&buildingId=%s&campusId=%s&date=%s&lessonNo=%s&personNum=%s&teachingRoomId=%s' % (request.GET['page'], request.GET['status'], request.GET['buildingId'], request.GET['campusId'], request.GET['date'], request.GET['lessonNo'], request.GET['personNum'], request.GET['roomId']), headers={ 'Content-Type': 'application/x-www-form-urlencoded' }).json() if data['code'] == '0': return get_json_response(data) else: return get_json_response('查询出错', 3501)
def get(self, request, stu, user): data = stu.request( 'https://one.hfut.edu.cn/api/operation/newsDetails/getPageData?type=notification&size=%s¤t=%s' % (request.GET['size'], request.GET['page'])).json() response = [] for item in data['data']['records']: response.append({'url': item['url'], 'title': item['title']}) return get_json_response(response)