Greasy Fork is available in English.

【万能视频自动刷课时播放加速答题考试脚本】各类专业技术人员,教师,会计,医学继续教育公需课专业课·····

【弘成教育学起plus】【国开在线】【各类继续教育】【各类教师培训】【各类会计】【Q2444349169】。

// ==UserScript==
// @name         【万能视频自动刷课时播放加速答题考试脚本】各类专业技术人员,教师,会计,医学继续教育公需课专业课·····
// @version      1.0
// @description  【弘成教育学起plus】【国开在线】【各类继续教育】【各类教师培训】【各类会计】【Q2444349169】。
// @author       万能脚本
// @match        http://www.gzjxjy.gzsrs.cn/*/*
// @license      MIT
// @namespace https://greasyfork.org/users/1030542
// ==/UserScript==

const page = (pathname) => {
  return new Promise(resolve => {
    const timer = setInterval(() => {
      if (pathname[0] === '/') {
        if (location.href.includes(pathname)) {
          clearInterval(timer)
          resolve()
        }
      } else {
        if (location.href.includes(pathname)) {
          clearInterval(timer)
          resolve()
        }
      }
    }, 300)
  })
}
 
document.querySelector('video').defaultPlaybackRate = 3.0;//设置默认三倍速播放

document.querySelector('video').play();

const getElement = (selector) => {
  return new Promise(resolve => {
    const timer = setInterval(() => {
      const element = typeof selector === 'string' ? document.querySelector(selector) : selector
 
      if (element) {
        clearInterval(timer)
        resolve(element)
      }
    }, 60)
  })
}
 
page('/personback/#/learning').then(() => {
  getElement('video').then(video => {
    video.muted = true
  
    const playList = Array.from(document.querySelectorAll('.el-steps .el-step .title-step'))
    let currentIndex = 0
  
    const nextVideo = () => {
      let currentNow = Date.now()
  
      const timer = setInterval(async () => {
        if (isNaN(video.duration)) {
          video = await getElement('video')
          video.muted = true
        }
  
        if (Date.now() - currentNow < 15000) {
          if (video.paused) {
            video.play()
          }
  
          return
        }
  
        if (video.currentTime >= (video.duration - 1) && video.paused) {
          currentIndex += 1
  
          if (currentIndex >= playList.length) {
            currentIndex = 0
          }
    
          playList[currentIndex].click()
    
          clearInterval(timer)
  
          setTimeout(() => {
            nextVideo()
          }, 1000)
        }
      }, 1000)
    }
 
    setInterval(() => {
      const button = document.querySelector('.el-dialog__wrapper .el-button span')
 
      if (button) {
        button.click()
      }
    }, 1000)
  
    nextVideo()
  })
})