Skip to content

Commit 51de182

Browse files
committed
加入浏览器登录获取cookie功能,更新readme
1 parent cb19978 commit 51de182

File tree

7 files changed

+122
-23
lines changed

7 files changed

+122
-23
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
/dist/
55
/build/
66
/config.ini
7+
/edgedriver_win64/

README.MD

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/MrLinda/WHUAutoEvaluate/total)
44

5+
56
## 介绍
67

78
同学们在考试过后需要在评价系统中评教后才能查询成绩,往往大多数人都厌烦这种~~形式主义的~~行为,于是我就做了这个脚本,帮助大家快速评教
@@ -17,9 +18,30 @@
1718
## 环境
1819

1920
> python
21+
>
22+
> requests
23+
>
24+
> selenium
2025
2126
## 使用方法
2227

28+
### 下载
29+
30+
[进入下载页面](https://github.com/MrLinda/WHUAutoEvaluate/releases)
31+
32+
### 船新版本
33+
34+
1. 打开软件
35+
2. 点击获取按钮
36+
3. 在弹出的Edge窗口中登录
37+
4. 等待片刻即可获取到教务系统cookie
38+
5. 点击查询,会将本次需要评教的课程显示出来
39+
6. 在得分百分比处填写需要给课程评的分数、在每门课程完成时间填写一门课评价完之后等待的时间
40+
7. 点击自动评教,等待完成
41+
8. 如果需要修改评分,可以在左侧列表中选中课程后使用软件右下区域修改评分
42+
43+
### 老版本
44+
2345
打开[评教系统](https://ugsqs.whu.edu.cn/new/student/)
2446

2547
按下`F12`打开开发者工具
@@ -40,9 +62,4 @@ Edge:
4062

4163
![](./images/EXE.png)
4264

43-
### 正式版
44-
45-
按提示填入Cookie即可
46-
47-
[下载](https://github.com/MrLinda/WHUAutoEvaluate/releases)
4865

downloaddriver.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import os
2+
import shutil
3+
from webdriver_manager.microsoft import EdgeChromiumDriverManager
4+
5+
def download_driver():
6+
driver_path = EdgeChromiumDriverManager().install()
7+
new_path = './edgedriver_win64'
8+
os.makedirs("./edgedriver_win64/", exist_ok=True)
9+
shutil.copy(driver_path, new_path)

getcookie.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from selenium import webdriver
2+
from selenium.webdriver.edge.service import Service
3+
4+
import time
5+
import os
6+
import downloaddriver as dd
7+
8+
9+
def check_cookie(cookies):
10+
for cookie in cookies:
11+
12+
if cookie['name'] == 'insert_cookie':
13+
insert_cookie = cookie['value']
14+
if cookie['name'] == 'iPlanetDirectoryPro':
15+
iPlanetDirectoryPro = cookie['value']
16+
if cookie['name'] == 'JSESSIONID' and cookie['path'] == '/':
17+
JSESSIONID = cookie['value']
18+
19+
try:
20+
return JSESSIONID, insert_cookie, iPlanetDirectoryPro
21+
except:
22+
return '', '', ''
23+
24+
25+
26+
class GetCookie:
27+
def __init__(self):
28+
ser = Service()
29+
if not os.path.exists("./edgedriver_win64/msedgedriver.exe"):
30+
dd.download_driver()
31+
ser.path = './edgedriver_win64/msedgedriver.exe'
32+
browser = webdriver.Edge(service=ser)
33+
url = 'https://ugsqs.whu.edu.cn/new/student/'
34+
35+
browser.get(url)
36+
cookies = browser.get_cookies()
37+
38+
# print(browser.current_url.split('/')[2])
39+
while browser.current_url.split('/')[2] == 'cas.whu.edu.cn':
40+
time.sleep(1)
41+
pass
42+
43+
cookies = browser.get_cookies()
44+
print(cookies)
45+
self.JSESSIONID, self.insert_cookie, self.iPlanetDirectoryPro = check_cookie(cookies)
46+
47+
48+
49+
# c = GetCookie()

images/Edge.png

10.6 KB
Loading

main.py

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import tkinter as tk
88
from tkinter import messagebox
99
from tkinter import ttk
10-
10+
from getcookie import GetCookie
1111

1212
flag_check = False
1313
courses = []
@@ -112,7 +112,9 @@ def auto_evaluate():
112112
'Referer': 'https://ugsqs.whu.edu.cn/new/student/rank/evaluate2.jsp',
113113
'cookie': cookie
114114
}
115-
score_index = input_level.get()
115+
score_index = int(input_level.get())
116+
if score_index < 0:
117+
score_index = 0
116118
evaluate_progress['value'] = 0
117119
for course in courses:
118120
if course['PJJGID'] is None:
@@ -150,7 +152,7 @@ def auto_evaluate():
150152
wdvalue.append(('wdvalue', 0))
151153
elif i['zbtx'] == '单选题':
152154
dxid.append(('dxid', i['id']))
153-
dxvalue.append(('dxvalue', int(i['zbfz']) * int(score_index) / 100))
155+
dxvalue.append(('dxvalue', int(i['zbfz']) * score_index / 100))
154156
# i['id']
155157
# i['xxList']['zbxxfz']
156158
data = dxid + dxvalue + sfjft + wdid + wdvalue
@@ -246,6 +248,18 @@ def change_evaluate():
246248
messagebox.showerror('错误', '请先获取数据!')
247249

248250

251+
def get_cookie():
252+
gc = GetCookie()
253+
if gc.insert_cookie != '':
254+
input_jsessionID.delete(0, tk.END)
255+
input_jsessionID.insert(tk.END, gc.JSESSIONID)
256+
input_cookie.delete(0, tk.END)
257+
input_cookie.insert(tk.END, gc.insert_cookie)
258+
input_iPlanetDirectoryPro.delete(0, tk.END)
259+
input_iPlanetDirectoryPro.insert(tk.END, gc.iPlanetDirectoryPro)
260+
261+
262+
249263
def new_thread(target):
250264
if threading.active_count() == 1:
251265
add_thread = threading.Thread(target=target)
@@ -266,6 +280,10 @@ def change_evaluate_button_callback():
266280
new_thread(change_evaluate)
267281

268282

283+
def get_cookie_button_callback():
284+
new_thread(get_cookie)
285+
286+
269287
if __name__ =='__main__':
270288
window = tk.Tk()
271289
window.title('WHU自动评教')
@@ -275,26 +293,29 @@ def change_evaluate_button_callback():
275293
(window.winfo_screenwidth() - window_width) / 2,
276294
(window.winfo_screenheight() - window_height) / 2))
277295

