// ==UserScript== // @name Kitten 自动保存到电脑 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 自动点击文件菜单 -> 保存到电脑 // @match *://kitten4.codemao.cn/* // @grant none // @run-at document-idle // ==/UserScript== (function() { 'use strict'; // 自动保存间隔(毫秒),默认 60 秒 const AUTO_SAVE_INTERVAL = 60000; function clickSaveToComputer() { // 1. 找到文件按钮并点击打开菜单 const fileButtons = document.querySelectorAll('[data-report-click="文件-新建"], .CUI-menu-menu-item-wrap'); // 找到文件菜单按钮(包含文件夹图标的那一个) const fileMenuBtn = document.querySelector('.CUI-icon-icon-dropdown-wrap'); if (!fileMenuBtn) { console.log('[自动保存] 未找到文件菜单按钮'); return false; } // 点击文件菜单按钮 const fileBtnParent = fileMenuBtn.closest('.CUI-button-btn'); if (fileBtnParent) { fileBtnParent.click(); console.log('[自动保存] 已点击文件菜单'); } else { console.log('[自动保存] 无法点击文件菜单'); return false; } // 2. 等待菜单出现后点击“保存到电脑” setTimeout(() => { const saveItems = document.querySelectorAll('[data-report-click="文件-保存到电脑"]'); if (saveItems.length > 0) { saveItems[0].click(); console.log('[自动保存] 已点击“保存到电脑”'); } else { console.log('[自动保存] 未找到“保存到电脑”菜单项'); } }, 300); return true; } // 获取作品 ID function getWorkId() { const hash = window.location.hash; const match = hash.match(/#(\d+)/); return match ? match[1] : null; } // 启动自动保存 function startAutoSave() { const workId = getWorkId(); if (!workId) { console.log('[自动保存] 未找到作品 ID,等待...'); setTimeout(startAutoSave, 5000); return; } console.log(`[自动保存] 作品 ID: ${workId}`); console.log(`[自动保存] 每隔 ${AUTO_SAVE_INTERVAL / 1000} 秒自动保存一次`); // 立即执行一次 setTimeout(() => clickSaveToComputer(), 5000); // 定时执行 setInterval(() => { clickSaveToComputer(); }, AUTO_SAVE_INTERVAL); } // 监听 hash 变化(切换作品) window.addEventListener('hashchange', () => { console.log('[自动保存] 检测到作品切换'); setTimeout(startAutoSave, 2000); }); // 启动 setTimeout(startAutoSave, 5000); console.log('[自动保存] 脚本已启动'); })();