// ==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); } })();