diff --git a/README.md b/README.md index 0ff82b9..dd08027 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ 没想到后面随着功能的增加,项目也变得小有规模起来,因此将其开放给全体UCAS同学,小助手的使用方式在下面有介绍, 十分简便(需要一点对`python`环境的了解,百度`python`的安装即可),如果你觉得本项目对你有所帮助的话, 希望你能帮我点个star,算是对作者的一点激励吧~ + # 1. 功能介绍 ## 1.1 课程资源下载 国科大的课程网站在高校中已经算是很便利的了,老师可以发布ppt或其他课程资源到网站上, @@ -47,9 +48,13 @@ # 2. 版本号 -1.7.1 +1.7.2 ## 2.1 更新内容 +- [1.7.2] 修复了因课程主站使用http协议导致的错误 + > GKD的课程主站偶尔抽风,一会用https,一会用http,导致访问端口出现问题,现统一将用到的url放到`settings.py/URLS`中, + 当主站修改应用协议时修改对应url的协议即可。例如`'base_url':'http://jwxk.ucas.ac.cn'`>`'base_url':'https://jwxk.ucas.ac.cn'`, + 目前没时间完美适配这个问题(对代码重构较多)。 - [1.7.1] 修改了主页的部分显示内容,添加版本信息,去除网站链接 - [1.7.0] 添加了分数查询功能并修复了课程评估失败的问题 - [1.6.0] diff --git a/core/source.py b/core/source.py index 870b5bd..e8b27bd 100644 --- a/core/source.py +++ b/core/source.py @@ -10,6 +10,7 @@ import logging import re import requests +import time from bs4 import BeautifulSoup from prettytable import PrettyTable @@ -34,8 +35,11 @@ def __keep_session(self): res = self._S.get(url=self._urls['course_select_url']) course_select_url = re.search(r"window.location.href='(?P.*?)'", res.text).groupdict().get( "course_select_url") + print(course_select_url) self._S.get(course_select_url) + + def _login(self): headers = { 'Connection': 'keep-alive', @@ -414,7 +418,7 @@ def __init__(self, user_info, urls,assess_msgs): def _get_course_ids(self): # 获取课程评估url - res = self._S.get(url='https://jwxk.ucas.ac.cn/notice/view/1') + res = self._S.get(url=self._urls['view_url']) bs4obj = BeautifulSoup(res.text,'html.parser') href = bs4obj.find('a',string=re.compile('.*学期$')).get('href') self._course_assess_url = self._urls['base_url'] + href @@ -428,7 +432,7 @@ def _get_course_ids(self): return course_ids def __assess_course(self,course_id): - res = self._S.get('https://jwxk.ucas.ac.cn/evaluate/evaluateCourse/' + course_id ) + res = self._S.get(self._urls['base_evaluateCourse_url'] + course_id ) s = res.text.split('?s=')[-1].split('"')[0] bs4obj = BeautifulSoup(res.text, 'html.parser') radios = bs4obj.find_all('input', attrs={'type': 'radio'}) @@ -446,7 +450,7 @@ def __assess_course(self,course_id): data['subjectiveRadio']= subjectiveRadio # 教室大小合适 data['subjectiveCheckbox']= subjectiveCheckbox # 自己需求和兴趣 - post_url = 'https://jwxk.ucas.ac.cn/evaluate/saveCourseEval/'+course_id+'?s='+s + post_url = self._urls['base_saveCourseEval_url'] +course_id+'?s='+s # print(post_url) res = self._S.post(post_url, data=data,headers=self.headers) # print(res.text) @@ -464,6 +468,7 @@ def __assess_course(self,course_id): def _assess_courses(self, course_ids): self._logger.info('开始评估课程') + time.sleep(2) for course_id in course_ids: self.__assess_course(course_id) self._logger.info('课程评估完毕') @@ -481,9 +486,9 @@ def _get_teacher_ids(self): return teacher_ids def __assess_teacher(self, teacher_id): - res = self._S.get('https://jwxk.ucas.ac.cn/evaluate/evaluateTeacher/' + teacher_id) + res = self._S.get(self._urls['base_evaluateTeacher_url'] + teacher_id) bs4obj = BeautifulSoup(res.text,'html.parser') - post_url = 'https://jwxk.ucas.ac.cn' + bs4obj.find('form',{'id':'regfrm'}).get('action') + post_url = self._urls['base_url'] + bs4obj.find('form',{'id':'regfrm'}).get('action') radios = bs4obj.find_all('input', attrs={'type': 'radio'}) value = radios[0]['value'] # 默认全5星好评 data = {} diff --git a/settings.py b/settings.py index 39f5fd1..924e1ac 100644 --- a/settings.py +++ b/settings.py @@ -18,12 +18,16 @@ ACCOUNTS_PATH = 'accounts.json' URLS = { - 'base_url':'https://jwxk.ucas.ac.cn', + 'base_url':'http://jwxk.ucas.ac.cn', 'login_url': 'http://onestop.ucas.ac.cn/Ajax/Login/0', 'logout_url': 'http://sep.ucas.ac.cn/logout?o=platform', 'course_info_url': 'http://sep.ucas.ac.cn/portal/site/16/801', - 'grade_url':'https://jwxk.ucas.ac.cn/score/yjs/all', + 'grade_url':'http://jwxk.ucas.ac.cn/score/yjs/all', + 'view_url':'http://jwxk.ucas.ac.cn/notice/view/1', 'course_select_url': 'http://sep.ucas.ac.cn/portal/site/226/821', + 'base_saveCourseEval_url':'http://jwxk.ucas.ac.cn/evaluate/saveCourseEval/', + 'base_evaluateCourse_url':'http://jwxk.ucas.ac.cn/evaluate/evaluateCourse/', + 'base_evaluateTeacher_url':'http://jwxk.ucas.ac.cn/evaluate/evaluateTeacher/' } # Assess message