青书学堂 自动播放视频 自动挂课 自动下个视频 自动下个课程
// ==UserScript==
// @name 【全自动】青书学堂挂课
// @namespace http://tampermonkey.net/
// @version 0.5
// @description 青书学堂 自动播放视频 自动挂课 自动下个视频 自动下个课程
// @author Yi
// @match https://qingshuxuetang.com/*
// @match https://*.qingshuxuetang.com/*
// @match https://www.qingshuxuetang.com/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant None
// ==/UserScript==
(function() {
'use strict';
let domain = 'https://degree.qingshuxuetang.com/'
let url = location.href
let host = location.host
let isDegree = host.indexOf('degree') > -1
if(!isDegree && url.indexOf('MyQingShu') > -1){
showInfo('开始执行请稍后')
setTimeout(function() {
console.log('viewMap',viewMap)
if(viewMap && viewMap.student && viewMap.student.data){
window.location.href= viewMap.student.data[0].entrance
return
}
showInfo('没有学校')
}, 3000)
return
}
if(!isDegree){
console.log('不是degree页面')
return
}
let symbol = null
if(location.pathname.split('/').length >= 2){
symbol = location.pathname.split('/')[1]
}
if(symbol == null){
console.log('未找到学校')
return
}
if(url.indexOf('Student/Home') > -1){
showInfo('开始执行请稍后')
window.location.href=`${domain}${symbol}/Student/Course/CourseList`
}else if (url.indexOf('Course/CourseList') > -1) {
showInfo('开始执行请稍后')
setTimeout(function() {
console.log('currentCourse',currentCourse)
sessionStorage.setItem('courses',JSON.stringify(currentCourse))
let course = getFitCourse();
if(course){
window.location.href=`${domain}${symbol}/Student/Course/CourseStudy?courseId=${course.courseId}&teachPlanId=${course.teachPlanId}&periodId=${course.periodId}`
return
}
showInfo('没有可学习课程')
}, 3000)
}else if(url.indexOf('Course/CourseStudy') > -1){
showInfo('开始执行请稍后')
setTimeout(function() {
console.log('coursewareMedias',coursewareMedias)
var videos=[];
getVideoNode(coursewareMedias,videos)
console.log('videos',videos);
let video = videos[0];
let courseId = getQueryString('courseId');
let teachPlanId = getQueryString('teachPlanId');
let periodId = getQueryString('periodId');
let videoMaps = {}
videoMaps[courseId] = videos;
sessionStorage.setItem('videos',JSON.stringify(videoMaps))
window.location.href=`${domain}${symbol}/Student/Course/CourseShow?teachPlanId=${teachPlanId}&periodId=${periodId}&courseId=${courseId}&nodeId=${video.id}`
}, 3000)
}else if(url.indexOf('Course/CourseShow') > -1){
showInfo('开始执行请稍后')
let courseId = getQueryString('courseId');
let nodeId = getQueryString('nodeId');
let videoMaps = JSON.parse(sessionStorage.getItem('videos'))
let teachPlanId = getQueryString('teachPlanId');
let periodId = getQueryString('periodId');
let nextVideo = getNextVideo(nodeId,videoMaps[courseId])
setTimeout(function() {
var video = document.getElementById("vjs_video_3_html5_api")
//设置静音
video.muted = true
//视频倍速
//video.playbackRate = 2
//视频开始
video.play()
const nextUrl = `${domain}${symbol}/Student/Course/CourseShow?teachPlanId=${teachPlanId}&periodId=${periodId}&courseId=${courseId}&nodeId=${nextVideo}`
if(video.duration < 300){
if(nextVideo == null){
let courses = JSON.parse(sessionStorage.getItem('courses'))
let course = getNextCourse(courseId,courses)
if(course == null){
window.location.href='https://baidu.com'
}
window.location.href=`${domain}${symbol}/Student/Course/CourseStudy?courseId=${course.courseId}&teachPlanId=${course.teachPlanId}&periodId=${course.periodId}`
}else{
location.replace(nextUrl);
}
}
// 下一条视频
video.addEventListener("ended",function(){
if(nextVideo == null){
let courses = JSON.parse(sessionStorage.getItem('courses'))
let course = getNextCourse(courseId,courses)
if(course == null){
window.location.href='https://baidu.com'
}
window.location.href=`${domain}${symbol}/Student/Course/CourseStudy?courseId=${course.courseId}&teachPlanId=${course.teachPlanId}&periodId=${course.periodId}`
}else{
location.replace(nextUrl);
}
})
}, 5000)
getVideoTime()
}
function getFitCourse(){
for(let inx in currentCourse) {
if(currentCourse[inx].score < 100){
return currentCourse[inx]
}
}
return null
}
function getNextVideo(current,videos){
let next =null;
Array.prototype.forEach.call(videos,function (value,index) {
if(value.id === current && videos.length-1 > index+1){
next = videos[index+1].id
return false
}
})
return next;
}
function getNextCourse(current,courses){
let next =null;
Array.prototype.forEach.call(courses,function (value,index) {
if(value.courseId == current && courses.length-1 > index+1){
next = courses[index+1]
return false
}
})
return next;
}
function getVideoNode(medias,videos){
Array.prototype.forEach.call(medias,function (value,index) {
if(value.type === 'video'){
videos.push(value)
}
if(value.nodes !=null){
getVideoNode(value.nodes,videos)
}
})
}
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
let currentVideoTime =null;
function getVideoTime() {
setInterval(function () {
var vid = document.getElementById("vjs_video_3_html5_api")
var currentTime = vid.currentTime.toFixed(1);
if(currentTime == currentVideoTime){
console.log('视频卡住了,刷新~');
location.reload()
}
currentVideoTime = currentTime;
console.log('视频时间:', currentTime);
}, 5000);
}
function showInfo(info){
QingshuDialog.info(`【脚本信息】${info}`)
}
})();