您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在脚本详情页一键把脚本加入自定义集合并保存
// ==UserScript== // @name GF Auto Add to My Set // @namespace https://gf.qytechs.cn/ // @version 1.0 // @description 在脚本详情页一键把脚本加入自定义集合并保存 // @match https://gf.qytechs.cn/*/scripts/* // @match https://gf.qytechs.cn/*/users/*/sets/*/edit* // @grant GM_openInTab // @grant GM_addStyle // @run-at document-idle // @license MIT // ==/UserScript== (() => { 'use strict'; // —— 配置区 —— // 1. 填成你的集合编辑页面 URL(如截图里那条) const SET_EDIT_URL = 'https://gf.qytechs.cn/zh-CN/users/xxx/sets/yyy/edit'; // 这里需要改成你实际的集合编辑页面地址 // —— 样式 —— GM_addStyle(` .gf-autoadd-btn { font-size:16px; color:#d4a017; background:transparent; border:none; cursor:pointer; margin-left:.5em; } `); // —— 脚本详情页逻辑 —— if (/^\/[^\/]+\/scripts\/\d+/.test(location.pathname) && !/\/sets\/\d+\/edit/.test(location.pathname)) { const m = location.pathname.match(/scripts\/(\d+)/); if (!m) return; const scriptId = m[1]; // 找到标题节点(兼容多布局) const titleEl = document.querySelector( '[itemprop="name"], .script-header__title, .script-page__title, h1, h2' ); if (!titleEl) return; // 插入按钮 const btn = document.createElement('button'); btn.textContent = '★ 加入集合'; btn.className = 'gf-autoadd-btn'; btn.title = '一键添加并保存到自定义集合'; titleEl.appendChild(btn); btn.onclick = () => { // 打开编辑页并带上 ?add=ID GM_openInTab(`${SET_EDIT_URL}?add=${scriptId}`, { active: true }); }; return; } // —— 编辑页面自动填充逻辑 —— if (location.href.startsWith(SET_EDIT_URL)) { const url = new URL(location.href); const addId = url.searchParams.get('add'); if (!addId) return; // 1) 文本框里追加(若已存在则不重复) const ta = document.querySelector('textarea'); const items = ta.value.split(/\s+/).filter(Boolean); if (!items.includes(addId)) { ta.value = (ta.value.trim() ? ta.value + '\n' : '') + addId; } // 2) 点击「包含」 setTimeout(() => { const includeBtn = [...document.querySelectorAll('button, input[type="button"]')] .find(el => el.innerText.trim() === '包含'); includeBtn && includeBtn.click(); // 3) 再点击「保存」 setTimeout(() => { const saveBtn = [...document.querySelectorAll('button, input[type="submit"]')] .find(el => el.innerText.trim() === '保存'); saveBtn && saveBtn.click(); }, 500); }, 500); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址