《武汉大学安全教育前置课程》网课观看辅助.py脚本

即将来到珞珈山的萌新们,在到校前,你是不是需要完成《武汉大学安全教育前置课程》?视频好多,一个一个来点击观看是不是有些疲累?快来看看这个脚本叭!

本脚本是在vs2019编写、调试完成的,共有一个文件夹,其中包含AutoOnlineCourse.py(以下简称.py文件)和相应的在vs2019下开展编写调试的配置文件,可以供有能力者进行后续的改写以适用于其他网课的自动跳转播放
该脚本使用python中的selenium库对浏览器进行操作,进而实现视频观看,其编写应用到了对网页html的一点点知识,用于获取控制元素,并且应用opencv-python中的帧处理操作对视频长度获取等内容进行编写,相对比较简单,欢迎各位下载。

下载地址放在文末啦。
操作过程中,仅需要在控制台或者vs中运行.py脚本,并且输入账号和密码即可自动实现视频播放和跳转,无需其他个人操作。

一、刷课平台界面及任务介绍

1.平台介绍

新生入学通知中介绍了很多种观看课程方式,但电脑端最终要进入的网课平台都是珞珈在线,登录该平台的账号密码皆为统一身份认证的所需学号身份证后6位

2. 网课任务

累计10个章节的几十个安全网课小节。其中每节大多由**”视频+测验**“组成,少数仅有测验没有视频。所以视频刷课,逐一点击更换,效率低且麻烦。

二、脚本功能介绍

1.自动跳转到**”珞珈在线“**网页http://www.mooc.whu.edu.cn/portal

2.自动进入登录界面

3.在控制台输入账号、密码

4.自动跳转至所需学习课程界面,并进入学习课程页

5.自动进行播放,控制台上显示视频播放相应进度

6.播放完成后不断自动搜索未完成观看的视频,进行刷课

三、具体操作流程

1.打开控制台ctrl+R,输入cmd并回车(按Enter)

2.在控制台上输入python + .py文件全路径名称,脚本即运行

3.根据提示输入账号、密码

4.视频自动播放,如果想停止脚本运行,可以**“Ctrl+C”**,停止进程。

四、其他要点

1.python环境的安装请自行下载

参考超详细的Python安装和环境搭建教程_Pymili的博客-CSDN博客_python安装

2.python文件需要额外安装selenium库、cv2库

在控制台cmd中输入python后,如果正常进入python环境并且显示python版本号即表示python安装成功。成功后键盘按**“Ctrl+z”**退出python环境后,输入以下两行命令,下载对应的代码库。配置好库之后,即可进行.py文件运行

pip install selenium

pip install opencv-python

3.配置selenium控制Edge浏览器所需要的操作

参考(67条消息) selenium + Edge 浏览器_tk1023的博客-CSDN博客_edge selenium

4.刷课过程中的注意事项

运行过程中请不要使电脑屏幕息屏,同时由于视频播放过程中鼠标的移动会导致视频暂停,所以请在刷课期间尽量不要使用电脑,如果不小心由于鼠标移动导致视频停止,请用鼠标点击视频继续播放,影响不大。

五、源码

