Greasy Fork

Greasy Fork is available in English.

智慧树

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         智慧树
// @namespace    https://www.tampermonkey.net/
// @version      1.1.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)
async function getVideoMsg (list) {
    for (const index in list ) {
        const item = list[index]

        //获取视频id
        const videoId = $(item).attr('videoId')
        //获取lessonid
        const lessonId = $(item).attr('lessonId')
        //获取measureId
        const measureId = $(item).attr('measureId')
        // 视频观看时间
        let watchTime = 180
        // 视频结束观看时间
        let exitwatchTime = 0
        //获取视频时间
        let videoTotalTime = 0

        if (videoId && lessonId) {
            //获取视频时间
            videoTotalTime = timeToSeconds($(item).find('.mi_timeSpan').html())
            let  title = $(item).find('.mi_couseName').html()
            let itemWatchtime = $(item).find('.mi_completed').attr('span_watchtime')
            // 判断该视频是否已经播放完成
            if (!$(item).find('.mi_completed').hasClass('html_hide')) {
                continue;
            }
            //上报次数
            const count = Math.ceil(videoTotalTime/180)
            //隔180秒上报视频进度
            for (let i = 0;i < count;i++) {
                console.log('准备上报'+title)
                if(parseInt(videoTotalTime) < 180) {
                    watchTime = parseInt(videoTotalTime) + 1
                    exitwatchTime = exitwatchTime + parseInt(videoTotalTime)
                    videoTotalTime = 0
                } else {
                    exitwatchTime = exitwatchTime + 180
                }
                //上报
                await videoPlay({videoId,lessonId,measureId,watchTime,exitwatchTime,videoTotalTime,title})
                watchTime = 180
                videoTotalTime = videoTotalTime - 180
                if(parseInt(videoTotalTime) <= 0){
                    exitwatchTime = 0
                }
            }
            pxmu.success({
                msg: title+'完成!', bg: '#4CC443',
            })
        }
    }
}
// 时间转换秒
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()
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log('开始上报'+video.title)
            $.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 ) {
                }
            })
            resolve()},3000)
    })


}