// ==UserScript==
// @name 雨课堂刷课脚本
// @namespace http://tampermonkey.net/
// @version 0.1.1
// @description 只针对雨课堂视频进行自动播放,点击左侧边栏的开始刷课即可自动刷课,刷课期间请勿跳转页面!!!
// @author 中原工学院-轻化211-风之子
// @license MIT
// @match https://www.yuketang.cn/*
// @icon http://newqi.cn/images/logo128.ico
// @grant GM_addStyle
// @downloadURL none
// ==/UserScript==
// 雨课堂刷课脚本
let shuake = {};
shuake.shuake = function () {
// 用于判断不同的课程
let baseUrl = location.href;
// 根据客户端记录的URL判别刷到那一集了,不影响第一批用户的刷课进度。
if (localStorage.getItem('classIndex')) {
localStorage.setItem(baseUrl, +localStorage.getItem('classIndex'));
localStorage.removeItem('classIndex');
}
let count = +localStorage.getItem(baseUrl) || 0;
let classList = [];
// 用于标记视频是否播放完毕
let play = true;
main();
function main() {
autoSlide(count).then(() => {
let list = document.querySelector('.logs-list').childNodes;
console.log('刷课状态:第' + count + 1 + '个/' + list.length + '个');
classList[count] = list[count].querySelector('.content-box').querySelector('section');
let classInfo = classList[count].querySelector('.tag').querySelector('use').getAttribute('xlink:href');
if (classInfo.includes('shipin') && play === true) {
play = false;
console.log(classList[count]);
classList[count].click();
setTimeout(() => {
const video = document.querySelector('video');
console.log('第' + count + 1 + '个:进入了视频区');
let currentTime = Date.now();
let timer1 = setInterval(() => {
console.log('已播放时间:' + (Date.now() - currentTime) / 1000 + 's 视频时长:' + video.duration + 's');
if (Date.now() - currentTime >= (video.duration + 40) * 1000) {
count++;
localStorage.setItem(baseUrl, count);
play = true;
history.back();
main();
clearInterval(timer1);
}
}, 10000);
}, 1000)
} else if (count == list.length && play === true) {
document.querySelector('.myli').innerHTML = '刷完了~';
return;
} else if ((classInfo.includes('tuwen') || classInfo.includes('taolun') || classInfo.includes('zuoye')) && play === true) {
console.log('第' + count + 1 + '个:不是视频,已跳过');
count++;
localStorage.setItem(baseUrl, count);
main();
}
})
}
// 根据视频集数,自动下拉刷新集数
async function autoSlide(count) {
let frequency = parseInt((count + 1) / 20) + 1;
for (let i = 0; i < frequency; i++) {
await new Promise((resolve, reject) => {
setTimeout(() => {
document.querySelector('.viewContainer').scrollTop = document.querySelector('.el-tab-pane').scrollHeight;
resolve();
}, 1000)
})
}
}
}
shuake.addButton = function () {
let ul = document.querySelector('.left__menu').querySelector('.top').querySelector('ul');
let li = document.createElement('li');
li.classList.add('myli');
li.innerHTML = '开始刷课';
ul.appendChild(li);
li.addEventListener('click', function () {
shuake.shuake();
li.innerHTML = '刷课中~';
li.classList.add('active');
})
}
// 主程序
shuake.main = function () {
shuake.addButton();
};
// 添加css样式
function addStyle() {
let css = `
.myli{
height:50px;
line-height:50px;
}
.myli:hover{
background:yellow;
color:#000;
cursor:pointer;
}
.active{
background:#1c223b;
color:#fff;
}
`;
GM_addStyle(css);
}
(function () {
'use strict';
shuake.main();
addStyle();
alert('刷课脚本第一次更新,目前支持雨课堂多课程刷课的记忆功能,请第一批老用户在看到此信息后,先在原来的刷课课程上点击开始刷课初始化一下刷课数据,后续就不用任何操作了,初次安装的新用户可无视这条消息,两天后将第二次更新,去掉该弹窗,感谢大家使用。')
})()