# -*- coding:gbk -*-#引用库
from selenium import webdriver
from selenium.webdriver.common.by import By
import html
from selenium.common.exceptions import WebDriverException as WDEximport time
from selenium.webdriver.common.action_chains import ActionChains
import cv2
import sys##获取视频时长的方法
def get_video_duration(filename):cap = cv2.VideoCapture(filename)if cap.isOpened():rate = cap.get(5)  #获取帧速率frame_num = cap.get(7) #获取视频中的帧数duration = frame_num/rate #总帧数/帧速率=视频时间return durationelse:print("视频读取有误!")return -1#获取视频当前播放位置
#这个地方get(cv2.CAP_PROP_POS_MSEC)无法正常返回当前帧所对应的时间,仅返回0,所以可能是cv2库的一个bug
def get_video_playsec(filename):cap = cv2.VideoCapture(filename)if cap.isOpened():return cap.get(cv2.CAP_PROP_POS_MSEC)else:print("视频读取有误!")return -1#命令行的进度条
def progress_Bar(playSecond,duration):scale = 50start = time.perf_counter()internal = int((duration-playSecond) / scale) + 1print("视频开始播放:")while True:dur  = time.perf_counter() - start if dur > duration:breaki = int(dur/internal)a = "*" * i b = "." * (scale-i)c = (i/scale) *100s = "\r{:^3.0f}%[{}->{}]{:2f}s".format(c,a,b,dur)sys.stdout.write(s)sys.stdout.flush()time.sleep(5)time.sleep(3)return -1#播放观看视频的函数,传入参数为需要点击的对应按钮
def watchVideo(em):try:em[0].click()while True:#寻找是否存在video控件用于判断是否存在视频,且需判断是否完成driver.switch_to.frame("iframe") #转入窗体中间部分对应的iframestate = driver.find_element(By.XPATH,'/html/body/div/div/p[1]/div')  #获取是否完成的状态flag = 0 #用于判断视频是否需要进行播放的标志#判断该小节是否已经完成,未完成则flag置为1if state.get_attribute('class') != 'ans-attach-ct ans-job-finished' :flag = 1else:breakdriver.switch_to.frame(driver.find_element(By.TAG_NAME,"iframe")) #转入到深层iframe,这里面对应到的iframe有两层video = driver.find_elements(By.TAG_NAME,"video")  #获取video控件#如果页面上存在视频,则flag继续为1,否则为0if len(video)>0:flag = 1*flagelse:flag = 0*flagbreak#只有在flag==1的情况下,视频才需要被播放if flag == 1:    video = video[0]src = video.get_attribute('src')ActionChains(driver).move_to_element(video).click().perform() #点击开启视频t = get_video_duration(src) #获取视频时间t0 = get_video_playsec(src) #获取当前播放的时间progress_Bar(t0,t)  #停止等待视频播放完成#听完视频/视频已完成,则进入下一部分driver.switch_to.window(driver.window_handles[-1])driver.find_element(By.XPATH,"/html/body/div[3]/div/div[2]/div[1]/div[4]").click() driver.switch_to.window(driver.window_handles[-1])driver.find_element(By.XPATH,"/html/body/div[3]/div/div[1]/a").click()  #没有视频则返回选课界面except :driver.switch_to.window(driver.window_handles[-1])driver.find_element(By.XPATH,"/html/body/div[3]/div/div[1]/a").click()  #没有视频则返回选课界面print('播放完一小节视频.....')return -1###进入到刷安全知识的页面并实现登录功能
##全局变量区域
#刷课网站
url = html.unescape("http://www.mooc.whu.edu.cn/portal") #账号密码
account =""
psd =""#打开网页,并全屏,使用的是微软Edge浏览器
driver = webdriver.Edge()
driver.get(url)
driver.maximize_window()#尝试登录
try:a=driver.find_element(By.XPATH,'/html/body/div[3]/div/div[2]/input')a.click()#WebDriverWait(driver,10).until(EC.presence_of_all_elements_located())#driver.find_element(By.XPATH,'/html/body/div[3]/div/div[2]/div/a').click()#print('点击登录按钮成功')#输入账号密码,进行登录print("请输入账号和密码\n")account = input("账号:")pwd = input("密码:")driver.find_element(By.XPATH,'/html/body/div/div[2]/div[3]/div[2]/div[5]/div[2]/form/div[1]/input').send_keys(account)text = driver.find_element(By.XPATH,'/html/body/div/div[2]/div[3]/div[2]/div[5]/div[2]/form/div[2]/input[1]')text.send_keys(psd)btn = driver.find_element(By.XPATH,'//*[@id="casLoginForm"]/p[2]/button')ActionChains(driver).move_to_element(btn).click().perform()except WDEx as driver_error:print("登录失败,请检个人账号和密码是否正确,或网络是否正常")pass#登录进入课程界面
try:#切换进frame页time.sleep(5)driver.switch_to.frame('frame_content')driver.find_element(By.XPATH,'/html/body/div/div/div/div[1]/div[2]').click()time.sleep(1)lessons = driver.find_element(By.XPATH,'/html/body/div/div/div/div[2]/div/div[2]/div[2]/ul').find_elements(By.XPATH,"//li[@class = 'course clearfix']")lessons[0].click()
except WDEx as error:print(error)#切换到最新生成的window窗体,开始进行刷课
try:driver.switch_to.window(driver.window_handles[-1])#找到第一个黄色的,也即未完成的课程sections_todo = driver.find_elements(By.XPATH,"//em[@class='orange']")sections_loc=[]for section in sections_todo:sections_loc.append(section.location)for loc in sections_loc:sections_todo = driver.find_elements(By.XPATH,"//em[@class='orange']")watchVideo([section for section in sections_todo if section.location==loc])print('视频已经刷完,请自行完成题目')
except WDEx as error:print(error)

本脚本进能够自动完成视频的播放任务,测试习题还需自行结合网上搜索进行完成,祝愿各位新生开启美好的珞珈山生活,开学愉快!

下载地址(免费0C币):
(9条消息) python-seleium实现珞珈在线网课辅助观看功能的脚本-Python文档类资源-CSDN文库

