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

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

// ==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);
    }
})();