Skip to content

Commit

Permalink
fix:修复因课程网站改为http导致无法评教和查看成绩的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
GentleCP committed Jun 12, 2020
1 parent ebd89d9 commit 0654dcd
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 8 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
没想到后面随着功能的增加,项目也变得小有规模起来,因此将其开放给全体UCAS同学,小助手的使用方式在下面有介绍,
十分简便(需要一点对`python`环境的了解,百度`python`的安装即可),如果你觉得本项目对你有所帮助的话,
希望你能帮我点个star,算是对作者的一点激励吧~

# 1. 功能介绍
## 1.1 课程资源下载
国科大的课程网站在高校中已经算是很便利的了,老师可以发布ppt或其他课程资源到网站上,
Expand Down Expand Up @@ -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]
Expand Down
15 changes: 10 additions & 5 deletions core/source.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import logging
import re
import requests
import time

from bs4 import BeautifulSoup
from prettytable import PrettyTable
Expand All @@ -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<course_select_url>.*?)'", res.text).groupdict().get(
"course_select_url")
print(course_select_url)
self._S.get(course_select_url)



def _login(self):
headers = {
'Connection': 'keep-alive',
Expand Down Expand Up @@ -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
Expand All @@ -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'})
Expand All @@ -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)
Expand All @@ -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('课程评估完毕')
Expand All @@ -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 = {}
Expand Down
8 changes: 6 additions & 2 deletions settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 0654dcd

Please sign in to comment.