// ==UserScript==
// @name 广东省干部培训网络学院刷课
// @namespace http://tampermonkey.net/
// @version 0.0.5
// @description 如果遇到死循环打开时候后把进度条往前拉就行,没做倍速播放的功能,选课要自己选,选完才能刷,有问题可以反馈,虽然我不一定会看
// @author Nyeming
// @license MIT
// @grant GM_getValue
// @grant GM_setValue
// @grant window.close
// @include https://gbpx.gd.gov.cn/*
// @include https://wcs1.shawcoder.xyz/*
// @include https://cs1.gdgbpx.com/*
// ==/UserScript==
(function() {
// 设置全局判定
GM_setValue("bofangwan", false)
//获取当前页面地址
var href = window.location.href
//判定是不是进主页
if (href.indexOf("gbpx.gd.gov.cn/gdceportal/Study/LearningCourse.aspx") != -1) {
//筛选出所有选过的课,去年前年选的也显示出来
if(document.getElementById("drpYear").value!=-1){
document.getElementById("drpYear").value=-1
javascript:setTimeout('__doPostBack(\'drpYear\',\'\')', 0)
}else if(document.getElementById("drpYear").value==-1){
//获取已选课的视频播放链接
var alla = document.querySelectorAll("a.courseware-list-reed")
//如果获取到了课程
if (alla.length > 0) {
document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin",
"
"
)
//设置三秒后才打开
setTimeout(function() {
//因为找不到判定点,所以设置了一个正常使用绝对不会影响到的判定标准,这个不用管
if (document.title != 605) {
document.getElementById("buxiangdiv").innerText = "已自动打开视频,如果手动关闭视频可刷新此页恢复自动"
alla[0].click()
} else {
document.getElementById("buxiangdiv").innerText = "已经停止自动打开视频,刷新后重置"
}
}, 3000)
}
}
//播放页我发现的有三种,都要根据不同的播放页面去写,这是第一种
} else if (href == "https://wcs1.shawcoder.xyz/gdcecw/play_pc/playmp4_pc.html") {
//获取播放和静音按钮并点击
document.getElementsByTagName("button")[2].click()
document.getElementsByTagName("button")[1].click()
//每三秒一次判定
setInterval(function() {
//判定是否播放完了,播放完就传出播放完成的信息
if (document.getElementsByClassName("vjs-play-progress vjs-slider-bar")[0].style.width == "100%") {
GM_setValue("bofangwan", true)
} else {
//视频暂停了或者不是静音就重新播放和静音
if (document.getElementsByTagName("button")[1].title != "暂停") {
document.getElementsByTagName("button")[1].click()
}
}
}, 3000);
//这是第二种页面
} else if (href.indexOf("wcs1.shawcoder.xyz/gdcecw/CourseWare") != -1 && href.endsWith("index.htm")) {
//注释是后来写的,已经忘记这里为什么要这样判定了
if (document.getElementsByTagName("a")[0].innerText != "退出") {
document.getElementsByTagName("a")[0].click()
} else {
//每两秒判定是否播放完和是否静音和暂停,暂停了就重新播放,有声音了就禁音
setInterval(function() {
var video3 = document.getElementsByTagName("video")[0]
video3.volume = 0
if (video3.currentTime != video3.duration) {
video3.play()
}else{
//如果播放完了就传出播放完毕的信息
GM_setValue("bofangwan", true)
}
}, 2000);
}
//这是第三种播放页
} else if (href.indexOf("wcs1.shawcoder.xyz/gdcecw/CourseWare") != -1 && href.endsWith("play.htm")) {
//这里好像是因为无法在页面加载之后获取到视频,就没办法第一时间禁音,可能会传出来一点点声音,所以直接一秒20次执行禁音操作
var jingyin = setInterval(function() {
let jingyinarr = document.getElementsByTagName("video")
if (jingyinarr.length > 0) {
jingyinarr[0].volume = 0
}
}, 50);
//如果之后获取到视频了,就把一秒20次的定时器取消,同时判定是否播放完和是否静音和暂停,暂停了就重新播放,有声音了就禁音
setInterval(function() {
let videoarr = document.getElementsByTagName("video")
if (videoarr.length > 0) {
let video = videoarr[0]
if (video.volume == 0) {
clearInterval(jingyin)
}else{
video.volume = 0
}
//判定是否播放完
if (video.currentTime != video.duration) {
video.play()
} else {
//播放完就传出信息
GM_setValue("bofangwan", true)
}
}
//这个是播放过程中会有个透明的黑幕,直接获取到然后给隐藏了
let blockUI = document.getElementsByClassName("blockUI")
if (blockUI.length > 0) {
for (var i = 0; i < blockUI.length; i++) {
blockUI[i].style.display = "none"
}
}
}, 3000);
//所有的视频播放页都由这一个页面嵌套而成
} else if (href == "https://wcs1.shawcoder.xyz/gdcecw/play_pc/playdo_pc.html") {
//每两秒判定视频是否播放完,如果播放完就关闭视频页面
setInterval(function() {
if (GM_getValue("bofangwan")) {
document.querySelectorAll("button.instructions-close")[0].click()
}
}, 2000);
//最外层的主页
} else if (href == "https://gbpx.gd.gov.cn/gdceportal/study/StudyCenter.aspx") {
//每三秒判断视频是否播放完,播放完了就延迟三秒再刷新页面,保证视频页正常关闭
setInterval(function() {
if (GM_getValue("bofangwan")) {
setTimeout(function() {
window.location.reload();
}, 3000)
}
}, 3000);
//由于不知名原因,视频可能会无法播放,但是进度会增加,所以每10分钟传出视频播放完的信息,让主页刷新来判定是否需要进入下一课
setInterval(function() {
GM_setValue("bofangwan", true)
}, 600000);
}
})();