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

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

作者: 许文同学 | 来源:发表于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