js

145 阅读1分钟
const courseTree = document.querySelectorAll('#coursetree > ul > li')
const allCourseLink = []
courseTree.forEach(course => {
  const subCourse = course.querySelectorAll('.posCatalog_level > ul > li')
  subCourse.forEach(subCourse => {
    const link = subCourse.querySelector('.posCatalog_select > .posCatalog_name')
    allCourseLink.push(link)
  })
})
let video
const videoCanPlay = e => playVideo()
const documentMouseLeave = e => playVideo()
const videoEnded = e => {
  const currentCourseTitle = document.querySelector('#mainid > div.prev_title_pos > div').innerText
  const currentIndex = allCourseLink.findIndex(item => item.title === currentCourseTitle)
  document.removeEventListener('mouseleave', documentMouseLeave)
  video.removeEventListener('ended', videoEnded)
  video.removeEventListener('canplay', videoCanPlay)
  video = null
  allCourseLink[currentIndex + 1].click()
  run()
}
const getVideo = () => {
  let tid
  return new Promise(resolve => {
    tid = setInterval(() => {
      if (video) {
        clearInterval(tid)
        return resolve(video)
      }
      video = document.querySelector('iframe')?.contentDocument?.querySelector('iframe')?.contentDocument?.querySelector('video') ?? null
    }, 300)
  })
}
const playVideo = async () => {
  const res = await video.play().catch(err => {
    console.log(`%c${err}`, 'color: #cd2028; background: #282c34; padding: 10px; font-size: 30px; border-radius: 5px;')
  })
  res && console.log(`%c${res}`, 'color: #0fb872; background: #282c34; padding: 10px; font-size: 30px; border-radius: 5px;')
}
const setVideo = () => {
  video.playbackRate = 2
  video.volume = 0
  document.addEventListener('mouseleave', documentMouseLeave)
  video.addEventListener('ended', videoEnded)
  video.addEventListener('canplay', videoCanPlay)
}
const run = async () => {
  await getVideo()
  setVideo()
  playVideo()
}
run()