python自动播放网课
由于新冠疫情还在蔓延,各个学校的开学时间也是一推再推。学生们自然是很开心。不过国家怎么能让祖国的花朵就这么烂在温室里呢?于是“停课不停学”的口号响彻祖国大江南北。各大学校纷纷推出网上教学平台,琳琅满目的网课也如雨后春笋般涌现出来。
你以为网课挂在那里播放就可以了,而你可以悠闲地磕着瓜子打着荣耀。no,no, no。据说某某办公软件,老师有管理员权限,可以远程控制你的摄像头。突然感觉10年前的旧电脑挺好的(没有摄像头)。就算没有摄像头,老师也可以点名,每十分钟点一次。估计一节课也就能点四次名了。遇到这样的老师,你还是“好好学习,天天向上”吧!
不仅在学习中,在工作中我们也经常遇到各种合规培训,一般都是观看培训视频。虽然不点名,不开摄像头,但是要记学时。问题就在这里,设计者会在后台设计一些程序,让视频隔一段时间自动停掉。你可以心已远,但是你的身必须未动。你得在哪杵着,时不时去点下鼠标。
这是一场程序猿之间的较量。不能说道高一尺魔高一丈,至少是上有政策下有对策吧!我们今天就用python来实现,自动点击视频播放。让你身和心一样自由。
这里需要先安装几个需要的python包
pip install pyautogui
pip install opencv-python
大体思路就是,每隔一段时间去查看一下播放器有没有停掉,如果停掉了,就让鼠标去点一下。
首先我们需要在桌面上找到播放器的位置,在python里面可以用代码去找一张图片在桌面上的位置。于是我先截取了一张播放器特有的图片,
这样无论播放器在桌面上什么位置,无论是窗口大小是什么,都能找到播放器了,当然不能最小化了。
之后我们要查看播放状态。我们知道如果你长时间没有任何操作,播放器的功能按钮会自动隐藏,所以需要先把鼠标在播放器区域移动一下,然后再来查找播放按钮。
如果找到了,证明视频已经停止了,只需要把鼠标移动到这个播放按钮的位置,点一下就可以了。
import pyautogui
import time
#死循环,每隔5秒去查一次播放状态。这个时间可以自己调整
while 1:
#查找播放器的位置
player = pyautogui.locateOnScreen('autoclick/player.PNG',confidence=0.8)
playercenter = pyautogui.center(player)
#鼠标移动到播放器上,显示播放按钮
pyautogui.moveTo(playercenter.x+100, playercenter.y+100, duration=0.25)
#获取播放按钮图片
playlocation = pyautogui.locateOnScreen('autoclick/play.PNG',confidence=0.8)
#如果找到了播放按钮
if not(playlocation is None):
#找到播放按钮的位置,鼠标左键单击
clickpoint = pyautogui.center(playlocation)
pyautogui.click(clickpoint[0],clickpoint[1],button='left')
#程序休眠5秒钟
time.sleep(5)
测试效果还不错
- Python多线程Selenium跨浏览器测试
- Python Selenium设计模式-POM
- 基于Excel参数化你的Selenium2测试
- 创建你的第一个webdriver python代码
- Python Selenium Webdriver安装手册
- 工具篇 - HTTP协议报文结构及示例03
- 工具篇 - JMeter目录及关键配置分析02
- python unittest之加载及跳过测试方法和示例
- python unittest之异常测试
- python unittest之断言及示例
- python unittest关键API说明及示例
- 性能测试必备监控技能linux篇14
- JMeter函数和变量11
- JMeter监听器10
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- GitHub如何回滚代码1.git log 查看commit hash值2.执行git reset --hard xxxx3.git push -f
- java获取程序执行时间
- Redis数据增多了,是该加内存还是加实例?
- 针对mysql delete删除表数据后占用空间不变小的问题
- 报错信息:(VI_1): ip address associated with VRID 80 not present in MASTER advertt : 192.168.1.8
- 如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?
- 如果MySQL的 InnoDB 文件的损坏,该如何手动恢复?
- 如何使用慢查询快速定位执行慢的 SQL?
- 如何使用 EXPLAIN 精准查看执行计划?
- MySQL怎么查看 SQL 的具体执行成本?
- Python 爬虫进阶必备 | 某外卖优惠平台内容加密参数分析
- pytest 自动化测试框架(二)
- Web | Django 与数据库交互,你需要知道的 9 个技巧
- 商机负责人与商机团队负责人不一致时更新团队负责人为商机负责人语句
- mysql常用语句集合(仅供工作日常学习参考)