From c00744daed56ff76368dbd6c890ed1a1481daf7d Mon Sep 17 00:00:00 2001 From: JesterHey Date: Mon, 11 Mar 2024 23:04:13 +0800 Subject: [PATCH] modified: __pycache__/get_info.cpython-310.pyc new file: __pycache__/get_info.cpython-38.pyc new file: __pycache__/kill_course.cpython-38.pyc new file: __pycache__/single_course.cpython-38.pyc modified: course_info.json modified: demo.py modified: get_info.py new file: initialization.py modified: main.py --- __pycache__/get_info.cpython-310.pyc | Bin 2392 -> 2501 bytes __pycache__/get_info.cpython-38.pyc | Bin 0 -> 2364 bytes __pycache__/kill_course.cpython-38.pyc | Bin 0 -> 1280 bytes __pycache__/single_course.cpython-38.pyc | Bin 0 -> 2517 bytes course_info.json | 2 +- demo.py | 12 +----- get_info.py | 10 ++--- initialization.py | 6 +++ main.py | 48 ++++++++++++++++++----- 9 files changed, 52 insertions(+), 26 deletions(-) create mode 100644 __pycache__/get_info.cpython-38.pyc create mode 100644 __pycache__/kill_course.cpython-38.pyc create mode 100644 __pycache__/single_course.cpython-38.pyc create mode 100644 initialization.py diff --git a/__pycache__/get_info.cpython-310.pyc b/__pycache__/get_info.cpython-310.pyc index 4c586a4ae704c7786b4a7b57755e0935753accec..950e5ecef3462b2fcb54873360571e074ec60fdf 100644 GIT binary patch delta 1656 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 LN~@fzoG{T(!f&MY literal 0 HcmV?d00001 diff --git a/__pycache__/kill_course.cpython-38.pyc b/__pycache__/kill_course.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23e21be145dc32e43de663cb0b2dbfc6cb9c1a91 GIT binary patch literal 1280 zcma)5PjB2r6rX30|EzaIS5Qz_Dku`C<*?*?K(WD8p+Pkp?p7 zQ6ei<7@aHRaLCn#2cVsJ7^isx27SCtQkV`|#a(=fHzg@y7sgOp6T74gn6+!|!`P~= ziL+1E$OnTBYiy5cO_|-p6t;<4t^p;dM|x!9*7p2n6H!2}ESKKIXYQm`!#;jMYA95r z^NhsECDbs#N5&5F7IGJPfZRjgM()>6@qO*$_Hg@mKz&v_>aW_F1p8#%YJ7Fje~T^k z$UH{bo=eO}{#=jLgq^xYF}927mumL}NaJr2=^=8x_D+Bdo9 ze>y$GJg9CyyQ;G{@PEy{E@VzucRB_to6s+h3m?{8+tcY=6Hu-Mclt zd5FHIzulhRK0J4QtjxbNGejAG{f=%kz8P1dWNA`rD$)XJ^GGUW%ruoFo@*y9c~)pQ z9-+jPgHTOPKHA-sDvL{PkK{<18R`ehGuL*Km+G`R!M290AQ=0><(1c0-W;q9-atiS6zfV}Mpwl~vJ>ag zmc(J%*iMBw9-P5wN4FPb^QPiF5@PvQ7rM}avq&ifKrJ8U-}5N@a2n2l`wXA!)hmeC zeiUW+;wb9F1uS4^O{GPV%G}JbvW&$Gi>g5)vkaS#35q6pnHTC5nuSY6nh(X(QE#f( wOnarO;}U-)rT9N+9%np?n#wGYmzyV@&m^k^f7^7n=pyMHr_{kjyRZ82AGA$dZvX%Q literal 0 HcmV?d00001 diff --git a/__pycache__/single_course.cpython-38.pyc b/__pycache__/single_course.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aca71473025ebe69142157a70c07482ab2cb3f86 GIT binary patch literal 2517 zcmZuz-*Xd19N)dWTrO!EOQ9{TiV<|iIFOM7&e%ajsXVE}fC^?{;x&7uS1xzy-W||* znd#V8KuU>&j*g%vIDj$~5XPZUgnz)l;9l)DjSu+b3orWJyCf}+o7wN~e!k!R{@U;E z<%9P2D1x^4^dsfZZiN0|iA-SVMW7#+c1HjeDPsyvC<_7zItphteV7 zwJRe0!iq%13jzrfX)=_KC{YqQ!qL4-ghWXjiB0ez$?rqScpY@3Bz9xFhN+QP?ff1& zr@$J&{2owIGjchF?oJ9WpH+z)%35Ou1qLcxFvvMs)w2Rq(P-^3#-Z5lS9pf%y8-6`f6K>(7M=n;1bEuV#TMQTco^`4k4sJ5 z5-K4QsX~@~JPNo-+N!t|azcZsj1N67iH-=CV^us7u1KW4ib=c|IS6#k_?)Mjx*TC7 zG7=>nWYw8KUmGB>uM}Qkg(ICuxH6{5YA35Fe7TXh6V73>#@`hl;Yb(h1|3W);e^3< zSJQ$HlCbV+uKm?o-{)SiBjr#j;z)z&(7IC8iBz7lI-KZ8nDmjSr?_4;fmxhoJi6P7 z0MYgMI_tgEbcAPat8BBV2itu;<$0dvri(ns zxGN$PR>o20Mkk9~i|ZX0&-zw8k9?0eH2vR?^caTI#ONcWa|h6Vw9WV9kXDL0F~}5O z=BT(L%0v}IT-^?2l|*__FAAz**^7q7o`yw^e*9#{{%aBZ6#d=LvuF;m?4%$^-01Y^ z4C#Z4f5A>*grW&(P|*X4r5g`wKb=-dfUxpzVzpo9z3)#4IIH(2zBoR=@Y^}>`t;(- za&6{>FRN-pM!uV0-G z_>14%@XD71e|<$;LCW{ugD_5=38cL8OnrRZJ8{n!vDxF}J)By2c)cj?JSuCp^7>{U ztdE~s3HJNo!rZy~#cx`YTmSaA|8RHd`fLl_R)@T!qPW2tGRRm_wB+1?MH?e|j3bos z?dO0n){t#khQ4#Br5v|jN)7~(d$X4p?pEqN$iV9qw$!|0*jAmeja@*V2O)KS6~yqpu5pdR!EH!46SbTbn&ezA^@@wtpAm&m z33~j-;K0E>W4nfBnosn<(!V9upV|ySmH~UHF`{HG^I&#N)-%HfHI;*=s^>H%lQnEu zr3zzibh`$gW{rGd$D7O(=8}jwR9t81ExGNQk(D)bM`~HvUI&7~F?i)kR`ORqt6%)0 zbz25LDcPG_B8}2(p47%*<6`ARZT10FzIW!fck?rE>URC>*uv@mxXZsXGDpZ<0K2YXdR&vG$;T;Z4uG^{JfGEj4FIHy?t zB&xv+Vg~b2fvURYMt$v!Yr3LbC@4B{d0O?u7Y^NcRr0lNIFe4I>w3M}JrT|}Ym$#_tau$V&Jd|!bCR^Fz4138;7i;P0@;VI) z4;va~SIDoQfb_u9jV_-zvtf<^LG2Lpb#QU1 z0}HTv#^-h5H5}u{u^Ek7twAm!vFvP literal 0 HcmV?d00001 diff --git a/course_info.json b/course_info.json index fa5bdb7..62ec159 100644 --- a/course_info.json +++ b/course_info.json @@ -1 +1 @@ -{"6349": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7436": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7367": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7366": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7033": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7517": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7032": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7516": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7031": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7515": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "6937": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "6938": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u672a\u8bc4\u5206"}, "6991": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u672a\u8bc4\u5206"}, "6992": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "6993": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "6995": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7006": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7007": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7010": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7011": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7554": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7553": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7552": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7551": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7550": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7549": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7548": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7547": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7546": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7545": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7564": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}} \ No newline at end of file +{"6349": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7436": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7367": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7366": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7033": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7517": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7032": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7516": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7031": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7515": {"rate": 100, "type": "\u5fc5\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "6937": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "6938": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "6991": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "6992": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "6993": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "6995": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7006": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7007": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7010": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7011": {"rate": 100, "type": "\u57f9\u8bad", "status": "\u5df2\u5b66\u5b8c"}, "7554": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7553": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7552": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7551": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7550": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7549": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7548": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7547": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7546": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7545": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}, "7564": {"rate": 100, "type": "\u9009\u4fee", "status": "\u5df2\u5b66\u5b8c"}} \ No newline at end of file diff --git a/demo.py b/demo.py index 2b61483..0c40233 100644 --- a/demo.py +++ b/demo.py @@ -1,10 +1,2 @@ -from collections import * -import json -info = json.load(open('course_info.json', 'r')) -cnt = defaultdict(list) -new_cnt = defaultdict(list) -for k, v in info.items(): - new_cnt[v['type']].append((k,v['rate'],v['status'])) # 课程类型作为键,课程id作为值 -print(new_cnt) -for k,v in new_cnt.items(): - print(k,v) \ No newline at end of file +from loguru import logger +logger.error('未知课程类型') \ No newline at end of file diff --git a/get_info.py b/get_info.py index b0f73b1..6ffd5f2 100644 --- a/get_info.py +++ b/get_info.py @@ -1,4 +1,4 @@ -from DrissionPage import WebPage +from DrissionPage import ChromiumPage,ChromiumOptions from DrissionPage.common import * from collections import * import time @@ -12,7 +12,7 @@ def login(first:bool=True): if not first: return # 先检查当前页面是否已经登录 - page = WebPage() + page = ChromiumPage() try: if page.ele('tag:div@@text():欢迎您,',timeout=3): logger.info('当前页面已登录') @@ -52,7 +52,7 @@ def login(first:bool=True): page.ele('@value=进入个人中心').click() def get_info(first:bool=True): # 创建页面对象,并启动或接管浏览器 - page = WebPage() + page = ChromiumPage() # 登录 login(first) # 提取课程信息 @@ -66,6 +66,7 @@ def get_info(first:bool=True): #
1 / 4
# total_page = int(page.ele('.paginationjs-nav J-paginationjs-nav').text) total_page = 4 + logger.debug('读取课程信息中...') for i in range(total_page): # 逐页读取课程信息和完成状态并存放到字典中 tbodys = page.ele('#tbody') @@ -77,13 +78,12 @@ def get_info(first:bool=True): course_type = cur_info[2] # 课程类型 course_rate = int(cur_info[3][:-1]) # 课程完成百分比 course_status = cur_info[4] # 课程完成状态(是否完成习题/评价) - logger.info('课程id:{}|课程类型:{}|课程完成率:{}|课程完成状态:{}'.format(course_id,course_type,course_rate,course_status)) # 存放到字典中 course_info[course_id] = {'rate': course_rate,'type': course_type,'status': course_status} if i != total_page - 1: page.ele('@title=Next page').click() time.sleep(1) - print(len(course_info)) + logger.success('课程信息读取完成,共有{}门课程'.format(len(course_info))) # 写入json文件中 with open('course_info.json', 'w') as f: json.dump(course_info, f) diff --git a/initialization.py b/initialization.py new file mode 100644 index 0000000..0dde5f0 --- /dev/null +++ b/initialization.py @@ -0,0 +1,6 @@ +''' +由于青马课程需要先进入视频一次页之后才会在个人中心的对应位置显示, +所以先进入个人中心检测各个类型课程数量是否存在小于10的,如果有,则进入首页点击一下视频一次 +''' +# 本模块用于初始化,检测是否需要进入视频一次页以及进行进入视频一次页操作 +# 睡觉了,明天再写,哈哈。 おやすみなさいです、あしたまたね:) \ No newline at end of file diff --git a/main.py b/main.py index ae08881..cd6426a 100644 --- a/main.py +++ b/main.py @@ -33,7 +33,7 @@ new_cnt = new_info() for k, v in new_cnt.items(): for i in v: if i[1] < 100: - logger.critical('存在未完成的课程:{}! 将重新执行刷课'.format(i[0])) + logger.error('存在未完成的课程:{}! 将重新执行刷课'.format(i[0])) # 完全关闭进程并重新执行刷课 kill_course(again=True) subprocess.run(["python", __file__]) @@ -50,9 +50,7 @@ for k, v in new_cnt.items(): elif i[2] == '未答题': not_quiz.append(i[0],k) -# 展示提示信息 -for i in not_judged: - logger.warning('存在未评分的课程:{}'.format(i)) + # 实现自动评分 def auto_judge(course_id:str,course_type:str) -> None: # 根据课程类型和id进行定位 @@ -77,11 +75,41 @@ def auto_judge(course_id:str,course_type:str) -> None: j_page.ele('tag:a@@text():保存').click() time.sleep(1) pass -print(not_judged) # 实现自动评分 -for i in not_judged: - auto_judge(i[0],i[1]) - logger.info('已完成对课程:{}的评分'.format(i[0])) -# 实现自动答题 +if not_judged: + for i in not_judged: + logger.info('正在对课程:{}进行评分'.format(i[0])) + auto_judge(i[0],i[1]) + logger.success('已完成对课程:{}的评分'.format(i[0])) +else: + logger.info('没有需要评分的课程') +# 实现题目答案显示 def auto_quiz(course_id:str) -> None: - pass \ No newline at end of file + pass +if not_quiz: + for i in not_quiz: + logger.info('正在获取课程:{}的答案'.format(i[0])) + auto_quiz(i[0]) + logger.success('已完成对课程:{}的答案获取'.format(i[0])) +else: + logger.info('没有需要答题的课程') + +# 重新检验是否存在未评分或者未答题的课程 +logger.debug('正在进行最终检验...') +time.sleep(2) +new_cnt = new_info() +not_judged = [] +not_quiz = [] +for k, v in new_cnt.items(): + for i in v: + if i[2] == '未评分': + not_judged.append((i[0],k)) + elif i[2] == '未答题': + not_quiz.append(i[0],k) +if not not_judged and not not_quiz: + logger.warning('所有课程均已完成,页面即将关闭') + page = ChromiumPage() + page.close_tabs() +else: + subprocess.run(["python", __file__]) + exit() \ No newline at end of file