发布:https://codechina.csdn.net/-/snippets/1071/raw/master/xcc-yanxiu.js

// ==UserScript==
// @name         研修网学习脚本【XCC版】
// @namespace    https://greasyfork.org/
// @version      0.1
// @description  研修网学习脚本【XCC版】
// @author       FRLH
// @match        https://ipx.yanxiu.com/train/*
// @match        https://ipx.yanxiu.com/grain/course/*
// @grant        none
// ==/UserScript==window.AutoRun = {add: playList => {let playListCache = getPlayListCache();localStorage.setItem("playListCache", JSON.stringify(playListCache.concat(playList)));},reset: () => {localStorage.removeItem("playIndexCache");localStorage.removeItem("playListCache");}
}function getPlayIndexCache() {let playIndexCache = localStorage.getItem("playIndexCache");return playIndexCache == null ? 0 : playIndexCache;
}function getPlayListCache() {let playListCache = localStorage.getItem("playListCache");if (playListCache == null) {playListCache = [];} else {playListCache = JSON.parse(playListCache);}return playListCache;
}function getClassHours() {let hasClasshours = document.querySelector(".score").innerText;let classhours = document.querySelector(".total-score").innerText;classhours = classhours.substr(0, classhours.length - 2);return classhours - hasClasshours;
}function playCourses(classHours = getClassHours()) {let projectId = getQueryString("projectId");let toolId = getQueryString("toolId");let role = getQueryString("role");let playWindow = null;let playClassHours = 0;let playIndex = getPlayIndexCache();let timer = setInterval(function () {let playList = getPlayListCache();if (playIndex < playList.length && (playWindow == null || playWindow.closed)) {if (playWindow != null) {playClassHours += parseFloat(playList[playIndex - 1].classHours);localStorage.setItem("playIndexCache", playIndex - 1);}if (playClassHours >= classHours) {console.info(`学习完毕:已学习${playClassHours}/${classHours}课时`);clearInterval(timer);return;}let course = playList[playIndex++];playWindow = window.open();playWindow.location = `https://ipx.yanxiu.com/grain/course/${course.id}/detail?projectId=${projectId}&toolId=${toolId}&courseSourceId=${course.courseSourceId}&role=${role}`;console.info(`正在播放:【${playIndex}/${playList.length}】【${playClassHours}/${classHours}】${course.courseName},时长:${course.noStudyTime / 60}分钟,课时:${course.classHours}`);} else if (playIndex >= playList.length) {console.info("请添加课程:AutoRun.add(课程列表)");}}, 10000);
}function playCourse() {//处理播放器事件if (document.querySelector("video")) {let playerH5 = document.querySelector("video");playerH5.volume = 0; //不想听声音if (playerH5.paused) {playerH5.play(); //不要暂停,播下去}} else {// 如果第一个课件不是视频,则点击第一个视频document.querySelector(".res-relatedCourse").parentElement.childNodes[2].click();}//处理各种突发事件if (document.querySelector("div.alarmClock-wrapper").style.display == "") {document.querySelector("div.alarmClock-wrapper").click();console.log("点继续看课");}if (document.querySelector("div.scoring-wrapper").style.display == "") {document.querySelector(".scoring-wrapper .rating").lastElementChild.click();document.querySelector('div.commit > button.ivu-btn').click();console.log("给老师评价");}if (document.querySelector("button.ivu-btn.ivu-btn-text")) {document.querySelector("button.ivu-btn.ivu-btn-text").click();console.log("打开了其他播放页面,即将关闭本页面");}if (document.querySelector(".state > span").innerText.match(/您已完成看课总时长/)) {console.log("课时已达成,即将关闭页面");window.close();}if (document.querySelector("div.ended-mask").style.display == "") {if (document.querySelector("p.next")) {document.querySelector("p.next").click();console.log("一个看完,看下一个内容");} else {console.log("播放完毕,即将关闭页面");window.close();}}}function start() {//判断是哪个页面if (location.pathname === "/train/guide/course/list") {console.log("进入课程列表页面");playCourses();} else if (location.pathname.match(/\/grain\/course\/\d*\/detail/)) {console.log("进入课程视频页面");setInterval(playCourse, 5000);} else {console.log("未知页面");}
}function getQueryString(name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");var r = window.location.search.substr(1).match(reg);if (r != null) return unescape(r[2]);return null;
}(function () {console.log("正在加载脚本");setTimeout(start, 10000);
})();

