自动点击播放器元素以继续播放
// ==UserScript==
// @name onlinedu自动播放
// @namespace c-h.cc
// @version 0.7.1
// @description 自动点击播放器元素以继续播放
// @author JKRaks
// @match *://www.onlinedu.org.cn/*
// @include http://www.onlinedu.org.cn/*
// @include https://www.onlinedu.org.cn/*
// @require https://lib.baomitu.com/jquery/3.5.1/jquery.min.js
// @require https://cdn.bootcdn.net/ajax/libs/layer/3.1.1/layer.min.js
// @icon http://www.onlinedu.org.cn/images/logo.gif
// @license GPL License
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_setClipboard
// @grant GM_info
// @grant GM_xmlhttpRequest
// @grant GM.getValue
// @grant GM.setValue
// @grant GM.setClipboard
// @grant GM.info
// @grant GM.xmlHttpRequest
// ==/UserScript==
(function() {
//框架渲染
$("head").append('<script crossorigin="anonymous" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" src="https://lib.baomitu.com/jquery/3.5.1/jquery.min.js"></script>')
$("head").append('<link rel="stylesheet" type="text/css" href="https://www.layuicdn.com/layui/css/layui.css" />')
$("head").append('<link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/layer/3.1.1/theme/default/layer.min.css" />')
$("head").append('<script src="https://www.layuicdn.com/layui/layui.js"></script>')
$("head").append('<script src="https://cdn.bootcdn.net/ajax/libs/layer/3.1.1/layer.min.js"></script>')
layer.open({
type: 1,
id:'uul',
title: '运行日志',
shadeClose: true,
shade: false,
offset: 'r',
area: ['200px', '410px'],
content: '<div><a href="javascript:" id="btnLoadTime" class="layui-btn layui-btn-radius layui-btn-xs layui-btn-normal">设置选课延迟</a><p></p><a href="javascript:" id="btnStopScript" class="layui-btn layui-btn-radius layui-btn-xs layui-btn-normal">停止脚本</a><a href="javascript:" id="btnReloadScript" class="layui-btn layui-btn-radius layui-btn-xs layui-btn-normal">重新运行脚本</a></div><ul id="uul" style="list-style:\'✔\';height:250px;width:170px;overflow:auto;margin:auto;margin-top:5px"><li id="startLi">已启动</li></ul><div id="dvNowClass" style="width:80%;height:40px"></div><p style="margin:5px">当前播放状态:<span id="nowIsLoading"></span></p>',
});
layer.open({
type: 1,
id:'setTime',
title: '延迟选课设置',
shadeClose: true,
shade: false,
area: ['240px', '170px'],
content: '<div><input id="txtNum" type="number" name="num" lay-verify="title" autocomplete="off" placeholder="请输入延迟时间" class="layui-input" /><button type="button" id="btnUpdateLoadTime" class="layui-btn layui-btn-normal layui-btn-sm">确认</button><span>单位:毫秒;请根据网页加载速度修改</span><p>当前: 默认:</p><span id="NowLoadTime"></span><span> 3000</span></div>',
cancel: function(){
//右上角关闭回调
$("#layui-layer2").hide();
return false
}
});
$("#layui-layer2").hide();
//程序入口
function Inside(){
setSelectClassTimer()
setAutoVedioTimer()
}
//定义定时器
var outTimer;
var intTimer;
var loadTime;
//取出延迟启动值
try{
loadTime = GM_getValue('loadTime',3000)
}
catch(err){
GM_setValue('loadTime',3000)
loadTime = 3000
}
//设置自动选课定时器
function setSelectClassTimer(){
//自动选课
outTimer=setTimeout(function(){
AutoSelectCalss();
},loadTime);
}
//自动选课方法
function AutoSelectCalss(){
var $Lst=$(".el-progress__text")
for(var i=0;i<$Lst.length;i++){
if($Lst.eq(i).text()!="100%"){
if(!$Lst.eq(i).parent().parent().parent().parent().prev().find("h3").prev().is('.hj_bg_color'))
$Lst.eq(i).parent().parent().parent().parent().prev().find("h3").click()
$Lst.eq(i).parent().parent().click()
$Lst.eq(i).click()
return;
}
layer.msg('自动选课已运行完毕,若未自动选课,则请手动选课');
}
}
//等待时间设置
var stayTime;
//取出等待时间
try{
stayTime = GM_getValue('stayTime',33)
}
catch(err){
GM_setValue('stayTime',33)
stayTime = 33
}
//缓冲次数
var loadingTime=0;
//设置自动播放定时器
function setAutoVedioTimer(){
//定时判断视频是否暂停
intTimer=setInterval(function(){
try{
var vdo =$('video').get(0)
var State = vdo.paused
if(State){
ck()
}
//判断是否在缓冲
if($("#dplayer").is(".dplayer-loading")){
loadingTime+=1;
$("#nowIsLoading").text("缓冲中")
}else if($("#dplayer").is(".dplayer-playing")){
loadingTime=0;
$("#nowIsLoading").text("播放中")
}
//连续缓冲时间超过等待时间则重新载入页面
if(loadingTime>stayTime){
window.location.reload();
}
checkPage()
}
catch(err){
checkPage()
}
},300)
}
//重放日志
function ck(){
$(".dplayer-video-wrap").click()
$("#uul li:eq(0)").before('<li>'+getNow()+'重新播放</li>')
}
//时间获取
function getNow() {
var myDate = new Date();
var month=myDate.getMonth()+1;
var date=myDate.getDate();
var h=myDate.getHours();
var m=myDate.getMinutes();
var s=myDate.getSeconds();
var now = month+'/'+date+' '+h+':'+m+':'+s;
return now
}
//检查页面是否为课程视频页面
function checkPage(){
if(window.location.pathname!='/video'){
clearTimer()
$("#nowIsLoading").text("检测到当前页面不是播放页面,已停止运行脚本")
}
}
//定时器清除
function clearTimer(){
clearInterval(outTimer);
clearInterval(intTimer);
}
//显示延迟加载
$("#btnLoadTime").click(function(){
$("#layui-layer2").show()
$("#NowLoadTime").text(GM_getValue('loadTime',3000))
})
//自定义延迟启动
$("#btnUpdateLoadTime").click(function(){
var Time = $("#txtNum").val();
if (!(/(^[1-9]\d*$)/.test(Time)))
layer.msg("有误")
else{
layer.msg("启动延迟设置为 "+Time+" ms")
GM_setValue("loadTime",Time)
$("#layui-layer2").hide();
}
})
$("#btnReloadScript").click(function(){
clearTimer()
Inside();
$("#uul li:eq(0)").before('<li>脚本已重新运行</li>')
})
$("#btnStopScript").click(function(){
clearTimer()
$("#uul li:eq(0)").before('<li>脚本已停止</li>')
})
Inside();
})();