Greasy Fork

Greasy Fork is available in English.

智慧树学习资源自动刷新脚本

zh-cn

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         智慧树学习资源自动刷新脚本
// @description  zh-cn
// @namespace    http://blog.zoyn.top/
// @version      1.0
// @author       Zoyn
// @match        https://hike.zhihuishu.com/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// ==/UserScript==

(function () {
    'use strict';
    // 延迟2s执行
    window.setTimeout(function(){
         /* 以下为文档部分 */
        if (document.querySelector("#viewBox").children[0].className == "doc-box") {
            console.log("检测到当前为文档,将在10秒后自动跳转至下一个资源")
            // 延迟10s执行
            window.setTimeout(function(){
                nextResource()
            },10000);
            return;
        }

        /* 以下为视频部分 */

        // 自动播放视频
        document.querySelector("#playButton").click()
        // 自动静音
        document.querySelector("#vjs_mediaPlayer > div.controlsBar > div.volumeBox > div.volumeIcon").click()
        // 绑定视频
        let video = document.querySelector("#vjs_mediaPlayer_html5_api")
        video.addEventListener('ended', ()=>{
            console.log("视频播放完成, 正在切换至下一个资源")
            nextResource()
        })
    },2000);

})();

function searchFolderVideos(folder) {
	var videoList = new Array()
	for(var i = 0; i < folder.children.length; i++) {
		var children = folder.children[i]
		// 分类中还有分类就自动递归,直到结束
		if(children.className == "folder-item") {
			var childrenVideos = searchFolderVideos(children)
			for(var j = 0; j < childrenVideos.length; j++) {
				videoList.push(childrenVideos[j])
			}
			continue
		}
		if(children.className == "file-item" || children.className == "file-item active") {
			if(children.id.startsWith("file")) {
				var videoFileId = parseInt(children.id.replace("file_", ""))
				videoList.push(videoFileId)
			}
		}
    }
	return videoList
}

function nextResource() {
    // 遍历资源树
    let root = document.querySelector("#sourceTree")
    // 判断资源数量
    if (root.children.length != 0) {
		// 获取每一个分支下的视频
		let videoList = new Array()
        for(var i = 0; i < root.children.length; i++) {
			var folder = root.children[i]

			var folderVideos = searchFolderVideos(folder)
			for(var j = 0; j < folderVideos.length; j++) {
				videoList.push(folderVideos[j])
			}
        }

		/* 以下为视频跳转部分 */
		// console.log(videoList)
		var url = window.location.href
		var urls = url.split("fileId=")
		// 遍历 查找到下一个视频
		for(var k = 0; k < videoList.length; k++) {
			var videoNumber = videoList[k]
			// 这里需要判断一下是不是最后一个视频
			var currentVideo = parseInt(urls[1])
			if (currentVideo == videoList[videoList.length - 1]) {
				alert("刷课完成")
				break;
			}
			// 下一个视频
			if (currentVideo == videoNumber) {
				var newUrl = urls[0] + "fileId=" + videoList[k + 1]
				window.location.href = newUrl
			}
		}
    }
}