// ==UserScript==
// @name 国家开放大学
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 国家开放大学课程自动脚本
// @author You
// @match https://lms.ouchn.cn/course/*full-screen*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/494453/%E5%9B%BD%E5%AE%B6%E5%BC%80%E6%94%BE%E5%A4%A7%E5%AD%A6.user.js
// @updateURL https://update.greasyfork.icu/scripts/494453/%E5%9B%BD%E5%AE%B6%E5%BC%80%E6%94%BE%E5%A4%A7%E5%AD%A6.meta.js
// ==/UserScript==
let csscc = '.popup {\
position: fixed;\
top: 200px;\
right: 10px;\
transform: translate(-50%, -50%);\
width: 300px;\
padding: 0px;\
background-color: rgba(0,0,0,0.8);\
border-radius: 10px;\
box-shadow: 0px 3px 7px rgba(0,0,0,0.20), 0px 0px 20px rgba(255,255,255,0.10);\
font-family: Arial, sans-serif;\
font-size: 16px;\
z-index: 9999;\
background-image: linear-gradient(90deg, #75d6ff, #2b32b2);\
}' +
'.popup h2 {\
margin: 0;\
padding-bottom: 10px;\
font-size: 28px;\
text-align: center;\
color: #FFFFFF;\
border-bottom: 1px solid #cccccc;\
}' +
'.popup p {\
margin: 10px 0;\
line-height: 1;\
color: #333333;\
text-align: justify;\
}'
let move = ' '
const sleep = (timeout) => {
return new Promise((resolve)=>{
setTimeout(()=>{
resolve();
}, timeout)
})
}
(function() {
'use strict';
let timer = '';
jQuery(document).ready(function () {
// 创建一个浮窗元素
var div = document.createElement("div");
div.setAttribute('id','rec');
div.classList.add("popup");
div.style = "position:absolute;left: 2200px;top: 400px;opacity: 0.8";
div.innerHTML = "
";
// 将浮窗添加到页面中
document.body.appendChild(div);
var rec = document.getElementById("rec")
var down = false;
var dx = 0;
var dy = 0;
var sx = 0;
var sy = 0;
document.onmousemove = function(e){
if (down) {
var ev = e || event;
//console.log(ev.clientY)
rec.style.top = ev.clientY - (dy - sy) + 'px';
rec.style.left = ev.clientX - (dx - sx) + 'px';
}
}
rec.onmousedown = function(){
dx = event.clientX;
dy = event.clientY;
sx = parseInt(rec.style.left);
sy = parseInt(rec.style.top);
if (!down) {
down = true;
}
}
document.onmouseup = function(){
if (down) {
down = false;
}
}
timer = setInterval(function(){
run_main();
}, 6000 * 1);
})
function log_surface(text){
var now = new Date();
var year = now.getFullYear();
var month = ('0' + (now.getMonth() + 1)).slice(-2);
var day = ('0' + now.getDate()).slice(-2);
var hours = ('0' + now.getHours()).slice(-2);
var minutes = ('0' + now.getMinutes()).slice(-2);
var seconds = ('0' + now.getSeconds()).slice(-2);
var formattedTime = hours + ':' + minutes + ':' + seconds;
var logOl=document.getElementById("logol");
var li=document.createElement("li");
li.innerHTML=formattedTime + ': ' + text;
logOl.appendChild(li);
logOl.scrollTop = logOl.scrollHeight;
}
function next_label(){
try{
document.getElementsByClassName('next-btn ivu-btn ivu-btn-default')[0].click()
}catch(e){
log_surface('下一节点击失败' + e);
}
}
async function run_main(){
clearInterval(timer);
var class_select = document.getElementsByClassName('full-screen-mode-sidebar-menu-item active')[0].children[1].children[0].getAttribute('class');
debugger
switch(class_select){
case 'font activity-type-icon font-syllabus-page':
next_label();
log_surface('正常页面,点击下一个');
break
case 'font activity-type-icon font-syllabus-forum':
log_surface('讨论页面');
var list_first = document.getElementsByClassName('forum-topic-list')[0].children[0].children[2].children;
var title = '';
var content = '';
for(var i = 0;i < list_first.length;i++){
if(list_first[i].getAttribute('class').includes('title')){
title = list_first[i].textContent;
}
if(list_first[i].getAttribute('class').includes('content')){
content = list_first[i].textContent;
}
}
await sleep(1000);
document.getElementsByClassName('ivu-btn ivu-btn-primary')[0].click();
log_surface('点击发表帖子');
await sleep(200);
var t = document.getElementsByClassName('fields')[0].children[0].children[1];
var evt = document.createEvent('HTMLEvents');
evt.initEvent('input', true, true);
t.value=title;
t.dispatchEvent(evt)
log_surface('填充标题');
await sleep(2000);
document.getElementsByClassName('fields')[1].children[0].children[1].children[0].children[2].children[0].textContent = content;
log_surface('填充内容');
await sleep(2000);
document.getElementsByClassName('button button-green medium')[document.getElementsByClassName('button button-green medium').length-1].click();
log_surface('确定提交');
await sleep(1000);
log_surface('点击下一个');
next_label();
break
case 'font activity-type-icon font-syllabus-online-video':
log_surface('视频页面');
//判断是否有视频
try{
await sleep(2000);
var video_list = document.getElementsByClassName('vjs-tech');
await sleep(2000);
if(video_list.length > 0){
log_surface("开始尝试播放视频");
//点击播放按钮
document.getElementsByClassName('vjs-tech')[0].muted = true;
log_surface("静音");
await sleep(1000);
document.getElementsByClassName('mvp-toggle-play mvp-first-btn-margin')[0].click();
log_surface("开始播放");
await sleep(1000);
document.getElementsByClassName('vjs-tech')[0].playbackRate = 4.0;
var time_all_video = document.getElementsByClassName('vjs-tech')[0].duration;
while(1){
await sleep(2000);
document.addEventListener("fullscreenchange", function (event) {
event.stopPropagation();
}, true);
document.addEventListener("mozfullscreenchange", function (event) {
event.stopPropagation();
}, true);
document.addEventListener("pagehide", function (event) {
event.stopPropagation();
}, true);
document.addEventListener("pageshow", function (event) {
event.stopPropagation();
}, true);
document.addEventListener("visibilitychange", function (event) {
event.stopPropagation();
}, true);
document.addEventListener("-webkit-visibilitychange", function (event) {
event.stopPropagation();
}, true);
document.addEventListener("webkitvisibilitychange", function (event) {
event.stopPropagation();
}, true);
document.addEventListener("webkitfullscreenchange", function (event) {
event.stopPropagation();
}, true);
var time_now_video = document.getElementsByClassName('vjs-tech')[0].currentTime;
log_surface(time_now_video + '/' + time_all_video)
//document.getElementsByClassName('vjs-tech')[0].currentTime = time_all_video - 5;
if(time_now_video > time_all_video - 10){
log_surface('视频播放完成')
await sleep(8000);
log_surface('点击下一个');
next_label();
break;
}
var video_status = document.getElementsByClassName('vjs-tech')[0].paused;
var video_status_icon = document.getElementsByClassName('mvp-toggle-play mvp-first-btn-margin')[0].children[0].getAttribute('class');
//log_surface(video_status + '/' + video_status_icon)
if(video_status == true){
try{
document.getElementsByClassName('vjs-tech')[0].muted = true;
document.getElementsByTagName('video')[0].play();
//document.getElementsByClassName('mvp-toggle-play mvp-first-btn-margin')[0].click();
}catch (e1){
log_surface(e1);
}
}
}
}
}catch(e){
log_surface(e)
}
break
case 'font activity-type-icon font-syllabus-material':
log_surface('附件页面');
document.getElementsByClassName('ivu-table-row')[0].children[document.getElementsByClassName('ivu-table-row')[0].children.length-1].children[0].children[0].click();
log_surface('查看附件');
await sleep(2000);
document.getElementsByClassName('right close')[2].children[0].click();
log_surface('关闭附件');
await sleep(2000);
log_surface('点击下一个');
next_label();
break
case 'font activity-type-icon font-syllabus-web-link':
log_surface('链接页面');
try{
var href_ = document.getElementsByClassName('button medium button-green open-link-button')[0].getAttribute('href');
}catch(e){
log_surface('点击失败');
}
window.open(href_, "_blank");
await sleep(2000);
log_surface('点击下一个');
next_label();
await sleep(2000);
break
case 'font activity-type-icon font-syllabus-exam':
log_surface('考试界面');
await sleep(500);
log_surface('点击下一个');
next_label();
await sleep(2000);
break
case 'font activity-type-icon font-syllabus-homework':
log_surface('期末考试界面');
await sleep(500);
log_surface('点击下一个');
next_label();
await sleep(2000);
break
default:
log_surface('未知界面');
await sleep(500);
log_surface('点击下一个');
next_label();
break
}
timer = setInterval(function(){
run_main();
}, 6000 * 1);
}
})();