python-seleium实现珞珈在线网课辅助观看功能相关推荐

  1. python网课一般多少钱-排名前十的python零基础编程在线网课一对一费用多少钱

    在这一波技术授权浪潮中,随着教育大数据技术的发展,个性化学习将逐渐成熟并成为教育的常态.接下来给大家讲讲人工智能教育的前景,感兴趣请往下看吧! 人工智能作为引领第四次工业革命的重要驱动力,不仅改变了人 ...

  2. 线上python课程一般多少钱-排名前十的python零基础编程在线网课一对一费用多少钱...

    在这一波技术授权浪潮中,随着教育大数据技术的发展,个性化学习将逐渐成熟并成为教育的常态.接下来给大家讲讲人工智能教育的前景,感兴趣请往下看吧! 人工智能作为引领第四次工业革命的重要驱动力,不仅改变了人 ...

  3. python在线编程免费课程-十大python零基础编程在线网课一对一费用多少钱

    许多家长会认为少儿编程组织的人员不是专业计算机行业的毕业生,那么在训练孩子学习时如何教会孩子控制机器人呢?今天小编主要给大家分享小孩学编程难吗,希望对你们有帮助! 在国内,每个品牌都有一些非常专业的员 ...

  4. 《中学生可以这样学Python》84节配套微课免费观看地址

    第1章  Python概述 微课|中学生可以这样学Python(1.2节):IDLE环境使用简介 微课|中学生可以这样学Python(1.3节):Python代码编写规范 微课|中学生可以这样学Pyt ...

  5. 蘑菇云【行空板Python入门教程】第三课:多功能提醒器

    多功能提醒器 生活中,我们对于声音并不陌生,美妙动听的音乐令人陶醉,节奏感十足的鸣笛声令人警醒,然而,当音量达到一定的强度,妨碍到人们正常休息.学习和工作,声音就会成为噪音. 与此同时,闹钟在许多小伙 ...

  6. 学堂在线网课自动观看

    使用教程 本脚本只支持Edge和Google浏览器,其他浏览器暂不支持. 建议将浏览器更新至最新版本再来看下面的教程. 谷歌浏览器: 打开http://chromedriver.storage.goo ...

  7. python开启新代码块_20课零基础快速学python完成简单邮件完整邮件代码块

    通过前两节课的学习, 我们已经掌握了模块的使用,能够解决现实中的问题.纸上得来终觉浅,绝知此事要躬行.以前小K给大家说过,实战项目是编程快速成长的一个途径.到现在应该是我们的第三个项目了,项目需求越来 ...

  8. 编程计算机教小明加法,Python校本课程第四课——教案

    Python校本课程第四课 课题:一个简单的加法器 数据类型的转换 教学目标: 1.能区别三种数据类型的表示以及记住相互转换命令str(),int(),float() 2.通过完成一个简单加法器的程序 ...

  9. python实现抢劵_双十一福利丨机械键盘、蓝牙音箱送送送!Python/UI/Unity多场微课解剖双十一套路!...

    福利来了 别等双十一 多场微课get双十一全套路 机械键盘送送送! 福 利 来 了 双十一福利第一波 - 11/1-11/11 - 机械键盘送送送 有品位的IT侠 早已get起双十一的新姿势 11月1 ...

  10. python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源)

    python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源) 见链接

最新文章

  1. 中科院院士「修正」了麦克斯韦方程?研究发材料期刊,两度热搜,两极评价...
  2. 2018五大人工智能趋势,你知道多少?
  3. CS231n 学习笔记(2)——神经网络 part2 :Softmax classifier
  4. 中tr不能显示字符_垃圾文本识别中基本操作指南和错误总结,第三部分
  5. Max retries exceeded with url 解决方案
  6. html:(11):address和code标签
  7. python saltstack web_saltstack学习-8:web管理页面(halite)
  8. CICD之maven介绍
  9. 如何设置计算机的网络参数,如何正确设置电脑的IP地址和DNS等参数[图文]
  10. 19年Q2了,运维的你有啥计划吗?
  11. inceptor游标使用及优化
  12. Silverlight4启动无法调试
  13. basler相机详细使用说明
  14. Docker安装Tomcat,安装elasticsearch+kibana
  15. Glide学习(二)—缓存策略
  16. 嗖一下【基于命令行交互的文件搜索工具】实现思路
  17. (13)TranslateMessage函数
  18. 红米5plus 刷twrp
  19. 计算机设置用户名密码,电脑账户密码如何设置/修改?
  20. FreeBSD中编译JDK

热门文章

  1. oracle三大连接方式,oracle的三种连接方式
  2. echarts-python数据可视化大屏展示
  3. RabbitMQ整合SpringCloud
  4. 数据结构(十四)——二叉树
  5. 服务器都有哪些安全配置总结
  6. Facebook安卓Feed流的内存优化实践
  7. Ubuntu/Debian怎么在命令行开启远程桌面共享
  8. 实验一 Matlab语音处理基本指令
  9. 创维电视安装第三方app
  10. C++死锁与哲学家就餐问题