Greasy Fork is available in English.
可自动播放、换下一课、设置静音,但必须维持在前台,且需要在第一个视频位置启动脚本
当前为
// ==UserScript==
// @name 柏油云课堂自动播放
// @namespace https://*.yuketang.cn/
// @version 2024-09-21
// @description 可自动播放、换下一课、设置静音,但必须维持在前台,且需要在第一个视频位置启动脚本
// @author yyn
// @match https://*.yuketang.cn/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Your code here...
window.onload = function(){
function x(n){
return document.querySelector(n);
}
function h(dom){
dom.style.display = 'none'
}
function r(dom){
dom.remove()
}
function vi(){
x("video").play()
//x("video").muted = true //无效
//x("video").playbackRate = 2 //无效
}
function incrementLastDigitInUrl() {
var url = window.location.href;
var match = url.match(/(\d+)$/); // 正则表达式匹配URL末尾的数字
if (match) {
var number = parseInt(match[0], 10); // 将匹配到的数字字符串转换为数字
var newNumber = number + 1; // 加一
var newUrl = url.slice(0, -match[0].length) + newNumber; // 拼接新的URL
window.location.href = newUrl; // 更新当前页面的URL
} else {
window.location.href = url + '1'; // 如果没有数字,在URL后加`1`
}
}
function autoPlay() {
let v = x('video');
//let nextbtn = document.getElementsByClassName("iconfont icon--danjiantouxiangyou color-9b")
//let nextbtn = document.getElementsByClassName("f14 color6")
let is_vedio = document.getElementsByClassName("log-detail") // 获取“详情”按钮,只有vedio才有该按钮
if (is_vedio[0]) {
let mute_btn = document.getElementsByClassName("xt_video_player_common_icon") //获取静音按钮
mute_btn[0].click() //静音
x('video').addEventListener('pause', function () {
vi()
r(x('#playTopic-dialog'))
r(x('.v-modal'))
r(x('.dialog'))
})
x('video').addEventListener('ended', function () {
setTimeout(() => {
incrementLastDigitInUrl()
//location.reload()
//nextbtn[1].click()
//nextbtn[1].style.backgroundColor = "yellow"
}, 500)
})
} else {
incrementLastDigitInUrl()}
}
setTimeout(() => {
//let nextbtn = document.getElementsByClassName("iconfont icon--danjiantouxiangyou color-9b")
//console.log(nextbtn[0])
// console.log(nextbtn[0].click())
// nextbtn[0].click()
autoPlay()
vi()
//r(x('.dialog'))
}, 3000);
setInterval(() => {
let t = x("#playTopic-dialog");
if(t != null){
if(t.style.display != 'none'){
r(t);
r(x(".v-modal"))
setTimeout(() => {
vi()
}, 100);
}
}
}, 500);
}
})();