UOOC和U校园ai版自动解除失去焦点暂停、检测确认按钮、自动重播刷时长(!!!自行更新配置,在代码配置里面!!!)

2024/10/9 12:58:31

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name        UOOC和U校园ai版自动解除失去焦点暂停、检测确认按钮、自动重播刷时长(!!!自行更新配置,在代码配置里面!!!)
// @namespace   Violentmonkey Scripts
// @match       https://www.uooc.net.cn/*
// @match       http://www.uooc.net.cn/*
// @match       http://ucloud.unipus.cn/home*
// @match       https://ucloud.unipus.cn/home*
// @match       https://ucontent.unipus.cn/_explorationpc_default/pc.html*
// @match       http://ucontent.unipus.cn/_explorationpc_default/pc.html*
// @match       https://ucontent.unipus.cn/_explorationpc__default/pc.html*
// @match       http://ucontent.unipus.cn/_explorationpc__default/pc.html*
// @match       https://ucloud.unipus.cn/app/cmgt/*
// @match       http://ucloud.unipus.cn/*
// @match       https://ucloud.unipus.cn/*
// @match       *://ucontent.unipus.cn/_pc_default/pc.html?*
// @grant       none
// @version     2.1
// @author      -Bright J
// @description 2024/10/9 12:58:31
// ==/UserScript==


const config = {
    releasePause: true, // 是否自动解除视频暂停
    repeated: true,    // 是否重复播放视频
    clickProp: true,    // 是否点击确定
    autoPlay: true,     // 是否自动播放视频
    volume: 0,        // 视频音量0~100
}


var currentvideo = document.getElementsByTagName('video')[0];

const autoPlayVideo = function () {
    /**
     * 自动播放视频
     */
    if (config.autoPlay) {
        console.log('自动播放视频')
        currentvideo.play();
    }
}


document.addEventListener('click', function (event) {

    console.log("点击事件,重新获取此时视频对象");
    currentvideo = document.getElementsByTagName('video')[0];

    autoPlayVideo();
});


var intervalId = setInterval(function () {
    if (currentvideo) {
        clearInterval(intervalId); // 关闭本循环
        currentvideo.currentTime = 0;
        autoPlayVideo();
        /**
         * 设置属性
         */
        currentvideo.volume = config.volume / 100;


        /**
         * 视频播放暂停立马自动解除
         */
        if (config.releasePause) {
            setInterval(function () {
                if (currentvideo.paused && currentvideo.duration != currentvideo.currentTime && (currentvideo.currentTime != 0 || config.autoPlay)) {
                    console.log('检测到视频暂停,重新播放')
                    currentvideo.play();
                }
            }, 1000);
        }


        /***
         * 自动重复播放视频
         */
        if (config.repeated) {
            setInterval(function () {
                // 监听视频播放结束事件
                currentvideo.addEventListener('ended', function () {
                    console.log('视频结束,重复播放')
                    // 当视频播放结束时,重置视频播放时间到开始
                    currentvideo.currentTime = 0;
                    // 再次播放视频
                    currentvideo.play();
                });
            }, 1000);
        }



        /**
         * 点击弹窗确认按钮
         */
        if (config.clickProp) {
            var checkInterval = setInterval(function () {
                // 检查是否存在包含“确定”文本的按钮
                setTimeout(function () {
                    console.log('检测确认按钮');
                    var confirmButton = document.evaluate('//button[text()="确定"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
                    if (confirmButton) {
                        // 模拟点击“确定”按钮
                        confirmButton.click();
                    }
                }, 3000);
            }, 3000);
        }
    } else {
        console.log('等待视频加载,确认加载完成依旧重复这句话则是没有识别到网页视频。。。')
        currentvideo = document.getElementsByTagName('video')[0];
    }
}, 1000)