// ==UserScript== // @name 岐黄天使自动播放插件(无人值守) // @namespace http://tampermonkey.net/ // @version 1.0 // @description 自动播放视频并自动切换到下一集 // @author Cool // @match *://www.tcm512.com/* // @grant none // ==/UserScript== (function() { 'use strict'; // 配置参数 const CHECK_INTERVAL = 3000; // 检查间隔(毫秒) const VIDEO_SELECTOR = 'video'; // 视频元素选择器 const PLAY_BUTTON_SELECTOR = '.xg-start .xgplayer-icon-play'; // 播放按钮选择器 const VIDEO_ITEMS_SELECTOR = '#courseMenu .new_bg'; // 视频项选择器 const ACTIVE_CLASS = 'active'; // 当前活动视频项的类名 let currentVideo = null; let isPlaying = false; let isSwitching = false; // 初始化 function init() { // 监听DOM变化 const observer = new MutationObserver(handleDomChanges); observer.observe(document.body, { childList: true, subtree: true }); // 初始检查 setTimeout(setupVideo, 2000); } // 处理DOM变化 function handleDomChanges(mutations) { for (const mutation of mutations) { if (mutation.type === 'childList') { // 检查是否有新的视频元素出现 if (!currentVideo || !document.contains(currentVideo)) { setupVideo(); } } } } // 设置视频播放 function setupVideo() { // 查找视频元素 const video = document.querySelector(VIDEO_SELECTOR); if (!video) { console.log('未找到视频元素,将在', CHECK_INTERVAL, 'ms后重试'); setTimeout(setupVideo, CHECK_INTERVAL); return; } currentVideo = video; // 移除旧的事件监听器 video.removeEventListener('ended', handleVideoEnded); // 添加新的事件监听器 video.addEventListener('ended', handleVideoEnded); // 尝试播放视频 playCurrentVideo(); } // 播放当前视频 function playCurrentVideo() { if (isPlaying || isSwitching) return; const playButton = document.querySelector(PLAY_BUTTON_SELECTOR); if (playButton) { console.log('点击播放按钮'); playButton.click(); isPlaying = true; } else { console.log('未找到播放按钮,尝试直接播放'); currentVideo.play().catch(e => { console.error('自动播放失败:', e); setTimeout(playCurrentVideo, CHECK_INTERVAL); }); } } // 处理视频结束事件 function handleVideoEnded() { console.log('视频播放结束,准备切换到下一集'); isPlaying = false; switchToNextVideo(); } // 切换到下一个视频 function switchToNextVideo() { if (isSwitching) return; isSwitching = true; // 查找所有视频项 const videoItems = document.querySelectorAll(VIDEO_ITEMS_SELECTOR); if (!videoItems.length) { console.log('未找到视频项'); isSwitching = false; return; } // 查找当前活动项 let currentIndex = -1; for (let i = 0; i < videoItems.length; i++) { if (videoItems[i].classList.contains(ACTIVE_CLASS)) { currentIndex = i; break; } } // 查找下一个视频项 if (currentIndex >= 0 && currentIndex < videoItems.length - 1) { const nextItem = videoItems[currentIndex + 1]; console.log('切换到下一个视频:', nextItem.querySelector('.new_biaoti').textContent); nextItem.click(); // 重置状态 setTimeout(() => { isSwitching = false; isPlaying = false; setupVideo(); }, 3000); } else { console.log('已是最后一个视频'); isSwitching = false; } } // 启动脚本 window.addEventListener('load', init); })();