九月资源网-不以盈利为目的,仅仅为个人学习、研究或者欣赏。若未注明来源,请联系添加。如果侵犯到您的版权,请联系删除相关文章。

SCNU长江雨课堂网课脚本

技术类 Thor 来源:52破解-leqaq 4周前 (11-06) 28次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

油猴介绍

Tampermonkey 中文名俗称油猴,是一款免费的浏览器插件,目前最为流行的用户脚本管理器,用户可以通过油猴添加和使用脚本,而脚本是一种可以修改网页 JavaScript 的程序。通过这些脚本,可以实现视频解析、音乐下载、网盘直连解析、豆瓣资源下载、百度文库增强、屏蔽网站广告等功能。总之,通过油猴,我们可以实现很多想象不到的强大功能,而这些功能的背后就是依托庞大的脚本市场,如 greasyfork
油猴脚本

脚本

// ==UserScript==
// home.php?mod=space&uid=170990         scnu华南师范大学网课脚本
// home.php?mod=space&uid=467642    http://tampermonkey.net/
// home.php?mod=space&uid=1248337      1.2
// @description  scnu 华南师范大学 长江雨课堂 网课自动化脚本
// home.php?mod=space&uid=686208       hqzqaq
// home.php?mod=space&uid=593100         https://statics.scnu.edu.cn/statics/images/favicon.ico
// home.php?mod=space&uid=609072        GM_getValue
// @grant        GM_setValue
// @grant        unsafeWindow
// home.php?mod=space&uid=195849        https://scnuyjs.yuketang.cn/pro/*
// @run-at       document-end
// @license      MIT
// @require https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js
// ==/UserScript==

(function () {
    "use strict";
    // 多长时间刷新一下页面,单位 分钟
    const reloadTime = 10;
    // 视频播放速率,可选值 [1,1.25,1.5,2],默认为二倍速
    const rate = 2;

    window.onload = function () {
        // 网课页面跳转
        function getElTooltipItemList() {
            return document.getElementsByClassName("el-tooltip leaf-detail");
        }

        function getElTooltipList() {
            return document.getElementsByClassName("el-tooltip f12 item");
        }

        // 静音
        function claim() {
            $(
                "#video-box > div > xt-wrap > xt-controls > xt-inner > xt-volumebutton > xt-icon"
            ).click();
        }

        function fun(className, selector)
        {
            var mousemove = document.createEvent("MouseEvent");
            mousemove.initMouseEvent("mousemove", true, true, unsafeWindow, 0, 10, 10, 10, 10, 0, 0, 0, 0, 0, null);
            document.getElementsByClassName(className)[0].dispatchEvent(mousemove);
            document.querySelector(selector).click();
        }

        // 加速
        function speed() {
            let keyt = '';
            if(rate === 2 || rate === 1){
                keyt = "[keyt='" + rate + ".00']"
            }else{
                keyt = "[keyt='" + rate + "']"
            }
            fun("xt_video_player_speed", keyt);
        }

        const getElementInterval = setInterval(function () {
            const elTooltipList = getElTooltipList();
            const elTooltipItemList = getElTooltipItemList();
            if (elTooltipList) {
                for (let index = 0; index < elTooltipList.length; index++) {
                    const element = elTooltipList[index];
                    const textContent = element.textContent;
                    //const textContent = ''
                    if (textContent === "未开始" || textContent === "未读") {
                        // 判断是否是习题
                        if(elTooltipItemList[index].innerText.indexOf('习题')!= -1){
                            continue;
                        }
                        // 判断是否已过学习时间
                        if (elTooltipItemList[index].children[1].children[0].innerText.indexOf("已过") != -1) {
                            continue;
                        }
                        window.clearInterval(getElementInterval);
                        GM_setValue("rowUrl", window.location.href.toString());
                        // 网课页面跳转
                        elTooltipItemList[index].click();
                        window.close();
                        break;
                    }
                }
            }
        }, 1000);

        let video;
        const videoPlay = setInterval(function () {
            // 获取播放器
            video = document.getElementsByClassName("xt_video_player")[0];
            if (!video) {
                return;
            }
            setTimeout(function () {
                // 视频开始5s之后再开启倍速
                speed()
            },5000);
            claim();
            window.clearInterval(videoPlay);
        }, 500);

        // 是否播放完成的检测
        const playTimeOut = setInterval(function () {
            if (!video) {
                return;
            }
            video.play();

            // 没有静音
            if (video.volume != 0) {
                claim();
            }
            const completeness = $(
                "#app > div.app-wrapper > div.wrap > div.viewContainer.heightAbsolutely > div > div.video-wrap > div > div > section.title > div.title-fr > div > div > span"
            );
            if (!completeness) {
                return;
            }
            if (typeof completeness[0] == "undefined") {
                return;
            }
            const videoText = completeness[0].innerHTML
            if (videoText) {
                let str = videoText.toString();
                const succ = str.substring(4, str.length - 1);
                const succNum = parseInt(succ);
                if (succ >= 95) {
                    const url = GM_getValue("rowUrl");
                    if(url){
                        window.clearInterval(playTimeOut);
                        window.location.replace(url);
                    }
                }
            }

        }, 1000);

        // 是否为阅读类型
        const readInterval = setInterval(function () {
            const read = $(
                "#app > div.app-wrapper > div.wrap > div.viewContainer.heightAbsolutely > div > div.graph-wrap > div > div > section.title > div.title-fr > div > div"
            );
            if(!read){
                return
            }
            if (typeof read[0] == "undefined") {
                return;
            }
            const readText = read[0].innerHTML
            if(readText){
                if(readText.toString() === '已读'){
                    window.clearInterval(readInterval);
                    window.location.replace(GM_getValue("rowUrl"));
                }
            }
        }, 1000);

        // 为了防止页面假死,定时刷新一下页面
        setTimeout(function () {
            // 如果保存了课程列表路径就回退的课程列表页面
            if(GM_getValue("rowUrl")){
                window.location.replace(GM_getValue("rowUrl"));
            }
            location.reload()
        },reloadTime * 60 * 1000);
    };
})();

功能

  • 当进入课程界面,查找未开始和已经有完成度的课程和未读的材料,自动看视频,直到所有视频看完为止
  • 视频界面,自动播放视频、静音、5秒之后默认开启二倍速

未实现

答题,所有习题都会跳过,需要手动答题
只是做了些自动化的处理,理论上是不会有风险的(当然只是理论上,自行考虑 \^_\^)

安装脚本

greasyfork(https://greasyfork.org/zh-CN) 网站,搜索scnu华南师范大学网课脚本关键字,安装脚本

运行

前往 scnu 华南师范大学 长江雨课堂
登录,进入课程界面,即可开始刷课。
注意:edge 浏览器需要允许网站弹窗(注意地址栏的提示)脚本才能执行跳转,这个很关键,不然脚本无法正常执行。

参数

总共有两个参数可以调整

  • 一个是页面刷新的时间,防止网络不好或者其它原因造成页面假死,默认为10分钟。
  • 一个是视频倍速的速率,有四个值,1、1.25、1.5、2;默认为 2

可自己在代码编辑进行修改
SCNU长江雨课堂网课脚本


本文标题:SCNU长江雨课堂网课脚本
本文链接:https://www.sir8.cn/679.html
仅供学习交流,禁止商用!
资源来源于网络!
若要求注明来源,请留言或联系站长!
如若侵权,联系站长删除!
都会在看到的第一时间修改!
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址