电信网上大学自动挂课脚本

电信网大自动挂视频脚本。目前有两个功能,1:获取视频列表;2:自动播放视频,完成后进行下一个视频。

目前為 2022-09-28 提交的版本,檢視 最新版本

// ==UserScript==
// @name         电信网上大学自动挂课脚本
// @namespace    https://gf.qytechs.cn/zh-CN/scripts/452130
// @version      1.2
// @description  电信网大自动挂视频脚本。目前有两个功能,1:获取视频列表;2:自动播放视频,完成后进行下一个视频。
// @author       mydiv
// @match        *://kc.zhixueyun.com/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function () {
    var foundVideoNum = 0;
    var foundListNum = 0;
    var videoList = [];
    function autoPlay() {
      // 自动播放视频
      setTimeout(function () {
        foundVideoNum++;
        var playdom = document.querySelector(".videojs-referse-btn");
        if (playdom) {
          playdom.click();
          getVideoInfo();
        } else if (foundVideoNum <= 10) {
          autoPlay();
        } else {
          console.log("没找到视频,应该不是播放页面");
        }
      }, 1000);
    }
    function getVideoInfo() {
      // 获取视频信息
      var vidiotime = document.querySelector(".vjs-duration-display").lastChild.wholeText.toString().trim();
      var timeout = (Number(vidiotime.split(":")[0]) + 1) * 1000 * 60;
      setTimeout(function () {
        var playdom = document.querySelector(".anew");
        if (playdom) {
          // 播放下个视频
          autoPlayNextVideo();
        } else if (JSON.parse(window.localStorage.getItem("123videoAutoPlay"))) {
          getVideoInfo();
        }
      }, 1000);
    }
    function autoPlayNextVideo() {
      // 自动播放下一个
      var videoList = JSON.parse(window.localStorage.getItem("123videoList"));
      var i = Number(window.localStorage.getItem("123videoIndex"));
      openVideo(i + 1, videoList);
    }
    /**
     * 打开视频
     * @param i 循环开始序号 {number}
     * @param videoList 视频列表 {array}
     * @param bixiu 是否必修 {boolean}
     * @returns none
     */
    function openVideo(i, videoList) {
      if (i == videoList.length) {
        alert("全部播放完成");
      } else {
        var url = "https://kc.zhixueyun.com/#/study/course/detail/" + videoList[i].type + "&" + videoList[i].url + "/6/1";
        window.localStorage.setItem("123videoIndex", i); // 当前播放的index
        window.open(url, "_blank");
      }
    }
    function autogetList() {
      // 自动获取列表
      setTimeout(function () {
        foundListNum++;
        var listWrapDom = document.querySelector(".subject-catalog");
        if (listWrapDom) {
          formatList();
        } else if (foundListNum <= 3) {
          autogetList();
        } else {
          console.log("没找到列表,应该不是列表页面");
        }
      }, 5000);
    }
    function formatList() {
      // 格式化列表
      var listDom = document.querySelectorAll(".catalog-state-info");
      videoList = [];
      var bixiudom = document.querySelector("#bixiu123");
      if (listDom && listDom.length != 0) {
        listDom.forEach(function (oneList, index) {
          var oneListDom = oneList.querySelectorAll(".item");
          oneListDom.forEach(function (item, index) {
            var itemBixiu = item.querySelector(".m-left.default-skin").classList.contains("is-required");
            var bofang = item.querySelector(".iconfont.m-right.icon-wode_bofang") ? true : false;
            var bofangzhong = item.querySelector(".iconfont.m-right.icon-wode_bofangzhong") ? true : false;
            if (bixiudom.checked && itemBixiu && (bofang || bofangzhong)) {
              videoList.push({
                url: item.getAttribute("data-resource-id"),
                type: item.getAttribute("data-section-type"),
                title: item.querySelector(".name-des").innerHTML,
              });
            } else if (!bixiudom.checked && (bofang || bofangzhong)) {
              videoList.push({
                url: item.getAttribute("data-resource-id"),
                type: item.getAttribute("data-section-type"),
                title: item.querySelector(".name-des").innerHTML,
              });
            }
          });
        });
        var listCount123Dom = document.querySelector("#listCount123");
        listCount123Dom.innerHTML = "文件个数" + videoList.length;
        window.localStorage.setItem("123videoList", JSON.stringify(videoList));
      }
    }
    function loadListDom() {
      var mydiv = document.createElement("div");
      mydiv.id = "mydiv123";
      mydiv.style = "position: fixed;background:white;left: 5px;top: 5px;z-index: 1000000;box-shadow: 0px 0px 8px 2px #b5b5b547;height: 40px;line-height: 40px;";
      mydiv.innerHTML =
        "<span id='startPlay123' style='margin: 20px;cursor: pointer;'>开始播放</span><input type='checkbox' name='bixiu123' id='bixiu123' style='vertical-align: top;height: 40px;line-height: 40px;'/><label for='bixiu123' style='margin-right:20px'>只看必修</label><span id='listCount123' style='margin-right:20px;'>文件个数</span>";
      var body = document.querySelector("body");
      body.append(mydiv);
      var startPlaydom = document.querySelector("#startPlay123");
      var bixiu123dom = document.querySelector("#bixiu123");
      startPlaydom.addEventListener("click", function () {
        window.localStorage.setItem("123videoAutoPlay", true);
        openVideo(0, videoList);
      });
      bixiu123dom.addEventListener("change", function () {
        window.localStorage.setItem("123videoAutoPlay", true);
        formatList();
      });
    }
    function loadPlayDom() {
      var mydiv = document.createElement("div");
      mydiv.id = "mydiv1234";
      mydiv.style = "position: fixed;background:white;left: 5px;top: 5px;z-index: 1000000;box-shadow: 0px 0px 8px 2px #b5b5b547;height: 40px;line-height: 40px;";
      mydiv.innerHTML = "<span id='stopPlay123' style='margin:10px;cursor: pointer;'>停止自动播放</span>";
      var body = document.querySelector("body");
      body.append(mydiv);
      var stopPlaydom = document.querySelector("#stopPlay123");
      stopPlaydom.addEventListener("click", function () {
        window.localStorage.setItem("123videoAutoPlay", false);
        stopPlaydom.remove();
      });
    }
    function init() {
      if (window.location.href.includes("/study/subject/detail")) {
        // 列表页面
        autogetList();
        loadListDom();
      } else if (window.location.href.includes("/study/course/detail")) {
        // 视频页面
        if (JSON.parse(window.localStorage.getItem("123videoAutoPlay"))) {
          autoPlay();
          loadPlayDom();
        }
      }
    }
    init();
  })();
  

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址