利用Python脚本自动刷网课

到期末时间有点紧,但是还有一堆无聊的网课,用手机或电脑刷还需要人在旁边守着很费时间。因为我们的网课中间会弹出问让你回答,看完一节也不会自己换下一节。只能网上找资料自己写一个脚本了。

用到的库:time、pyautogui

参考:https://blog.csdn.net/AstroBoyTHU/article/details/78068070

 

# /usr/bin/env python
# _*_ coding:utf-8 _*_

 

import pyautogui as pag
import time
if __name__ == "__main__":
    s = pag.confirm('Are you sure to start ?')#if click ok then return “OK”
    if s == "OK":
        while(True):
            pag.moveTo(800, 600)
            pag.moveTo(800, 650)
            ifEqual = pag.pixelMatchesColor(1495, 755, (69, 144, 125))
            if ifEqual:#if it is finish ,then click next one
                time.sleep(5)
                pag.moveTo(130, 800)#下一节
                pag.click()
                print("进入下一节")
                time.sleep(1)
                pag.moveTo(420, 800)#选择1.0倍速
                pag.click()
                time.sleep(1)
                pag.moveTo(420, 723)#选择1.5倍速
                pag.click()
                print("开启1.5倍速")
                time.sleep(120)
            ifBreak = pag.pixelMatchesColor(515, 320, (243, 175, 21))
            if ifBreak:#判断是否弹框   
                pag.moveTo(948, 786)
                pag.click()
            time.sleep(3)
整个过程比较简单,运行程序后,先手动用浏览器打开视频网课的界面,每个人的屏幕和视频网站都不一样,
可以根据自己的电脑修改,先附一张图片方便讲解;

基本所有的视频界面都是这样,为了让程序识别视频是否观看完毕,一开始所有的视频动画都一样,
我就选了一个色彩比较明显的地方,然后在程序里不停的获取那个点的像素与结束时的像素比较,
pag.pixelMatchesColor(1495, 755, (69, 144, 125)),前面两个参数是坐标,后面三个是像素值,
如果像素匹配就返回 True。

如果相等就说明视频播放完毕,模拟鼠标移动并点击下一节的箭头那,但这种做法有缺陷,因为
结束时的视频会变化,即使都是黑屏,对应的像素也会变化,不是每次都是(0, 0, 0),所以
这样做程序运行并不稳定,本人无意中发现:视频的进度条的像素都是一个值,不会变化,因此
取进度条最右边的一个点作为比较,再等上几秒确保视频播完。
    由于进度条只有在鼠标移动的时候才会出现,所以程序循环里前两条移动鼠标语句是为了显示
进度条。
pag.moveTo(800, 600)
pag.moveTo(800, 650)

回答问题,在智慧树里不是必答的,只是模拟鼠标点击确定就可以了,做法与上面类似。

对于怎么获取屏幕点的像素,
1.利用qq的截图功能,截图的时候截图框会出现“(x, y, (a, b, c))” 的数据,这就是右下角的
坐标及像素
2.pag包里的函
img = pag.screenshot()
(a, b, c) = img.getpixel((800, 620))
(a, b, c)就是(800, 620)的像素值

 

 

 

 

 

你可能感兴趣的:(利用Python脚本自动刷网课)