您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
教师研修自动播放
// ==UserScript== // @name 教师研修视频自动播放 // @namespace https://basic.smartedu.cn/ // @version 2025-02-20 // @author 'sudorm/*' // @description 教师研修自动播放 // @match https://basic.smartedu.cn/teacherTraining/* // @require https://code.jquery.com/jquery-1.12.4.min.js // @license MIT // ==/UserScript== (function () { 'use strict'; const twice = 3000; const checkTime = 500; let tagList; function createFloatingWindow() { const floatingWindow = document.createElement('div'); floatingWindow.id = 'floating-window'; floatingWindow.style.position = 'fixed'; floatingWindow.style.top = '20px'; floatingWindow.style.right = '20px'; floatingWindow.style.zIndex = '9999'; floatingWindow.style.width = '350px'; floatingWindow.style.backgroundColor = 'rgba(0, 0, 0, 0.8)'; floatingWindow.style.color = '#fff'; floatingWindow.style.borderRadius = '12px'; floatingWindow.style.padding = '10px'; floatingWindow.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.3)'; floatingWindow.style.display = 'flex'; floatingWindow.style.flexDirection = 'column'; floatingWindow.style.justifyContent = 'space-between'; const selectElement = document.createElement('select'); selectElement.id = 'tag-select'; selectElement.style.width = '100%'; selectElement.style.padding = '8px'; selectElement.style.backgroundColor = '#fff'; selectElement.style.color = '#000'; selectElement.style.border = '1px solid #ccc'; selectElement.style.borderRadius = '6px'; selectElement.style.marginBottom = '10px'; const playButton = document.createElement('button'); playButton.innerText = '播放视频'; playButton.style.width = '100%'; playButton.style.padding = '8px'; playButton.style.backgroundColor = '#4CAF50'; playButton.style.color = '#fff'; playButton.style.border = 'none'; playButton.style.borderRadius = '6px'; playButton.style.cursor = 'pointer'; const playAllButton = document.createElement('button'); playAllButton.innerText = '播放全部视频'; playAllButton.style.width = '100%'; playAllButton.style.marginTop = '10px'; playAllButton.style.padding = '8px'; playAllButton.style.backgroundColor = '#4CAF50'; playAllButton.style.color = '#fff'; playAllButton.style.border = 'none'; playAllButton.style.borderRadius = '6px'; playAllButton.style.cursor = 'pointer'; playButton.addEventListener('click', () => { console.log('Play button clicked'); startVideoTagSequence(); }); playAllButton.addEventListener('click', () => { console.log('Play all button clicked'); startVideoAllTagSequence(); }); floatingWindow.appendChild(selectElement); floatingWindow.appendChild(playButton); floatingWindow.appendChild(playAllButton); document.body.appendChild(floatingWindow); } function createTagOptions() { tagList = $('.fish-collapse-header') for (let i = 0; i < tagList.length; i++) { const option = document.createElement('option'); option.value = i; option.text = tagList[i].innerText; if (i === 0) { option.selected = true; } $('#tag-select').append(option); } $('#tag-select').on('click', () => { tagList[$('#tag-select').val()].click(); }); } createFloatingWindow(); function startVideoTagSequence() { let videoInTag; let currentIndex = $('#tag-select').val(); if (!tagList.eq(currentIndex).parent().hasClass('.fish-collapse-item-active')) { tagList.eq(currentIndex).click(); } videoInTag = Array.from(tagList.eq(currentIndex).parent().find('.resource-item')); playVideo(videoInTag); } function startVideoAllTagSequence() { let videoInTags = []; for (let i = 0; i < tagList.length; i++) { if (!tagList.eq(i).parent().hasClass('fish-collapse-item-active')) { tagList.eq(i).click(); } const v = tagList.eq(i).parent().find('.resource-item'); for (let j = 0; j < v.length; j++) { videoInTags.push(v[j]); } } playVideo(videoInTags) } function playVideo(list, index = 0) { if (index >= list.length) { alert('所有视频已播放完成。'); return; } $(list[index]).click(); setTimeout(() => { $('video')[0].play(); $('video')[0].addEventListener('ended', () => { if (index < list.length - 1) { playVideo(list, index + 1); } }); setTimeout(() => { const button = $('.fish-btn')[0]; if (button) { button.click(); } }, twice); }, twice); } const intervalId = setInterval(() => { if ($('video').length === 1) { clearInterval(intervalId); createTagOptions(); } }, checkTime); })();