278-
label_jsessionID = tk.Label(window, text='JSEESIONID:', width=24)
296+
label_jsessionID = tk.Label(window, text='JSEESIONID:', width=20)
279297
label_jsessionID.grid(row=0, column=0)
280-
input_jsessionID = tk.Entry(window, width=60)
298+
input_jsessionID = tk.Entry(window, width=36)
281299
input_jsessionID.grid(row=0, column=1)
282300

283301
label_cookie = tk.Label(window, text='insert_cookie:')
284302
label_cookie.grid(row=1, column=0)
285-
input_cookie = tk.Entry(window, width=60)
303+
input_cookie = tk.Entry(window, width=36)
286304
input_cookie.grid(row=1, column=1)
287305

288306
label_iPlanetDirectoryPro = tk.Label(window, text='iPlanetDirectoryPro:')
289307
label_iPlanetDirectoryPro.grid(row=2, column=0)
290-
input_iPlanetDirectoryPro = tk.Entry(window, width=60)
308+
input_iPlanetDirectoryPro = tk.Entry(window, width=36)
291309
input_iPlanetDirectoryPro.grid(row=2, column=1)
292310

311+
button_check = tk.Button(window, text='获取', width=20, height=3, command=get_cookie_button_callback)
312+
button_check.grid(row=0, column=2, rowspan=3, padx=20, columnspan=1)
313+
293314
button_check = tk.Button(window, text='查询', width=20, height=3, command=query_button_callback)
294-
button_check.grid(row=0, column=2, rowspan=3, padx=30, columnspan=2)
315+
button_check.grid(row=0, column=3, rowspan=3, padx=20, columnspan=2)
295316

296317
course_table = ttk.Treeview(window, height=24, selectmode='browse')
297-
course_table.grid(row=3, column=0, columnspan=2, rowspan=24)
318+
course_table.grid(row=3, column=0, columnspan=3, rowspan=24)
298319
course_table["columns"] = ("Course", "Teacher", "State")
299320
course_table.heading("#0", text="序号")
300321
course_table.column("#0", width=60)
@@ -306,30 +327,30 @@ def change_evaluate_button_callback():
306327
course_table.column("State", width=80)
307328

308329
label_level = tk.Label(window, text='得分百分比:')
309-
label_level.grid(row=9, column=2)
330+
label_level.grid(row=9, column=3)
310331
input_level = tk.Spinbox(window, from_=0, to=100, increment=20, width=12)
311-
input_level.grid(row=9, column=3)
332+
input_level.grid(row=9, column=4)
312333

313334
label_delay = tk.Label(window, text='每门课程完成时间(秒):')
314-
label_delay.grid(row=10, column=2, columnspan=2)
335+
label_delay.grid(row=10, column=3, columnspan=2)
315336
input_delay = tk.Entry(window, width=5)
316337
input_delay.insert(0, 10)
317-
input_delay.grid(row=11, column=3)
338+
input_delay.grid(row=11, column=4)
318339

319340
button_auto = tk.Button(window, text='自动评教', width=20, height=3, command=auto_evaluate_button_callback)
320-
button_auto.grid(row=12, column=2, rowspan=3, padx=30, columnspan=2)
341+
button_auto.grid(row=12, column=3, rowspan=3, padx=30, columnspan=2)
321342

322343
evaluate_progress = ttk.Progressbar(window, length=180)
323-
evaluate_progress.grid(row=15, column=2, columnspan=2)
344+
evaluate_progress.grid(row=15, column=3, columnspan=2)
324345
evaluate_progress['maximum'] = 100
325346

326347
label_level2 = tk.Label(window, text='得分百分比:')
327-
label_level2.grid(row=22, column=2)
348+
label_level2.grid(row=22, column=3)
328349
input_level2 = tk.Spinbox(window, value=(20, 40, 60, 80, 100), width=12)
329-
input_level2.grid(row=22, column=3)
350+
input_level2.grid(row=22, column=4)
330351

331352
button_auto = tk.Button(window, text='修改评价', width=20, height=3, command=change_evaluate_button_callback)
332-
button_auto.grid(row=24, column=2, rowspan=3, padx=30, columnspan=2)
353+
button_auto.grid(row=24, column=3, rowspan=3, padx=30, columnspan=2)
333354

334355
conf = configparser.ConfigParser()
335356
config_path = './config.ini'

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
requests~=2.31.0
2+
selenium~=4.19.0

0 commit comments

Comments
 (0)