学堂在线小工具

FXXK THIS SHXT ONLINE COURSES!

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         学堂在线小工具
// @namespace    https://tunkshif.one/
// @version      0.3
// @description  FXXK THIS SHXT ONLINE COURSES!
// @author       TunkShif
// @match        https://www.xuetangx.com/learn/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const maxPlaySpeed = 5.0; // 播放倍速, 实测播放器有内部上限, 不一定能按照改的速度加速播放, 实测倍速太高播放后系统不会判定为你看过了这个视频
    const checkVideoOverInterval = 15000; // 每隔多长时间检测一次视频是否播放完毕, 单位 ms
    var helpMessage = "使用说明\n"
    helpMessage += "等待视频加载出来之后点击 开始刷课 的按钮, 然后去查看视频播放器的倍速播放的选项, 选择那个 !!MAX!! 的选项\n"
    helpMessage += "然后坐着等待刷课就行了.一个视频播放完毕后会自动跳转播放下一个, 如果检测到作业页面了会自动跳过到下一个视频.\n"
    helpMessage += "有时候因为网络原因, 可能会出现视频卡住没加载出来, 而导致直接跳到下一个视频了\n"
    helpMessage += "所以记得检查所有视频都刷满了没有哦.\n默认最大播放倍速是 5 倍速, 再高的话系统就不会计入了.\n"
    helpMessage += "要做作业题之前记得刷新一下网页并且不要点 开始刷课 按钮! 不然进入到作业页面后仍然会自动跳转!"
    helpMessage += "有bug可以提,但不一定会修("

    function createButtons() {
        let buttons = document.createElement("div");
        buttons.className = "custom-buttons";
        buttons.style = "float: left";

        let btnHelp = document.createElement("button");
        btnHelp.innerText = "点我查看帮助";
        btnHelp.onclick = function() {
            alert(helpMessage);
        }

        let btnStart = document.createElement("button");
        btnStart.innerText = "点我开始刷课";
        btnStart.onclick = function() {
            setMaxSpeed();
            setInterval(smartNextPlay, checkVideoOverInterval);
        }

        buttons.append(btnHelp);
        buttons.append(btnStart);
        document.body.append(buttons);
    }

    function setMaxSpeed() {
        let player = document.querySelector(".xt_video_player_common_list");
        let speed = player.children[4];
        speed.setAttribute("data-speed", maxPlaySpeed);
        speed.setAttribute("keyt", maxPlaySpeed);
        speed.innerText = "!!MAX!!"
        console.log("[XUETANG TOOL]: Added max speed to the video player.");
    }

    function smartNextPlay() {
        let isVideoOver = document.querySelector(".pause_show") != null;
        let nextPage = document.querySelector("p.next");
        let currentUrl = window.location.href;
        let isVideoPage = currentUrl.search("video") != -1;

        if (!isVideoPage || isVideoOver) {
            nextPage.click();
            console.log("[XUETANG TOOL]: Move to the next page.");
        }

    }

    setTimeout(createButtons, 5000);

})();