智慧树

智慧树视频快速刷完,解放双手。

当前为 2024-06-13 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         智慧树
// @namespace    hhttps://github.com/zhaozhenkun
// @version      v1.0.0  2024-06-13
// @description  智慧树视频快速刷完,解放双手。
// @author       zhaozk
// @match        https://armystudy.zhihuishu.com/armystudy/militaryStudy?*
// @icon         http://image.zhihuishu.com/zhs_yufa_150820/able-commons/demo/201806/0c81bd49be6b4184bc4aaf1472a2fabd.png
// @require      https://unpkg.com/[email protected]/dist/web/pxmu.min.js
// @grant        none,
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    //延时等待页面加载完成
    setTimeout(function (){
        // 获取视频播放元素
        const videoLists = document.querySelectorAll('.mi-courseContent ul li')
        if (videoLists.length) {
            getVideoMsg(videoLists)
        }
    },2000)
    // Your code here...
})();

//遍历视频列表(获取视频id/视频时间/lessonid/measureId)
function getVideoMsg (list) {
    for (const index in list ) {
        const item = list[index]
        // 获取该视频是否已经播放完成
        let completed = $(item).find('.mi_completed').html()
        if (completed == '已完成') {
            return;
        }
        //获取视频id
        const videoId = $(item).attr('videoId')
        //获取lessonid
        const lessonId = $(item).attr('lessonId')
        //获取measureId
        const measureId = $(item).attr('measureId')
        // 视频观看时间
        let watchTime = 0
        // 视频结束观看时间
        let exitwatchTime = 0
        //获取视频时间
        let videoTotalTime = 0

        if (videoId && lessonId) {
            //获取视频时间
            videoTotalTime = timeToSeconds($(item).find('.mi_timeSpan').html())
            //上报次数
            const count = Math.ceil(videoTotalTime/180)
            //隔180秒上报视频进度
            for (let i = 0;i < count;i++) {
                setTimeout(function (){
                    if(parseInt(videoTotalTime) < 180) {
                        watchTime = parseInt(videoTotalTime) + 1
                        exitwatchTime = exitwatchTime + parseInt(videoTotalTime)
                        videoTotalTime = 0
                    } else {
                        exitwatchTime = exitwatchTime + 180
                    }
                    //上报
                    videoPlay({videoId,lessonId,measureId,watchTime,exitwatchTime,videoTotalTime})
                    watchTime = 180
                    videoTotalTime = videoTotalTime - 180
                    if(parseInt(videoTotalTime) <= 0){
                        exitwatchTime = 0
                    }
                },3000)

            }




        }

    }
}
// 时间转换秒
function timeToSeconds(strTime) {
    var Temp = strTime.split(':');
    var seconds = 60 * Number(Temp[0]) + Number(Temp[1]);
    return seconds;
}
// url参数转换为对象
function UrlSearch() {
    const search = location.search.replace('?', '')
    const params = {}
    const arr = search.split('&')
    arr.forEach(item => {
        const pArr = item.split('=')
        params[pArr[0]] = pArr[1]
    })

    return params
}
//请求接口完成视频播放
function videoPlay (video) {
    const searchUrl = UrlSearch()
    $.post('https://armystudy.zhihuishu.com/armystudy/stuRecord', {
        courseId:searchUrl.courseId, //课程id
        userId: searchUrl.userId, //用户id
        videoId:video.videoId, //视频id
        exitwatchTime:video.exitwatchTime, //播放结束时间
        lessonId:video.lessonId,
        measureId:video.measureId,
        videoNum:$("#lessonNum").html(),
        watchTime:video.watchTime //观看视频时长(180s一个循环)
    }, function (res) {
        if (video.videoTotalTime >= 0 ) {
            pxmu.success({
                msg: video.videoId+'完成!', bg: '#4CC443',
            })
        }
    })

}