Greasy Fork

Greasy Fork is available in English.

国家开放大学视频一键挂机脚本

国家开放大学视频一键挂机脚本(0.1)

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         国家开放大学视频一键挂机脚本
// @namespace    http://tampermonkey.net/
// @version      2024-06-01
// @description  国家开放大学视频一键挂机脚本(0.1)
// @author       OrangeMinus
// @match        https://lms.ouchn.cn/course/**
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ouchn.cn
// @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @license MIT
// @grant        none
// ==/UserScript==

(function() {

    $(document).on('click', '#auto-button', function () {
        var $this = $(this);
        requestActivitiesRead(this.dataset.activityId,this.dataset.time,$this)
    });
    setInterval(function (){
        const activity = document.getElementsByClassName("learning-activity ng-scope")
        for (const element of activity) {
            let autoButton = element.getElementsByClassName("auto-button");
            if (autoButton && autoButton.length>0) {
                continue
            }
            let id =  extractNumber(element.id)
            let activityValue = element.getElementsByClassName("attribute-value number ng-binding")
            if (activityValue.length>0) {
                let completeness = element.getElementsByClassName("completeness full");
                let activityTimeStr = activityValue[0].textContent
                let time = timeStringToSeconds(activityTimeStr);
                let buttonText = completeness && completeness.length>0?"已完成":"点击挂机"
                let btnHtml = '<span id="auto-button" class="button button-green small gtm-label auto-button" style="font-size: 12px; width: 58px; margin-left: 4px;" data-activity-id="'+id+'" data-time="'+time+'">'+buttonText+'</span>';
                $(element).prepend(btnHtml)
                console.log("课程id:",id,"时间:",time);
            }
        }
    },500)
    function requestActivitiesRead(id,end,$this){
        $.ajax({
            type: "POST",
            url: "https://lms.ouchn.cn/api/course/activities-read/"+id,
            contentType: 'application/json',
            data: JSON.stringify({
                start: 0,
                end: parseInt(end),
            }),
            success: function (response) {
                console.log('响应结果',response);
                if (response.completeness=="full"){
                    $this.text('已完成');
                }
            }
        });
    }

    function timeStringToSeconds(timeString) {
        // 按冒号分割字符串
        var parts = timeString.split(':');

        // 将每个部分转换为整数
        var hours = parseInt(parts[0], 10);
        var minutes = parseInt(parts[1], 10);
        var seconds = parseInt(parts[2], 10);

        // 计算总秒数
        var totalSeconds = (hours * 3600) + (minutes * 60) + seconds;

        return totalSeconds;
    }

    function extractNumber(str) {
        // 找到最后一个连字符的位置
        var lastDashIndex = str.lastIndexOf('-');
        // 提取该位置之后的子字符串
        return str.substring(lastDashIndex + 1);
    }
})();