研修网学习脚本【XCC版】相关推荐

  1. 保宝网学习工具 v5.6 官方版

    保宝网学习工具 v5.6 官方版 软件大小:30MB 软件语言:简体中文 软件类别:应用其他 软件授权:官方版 更新时间:2015-01-16 应用平台:/Win8/Win7/WinXP 它是一款专门 ...

  2. c语言入门自学免费app,C语言入门学习最新版下载-C语言入门学习app手机版v1.0.2 安卓版-腾飞网...

    C语言入门学习app手机版是一款c语言编程自学软件,零基础也可以学习,里面有海量教学视频,针对c语言不同程度的讲解都囊括其中.随时随地学习编程都可以,不用担心自己没有基础.还支持在手机上敲代码编程哦. ...

  3. python学习手册条件-总算晓得python学习手册正式版

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

  4. 不为人知的动网7.1 SQL版注入漏洞

    文章难易度:★★★ 文章阅读点:动网7.1 SQL版最新注入漏洞的详细利用以及如何在后台获取Webshell 话说上期X档案刊登了动网8.0 SQL版最新注入漏洞的文章,不知大家都掌握了没有,令人兴奋 ...

  5. 网易云音乐Android版使用的开源组件

    转自:http://www.jianshu.com/p/f31ab96a32f3 网易云音乐Android版从第一版使用到现在,全新的 Material Design 界面,更加清新.简洁.同样也是音 ...

  6. [转]网易云音乐Android版使用的开源组件

    原文链接 网易云音乐Android版从第一版使用到现在,全新的 Material Design 界面,更加清新.简洁.同样也是音乐播放器开发者,我们确实需要思考,相同的功能,会如何选择.感谢开源,让我 ...

  7. PCL官网学习OpenNI Grabber 调用奥比中光Astra s 遇到问题openni2_grabber.cpp @ 325 : No devices connected.

    PCL官网学习OpenNI Grabber 调用奥比中光Astra s 遇到问题openni2_grabber.cpp @ 325 : No devices connected. 问题描述 termi ...

  8. 在网易云音乐网页版上加下载按键进行下载歌曲

    源由 原理 代码解决 思路 Ajax 请求函数 获取 id 和歌名 点击下载 利用 a 标签 利用 audio 标签 更改歌曲名 a 标签的 download 属性 利用 Ajax 请求歌曲内容 利用 ...

  9. 鸿蒙系统怎么安装网易云音乐,网易云音乐鸿蒙版 - 魔法系统之家下载

    网易云音乐鸿蒙版是一款非常好用听音乐软件,丰富的音乐资源库,多种听歌音质选择,各种热门人气新出歌曲统统一网打尽,在网易云音乐鸿蒙版中各种音乐类型都可以看,还有私人fm.每日推荐扥各种特色功能,下面一起 ...

  10. Spring AOP官网学习

    Spring AOP官网学习 5.1 AOP概念 让我们从定义一些核心的AOP概念和术语开始.这些术语并不是spring特有的.不幸的是,AOP术语不是特别直观. 1.Aspect(方面):跨多个类的 ...

最新文章

  1. leetcode算法题--二叉树的前序遍历
  2. Nginx正向代理与反向代理
  3. unet详解_UNet解释及Python实现
  4. 闭环检测python_hdl_graph_slam源码解读(七):闭环检测
  5. python pytest 前置后置
  6. Jmeter之连接MySQL数据库操作
  7. android启用hdcp_如何在Google Android模拟器中启用Android Market
  8. 软件测试技术---单元测试和集成测试
  9. ABOUTCG发布特效之王 Houdini基础教程
  10. C#获取屏幕的分辨率
  11. #define宏定义(每天一个小虾米)
  12. SQLite 使用(针对Android)
  13. Counterfactual Zero-Shot and Open-Set Visual Recognition
  14. [C++] 内联函数inline 以及 auto关键字 -- C++入门(4)
  15. 如何使用mp4v2解析mp4文件,抽取音视频数据帧【源码】【mp4】【NVR】
  16. APP马甲包优化技巧制作流程(二)
  17. 基于ThinkPHP6的网站后台管理系统
  18. 致小班:无论身处何方,一定要怀揣着一颗上进的心
  19. 深度残差学习的图像识别
  20. 防封号低风险,跨境电商必须了解的WhatsApp Business API指南

热门文章

  1. php获取csv文件乱码,php使用fgetcsv读取csv文件乱码解决方法
  2. DDoS攻击的工具介绍
  3. Java程序员面试简历模板(30套简历模板+300套简历)
  4. python做马尔科夫模型预测法_Python 3 爬虫学习笔记 8 马尔科夫模型
  5. 网页滚动截屏怎么截长图
  6. 一键hosts修改工具 全百科Hosts修改器
  7. vba中split用法
  8. golang java 对比_golang编程语言和java的性能对比
  9. 标竿学习 - 一项有效的管理工具(转载)
  10. GmSSL3.0 在Android上的命令行风格封装