您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动学习国资e学视频
// ==UserScript== // @name 国资e学 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 自动学习国资e学视频 // @license MIT // @author You // @match https://elearning.tcsasac.com/* // @require https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.5.1.min.js // @require https://cdn.jsdelivr.net/npm/[email protected] // @icon https://www.google.com/s2/favicons?sz=64&domain=tcsasac.com // @grant none // ==/UserScript== var study_css = ".egg_study_btn{outline:0;border:0;position:fixed;top:5px;left:5px;padding:12px 20px;border-radius:10px;cursor:pointer;background-color:#fff;color:#d90609;font-size:18px;font-weight:bold;text-align:center;box-shadow:0 0 9px #666777}.egg_manual_btn{transition:0.5s;outline:none;border:none;padding:12px 20px;border-radius:10px;cursor:pointer;background-color:#e3484b;color:rgb(255,255,255);font-size:18px;font-weight:bold;text-align:center;}.egg_auto_btn{transition:0.5s;outline:none;border:none;padding:12px 20px;border-radius:10px;cursor:pointer;background-color:#666777;color:rgb(255,255,255);font-size:18px;font-weight:bold;text-align:center;}.egg_setting_box{position:fixed;top:70px;left:5px;padding:12px 20px;border-radius:10px;background-color:#fff;box-shadow:0 0 9px #666777}.egg_setting_item{margin-top:5px;height:30px;width:140px;font-size:16px;display:flex;justify-items:center;justify-content:space-between}input[type='checkbox'].egg_setting_switch{cursor:pointer;margin:0;outline:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;width:40px;height:22px;background:#ccc;border-radius:50px;transition:border-color .3s,background-color .3s}input[type='checkbox'].egg_setting_switch::after{content:'';display:inline-block;width:1rem;height:1rem;border-radius:50%;background:#fff;box-shadow:0,0,2px,#999;transition:.4s;top:3px;position:absolute;left:3px}input[type='checkbox'].egg_setting_switch:checked{background:#fd5052}input[type='checkbox'].egg_setting_switch:checked::after{content:'';position:absolute;left:55%;top:3px}"; //GM_addStyle(study_css); var palyUrl="https://elearning.tcsasac.com/#/home/courseDetail"; $(document).ready(function () { watchVideoStatus(); let url = window.location.href; if (url == "https://elearning.tcsasac.com/#/home/homePage") { let ready = setInterval(function () { // if (document.getElementsByClassName("jss110")[0]) { if(true){ clearInterval(ready);//停止定时器 //创建"开始学习"按钮 console.log('创建学习按钮') createStartButton(); } }, 800); } else if (typeof GM_getValue("readingUrl") != 'object' && url == GM_getValue("readingUrl")) { try { let settingTemp = JSON.parse(GM_getValue('studySetting')); if (!settingTemp[7]) { createTip();//创建学习提示 } reading(0); } catch (e) { createTip();//创建学习提示 reading(0); } } else if (typeof GM_getValue("watchingUrl") != 'object' && url == GM_getValue("watchingUrl")) { try { let settingTemp = JSON.parse(GM_getValue('studySetting')); if (!settingTemp[7]) { createTip();//创建学习提示 } } catch (e) { createTip();//创建学习提示 } let randNum = 0; var checkVideoPlayingInterval = setInterval(function () { let temp = getVideoTag(); if (temp.video) { if (!temp.video.muted) { temp.video.muted = true; } if (temp.video.paused) { temp.video.paused = false; // console.log("正在尝试播放视频") if (randNum == 0) {//尝试使用js的方式播放 try { temp.video.play();//尝试使用js的方式播放 } catch (e) { } randNum++; } else { try { temp.pauseButton.click();//尝试点击播放按钮播放 } catch (e) { } randNum--; } } else { // console.log("成功播放") clearInterval(checkVideoPlayingInterval); reading(1); } } else { console.log("等待加载") } }, 800); } else if (url.indexOf("exam") != -1 && url.indexOf("list") == -1) { //答题页面 let ready = setInterval(function () { if (document.getElementsByClassName("title")[0]) { clearInterval(ready);//停止定时器 //创建“手动答题”按钮 createManualButton(); //去除答题验证 //cancelVerify(); //开始答题 doingExam(); } }, 500); } else { } }); //创建“开始学习”按钮和配置 function createStartButton() { let body = document.getElementsByTagName("body")[0]; let startButton = document.createElement("button"); startButton.setAttribute("id", "startButton"); startButton.innerText = "开始学习"; startButton.className = "egg_study_btn egg_menu"; //添加事件监听 try {// Chrome、FireFox、Opera、Safari、IE9.0及其以上版本 startButton.addEventListener("click", start, false); } catch (e) { try {// IE8.0及其以下版本 startButton.attachEvent('onclick', start); } catch (e) {// 早期浏览器 console.log("不学习何以强国error: 开始学习按钮绑定事件失败") } } //插入节点 body.append(startButton) } //开始学习按钮的事件执行函数 async function start() { console.log('开始了'); //视频列表dom var dom=$('#root div').eq(0).children("div").eq(2).children("div").children("div").children("div") var zy=dom.eq(1).children("ul").find("li") //中央企业视频列表 var df=dom.eq(2).children("ul").find("li") //地方国资委视频列表 var zyTitles=getTitle(zy) var dfTitles=getTitle(df) //判断本地存储是否已存在数据,并获取第一条未看视频的标题 var unLearnTitle=checkLocalData('zy',zyTitles); if(unLearnTitle){ window.localStorage.setItem('currentKey','zy'); playVideo(unLearnTitle,zy); }else{ console.log('中央视频已学完'); unLearnTitle=checkLocalData('df',dfTitles); if(unLearnTitle){ window.localStorage.setItem('currentKey','df'); playVideo(unLearnTitle,df); }else{ alert('学完了'); } } //checkLocalData('df'); } //获取视频列表的所有标题 function getTitle(obj){ var titles=[]; $.each(obj, function(key, val) { var title= $(val).find('.defineTitle').text() titles.push({title,status:false}); }); return titles; } //判断本地存储是否有内容 function checkLocalData(key,data){ var localData=window.localStorage.getItem(key) if(localData){ //存在则遍历获取第一个未看视频dom并点击进行学习 var localData1=JSON.parse(localData); return getFirstVideo(data,localData1); }else{ //将获取到的视频标题存入本地存储中 window.localStorage.setItem(key,JSON.stringify(data)); return getFirstVideo(data); } } //遍历第一个没有播放完的视频标题 function getFirstVideo(data,localData=null){ var unLearnTitle; if(localData){ //有本地数据则获取本地数据中的第一个未看视频标题 unLearnTitle=getFirstTitlsUnLearn(localData) // console.log('有本地数据',unLearnTitle) }else{ //没有本地数据则直接获取刚获取到的标题的第一个未看视频,即数组的第一条数据 unLearnTitle=getFirstTitlsUnLearn(data) // console.log('没数据',unLearnTitle) } return unLearnTitle } //遍历本地数据获取第一个未学习的视频标题 function getFirstTitlsUnLearn(obj){ var title; $.each(obj, function(key, val) { if(val.status===false){ // console.log('xxx',val); title=val.title return false } }); return title; } //点击列表播放视频 function playVideo(title,dom){ $.each(dom, function(key, val) { var titleTemp= $(val).find('.defineTitle').text() if(title==titleTemp){ // setTimeout(function(){ let aaa=$(val).children('div').children('div.borBot').children('div').eq(0)[0].click( function(e){ console.log('点击事件',e) } ); setTimeout(function(){ watchPlaying() },1000) return false; } }); } var playStatus; //监听播放状态,当播放完毕后重新打开下一个未看视频 function watchPlaying(){ if(playStatus){ clearInterval(playStatus) } playStatus = setInterval(function () { let playing=window.localStorage.getItem('playing') // console.log('监视当前播放状态',playing=='true'); if(playing=='true'){ }else{ console.log('3秒后进入下一次点击'); clearInterval(playStatus) setTimeout(function(){ start(); },3000) } }, 3000); } //监视视频播放页面的播放状态 function watchVideoStatus(){ window.localStorage.setItem('playing',true); //初始化 let ready = setInterval(function () { var currentUrl=window.location.href; if(currentUrl.indexOf (palyUrl)!==-1){ let videoTitle=$('#course-video_html5_api').parent().parent().parent().next().children('div').eq(0).text() //视频标题 let videoStatus=$('#course-video_html5_api').parent().parent().next().find('span') //视频状态文本 let aaaaaa=videoStatus.next().text() //如果是播放页面 let video=$('#course-video_html5_api').get(0) let currentTime=video.currentTime let paused=video.paused if(currentTime>100&&paused==true){ // if(aaaaaa=='已学'){ //判断为已学完,更新本地存储,并关闭当前页面 console.log('学完了') updateStorage(videoTitle) window.localStorage.setItem('playing',false); closeWin(); }else{ video.play(); window.localStorage.setItem('playing',true); } } }, 3000); } //更新本地存储数据 function updateStorage(title){ let currentKey=window.localStorage.getItem('currentKey'); if(!currentKey){ alert('未获取当前播放的所属板块') return; } let data=window.localStorage.getItem(currentKey); if(!data) return; data=JSON.parse(data) $.each(data, function(key, val) { if(val.title===title){ val.status=true; return false } }); let newData=JSON.stringify(data) window.localStorage.setItem(currentKey,newData); } //默认情况下, chrome 只允许 window.close 关闭 window.open 打开的窗口,所以我们就要用window.open命令,在原地网页打开自身窗口再关上,就可以成功关闭了 function closeWin() { try { window.opener = window; var win = window.open("","_self"); win.close(); top.close(); } catch (e) { } }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址