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()