美文网首页
【脚本源码】自动录制慕课网整套视频脚本

【脚本源码】自动录制慕课网整套视频脚本

作者: 许文同学 | 来源:发表于2018-01-04 12:46 被阅读0次

很多小伙伴应该都有了解慕课网,或有看过上面的课程。慕课网有很多高质量的付费课程,但是PC端却没有提供下载功能,只能在线观看。手机端虽然可以下载,但是屏幕太小,观看效果太差。

之前尝试过FD抓包,抓到TS流但是好像有加密,无法播放。只能另辟蹊径,用了一个最笨的方法,录屏!因为慕课的课程需要点击下一节才会跳转,所以要写一个脚本来连续播放。不然手点会死的233333

脚本使用按键精灵编写(需求决定的,而且都是中文控件,复制源码进去就会有中文视图,非常简单)
录屏使用的Bandicam(我用过的画质最好的一款录屏软件)

最初只是写了几个鼠标和键盘操作,但是实际运行中慕课有时会弹出一些学生提问、网络定时重启都会导致脚本卡住。然后就开始加判断,改了一番,终于能正常使用了。

脚本原理:
播放视频后,根据图片匹配屏幕来判断当前状态,然后鼠标移动到对应位置执行点击及开始/停止录屏。脚本中的坐标范围根据你电脑的实际值修改,图片截图最好是到播放页面上截bmp。

脚本中用到的图片示例

下面上源码
···

// 慕课付费课程录屏 by.WEN
// 我的录屏快捷键为F10,注意不要和脚本快捷键冲突
KeyPress "F10", 1
sTime = Plugin.Sys.GetTime()

Rem loopStart
For 1200
    Delay 3000
    // 1919,1029为我浏览器界面上的坐标点。当判断颜色不匹配则证明视频全屏播放中,无需操作。
    // 因为播放结束,视频会退出全屏状态,则进入if处理。
    //  对比点自己根据实际修改,不建议右下角。因为很多软件会从右下角弹窗,导致判断失败。
    IfColor 1919,1029,"FAFAFA",0 Then       
        Delay 300
        // 匹配指定区域是否存在“最后一节”的结束提示,即课程都播完了
        XY = Plugin.Pic.FindPic(420, 500, 580, 550, "D:\AJ\end.bmp", 0, 1)
        iZB = InStr(XY, "|")
        X = CLng(Left(XY, iZB - 1))
        If X>0 Then
            KeyPress "F10", 1
            ExitScript
        End If
        
        Delay 100
        // 匹配指定区域是否存在“下一节”按钮,即本节已播完
        XY = Plugin.Pic.FindPic(480, 575,800, 800, "D:\AJ\next.bmp", 0, 1)
        iZB = InStr(XY, "|")
        X = CLng(Left(XY, iZB - 1))
        Y = CLng(Right(XY, Len(XY) - iZB))
        If X > 0 Then 
            // 检测距离上次匹配到“下一节”的时差,判断页面是否出现了问题
            UserVar tmpTime ""
            UserVar ls ""
            tmpTime = Plugin.Sys.GetTime()
            ls = tmpTime - sTime
            If ls < 12000 Then 
                Goto full
            ElseIf ls < 30000 Then
                KeyPress "F10", 1
                Delay 60000
                KeyPress "F5", 1
                KeyPress "F10", 1
                Goto full
            End If
            
            sTime = Plugin.Sys.GetTime()
            KeyPress "F10", 1
            MoveTo X, Y
                Delay 300
                LeftClick 1
                Delay 1000
                KeyPress "F10", 1
                Delay 2000
        End If
        
        Rem full
        Delay 300
        // 检测是否有问答弹出并关掉
        XY = Plugin.Pic.FindPic(375, 170, 400, 200, "D:\AJ\x.bmp", 0, 1)
        iZB = InStr(XY, "|")
        X = CLng(Left(XY, iZB - 1))
        Y = CLng(Right(XY, Len(XY) - iZB))
        If X>0 Then
            MoveTo X, Y
            Delay 300
                LeftClick 1
        End If
            
        Delay 100
        // 检测全屏按钮并点击
        XY = Plugin.Pic.FindPic(940, 980,1000, 1050, "D:\AJ\full.bmp", 0, 1)
        iZB = InStr(XY, "|")
        X = CLng(Left(XY, iZB - 1))
        Y = CLng(Right(XY, Len(XY) - iZB))
        If X>0 Then
            MoveTo X+10, Y+10
                Delay 300
                LeftClick 1
        End If
    
    End If
Next
Goto loopStart

···
慕课的付费课程是有一段JS定时器在视频上展示你的用户信息的,所以录屏请勿用于传播。
觉得录屏文件大的话,可以转成H265视频,教程类视频体积比很不错。转码软件个人推荐MeGUI,质量多试几个参数对比下。

转载请注明出处,谢谢!

相关文章

网友评论

      本文标题:【脚本源码】自动录制慕课网整套视频脚本

      本文链接:https://www.haomeiwen.com/subject/zgcrnxtx.html