您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
视频列表内一大节只显示一个链接,点击视频空白处切换播放暂停,左右方括号切换2倍速和原速,数字键1和2切换单双屏
当前为
// ==UserScript== // @name 延河课堂播放增强 // @namespace https://www.ordosx.tech/ // @version 1.6 // @description 视频列表内一大节只显示一个链接,点击视频空白处切换播放暂停,左右方括号切换2倍速和原速,数字键1和2切换单双屏 // @author OrdosX // @match https://www.yanhekt.cn/session/* // @icon https://www.google.com/s2/favicons?domain=yanhekt.cn // @grant none // ==/UserScript== (function () { 'use strict' window.addEventListener('load', () => { main() }) async function waitUntilExist (selectors) { while (!document.querySelector(selectors)) { await (new Promise(resolve => setTimeout(resolve, 20))) } } async function main () { await waitUntilExist('.player-panel') const playerPanel = document.querySelector('.player-panel') const mainPlayerVideo = document.querySelector('.main-player video') const playerMask = document.querySelector('.player-mask') const pauseButton = document.querySelector('.controller-panel .head-container button') const singleScreen = document.querySelector('.tail-container img[alt=\'单屏\']').parentElement const dualScreen = document.querySelector('.tail-container img[alt=\'双屏\']').parentElement playerPanel.onclick = () => { pauseButton.click() } playerMask.onclick = () => { pauseButton.click() } mainPlayerVideo.onratechange = () => { document.querySelector('.playback-rates-text').innerText = `${mainPlayerVideo.playbackRate.toFixed(1)}X` } document.onkeydown = (e) => { switch (e.key) { case ']': // 右方括号2倍速 e.preventDefault() document.querySelectorAll('video').forEach((e) => { e.playbackRate = 2 }) break case '[': // 左方括号原速 e.preventDefault() document.querySelectorAll('video').forEach((e) => { e.playbackRate = 1 }) break case '1': // 切换单屏(摄像头画面) e.preventDefault() singleScreen.click() break case '2': // 切换双屏(摄像头画面和PPT) e.preventDefault() dualScreen.click() break } } await waitUntilExist('.video-list-content li') document.querySelectorAll('.video-list-content li').forEach(e => { if (!e.nextSibling) return const [week, day, rawPeriod] = e.textContent.split(' ') const [sWeek, sDay, sRawPeriod] = e.nextSibling.textContent.split(' ') const period = parseInt(rawPeriod.match(/[0-9]+/)[0]) const sPeriod = parseInt(sRawPeriod.match(/[0-9]+/)[0]) if (week === sWeek && day === sDay && period - sPeriod === 1) { e.hidden = true } }) } })()