// ==UserScript== // @name 2024国家智慧教育职教平台暑期研修 // @namespace http://tampermonkey.net/ // @version 1.1 // @description 适用于国家智慧教育职教平台2024年暑期教师研修。 // @author My.G ET.S@DG // @match https://teacher.vocational.smartedu.cn/* // @match https://core.teacher.vocational.smartedu.cn/* // @icon https://teacher.vocational.smartedu.cn/statics/images/logo_img3.png // @require http://code.jquery.com/jquery-3.x-git.min.js // @run-at document-end // @grant unsafeWindow // @license MIT // @downloadURL none // ==/UserScript== //延时函数 const wait = (time) => { return new Promise(resolve => setTimeout(resolve, time)) } (function(){ window.onload=Entry(); })(); function Entry(){ //视频学习页面 if (window.location.href.includes('https://core.teacher.vocational.smartedu.cn/p/course/vocational/v')){ if(localStorage.CurrentCourse!=this.name){ localStorage.CurrentCourse=this.name; localStorage.CourseDuration=parseFloat(this.name.split('_')[1])*45*60; localStorage.CourseTime='0'; } VideoStudy(); let ChapterTimer=setInterval(()=>{ if(parseFloat(localStorage.CourseTime)>=parseFloat(localStorage.CourseDuration)){ clearInterval(ChapterTimer) this.opener.postMessage("CourseFinished","*"); this.close(); } },1000); } //培训目录页面 if (window.location.href.includes('https://teacher.vocational.smartedu.cn/h/subject')){ window.addEventListener('message', function (e) { if(e.data == 'CourseFinished'){ window.location.reload(); } }) let StartTimer=setInterval(()=>{ let CoursesTime=document.getElementsByClassName('news_time'); if (CoursesTime.length>=1 && CoursesTime[0].style.display!="none"){ clearInterval(StartTimer); wait(1000).then(()=>{ if(!FindCourse(CoursesTime)){ FinishedMsg(); return; } }) } },1000); } } function FindCourse(coursestime){ for (let i=0;i0){ let src=document.getElementsByClassName('news_content')[i].getElementsByTagName('a')[0].href.replace('i_','v_'); let name=i+"_"+coursetime; window.open(src,name); return(true); } } return(false); } function VideoStudy(){ let ChapterTimer=setInterval(()=>{ let currentchapter=document.getElementsByClassName('video-title on')[0]; if(currentchapter){ clearInterval(ChapterTimer); localStorage.CurrentChapter=currentchapter.getAttribute('data-id'); CourseUpdate(localStorage.CurrentChapter); } },500); } function CourseUpdate(videoId){ let CheckTimer=setInterval(()=>{ let currentchapter=document.getElementsByClassName('video-title on')[0]; if(currentchapter && currentchapter.getElementsByClassName('four')[0].textContent=="100%"){ clearInterval(CheckTimer); if(UpdateTimer){clearInterval(UpdateTimer);} let currentchapter=Array.from(document.getElementsByClassName('video-title')).find((item)=>item.getElementsByClassName('four')[0].textContent!="100%"); if(currentchapter){ localStorage.CurrentChapter=currentchapter.getAttribute('data-id'); currentchapter.click(); CourseUpdate(localStorage.CurrentChapter); return; } else{ this.close(); return; } } if (currentchapter && currentchapter.getAttribute('data-id')!=videoId){ if(UpdateTimer){clearInterval(UpdateTimer);} clearInterval(CheckTimer); localStorage.CurrentChapter=currentchapter.getAttribute('data-id'); CourseUpdate(localStorage.CurrentChapter); return; } let player=document.getElementsByTagName('video')[0]; if(player){ player.muted=true; player.currentTime=0.0; player.pause(); } },1000); let courseId=window.location.href.split('v_')[1].split('?')[0]; let postdata=window.location.href.split('v_')[1].split('?')[1].split('&'); let playProgress='60'; let clockInDot='60' let UpdateTimer=setInterval(()=>{ let UpdateRequest=new Request("https://core.teacher.vocational.smartedu.cn/p/course/services/member/study/progress?"+postdata[3], { headers: { "accept": "application/json, text/javascript, */*; q=0.01", "accept-language": "zh-CN,zh;q=0.9", "content-type": "application/x-www-form-urlencoded; charset=UTF-8", "sec-ch-ua": "\"Chromium\";v=\"128\", \"Not;A=Brand\";v=\"24\", \"Google Chrome\";v=\"128\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "u-platformid":"13145854983311", "x-requested-with": "XMLHttpRequest", "cookie":document.cookie, "Referer": window.location.href, }, body: "courseId="+courseId+"&"+postdata[0]+"&videoId="+videoId+"&playProgress="+playProgress+"&"+postdata[1]+"&type=1&tjzj=1&clockInDot="+clockInDot+"&"+postdata[2].replace('project','source')+"&timeLimit=-1&originP=1", method: "POST" }); fetch(UpdateRequest).then(response => { let result = response.json(); result.then(res => { if(res.data.videoProgress!="-1"){ playProgress=res.data.videoProgress; clockInDot=res.data.videoProgress; document.getElementsByClassName('video-title on')[0].getElementsByClassName('four')[0].textContent=parseInt(parseFloat(res.data.progress)*100)+"%"; } if(parseFloat(res.data.progress)>=1){ localStorage.CourseTime=parseFloat(localStorage.CourseTime)+(document.getElementsByTagName('video')[0].duration||0); } }) }) },21000); } function FinishedMsg(){ wait(1000).then(()=>{ alert('您已经达到规定的学时要求,接下来可以继续观看/学习。但您继续学习的时长将不再被计入认定学时。');}) return; }