智慧树

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

目前為 2024-06-13 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         智慧树
// @namespace    hhttps://github.com/zhaozhenkun
// @version      1.0.0
// @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',
            })
        }
    })

}