您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
一键认领青蛙PT站点的所有当前做种种子
// ==UserScript== // @name 青蛙PT一键认领 // @namespace https://www.qingwapt.com/ // @version 1.0 // @description 一键认领青蛙PT站点的所有当前做种种子 // @author zzvdl // @match https://www.qingwapt.com/userdetails.php?id=* // @grant unsafeWindow // @license MIT // ==/UserScript== (function () { 'use strict'; const CONFIG = { siteName: '青蛙PT', maxClaim: 1000, buttonText: '一键认领', insertKeyword: '当前做种', fetchSelector: 'button[data-action="addClaim"]', claimUrl: '/ajax.php', postDataTemplate: (id) => `action=addClaim¶ms%5Btorrent_id%5D=${id}`, successCheck: (responseText) => responseText.includes("success") || responseText.includes("认领成功") }; function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function waitForSeedingTableAndInsertButton() { const target = document.getElementById("ka1"); // seeding 的div if (target && target.querySelector("table")) { if (!document.getElementById("claimAllTorrents")) { const btn = document.createElement("a"); btn.id = "claimAllTorrents"; btn.href = "javascript:void(0);"; btn.innerText = CONFIG.buttonText; btn.style = "margin-left:10px;font-weight:bold;color:red"; btn.title = "认领全部当前做种(运行后请耐心等待)"; btn.onclick = unsafeWindow.manualClaimTorrents; target.prepend(btn);// 插入在ka1顶部 } } else { // 如果表格还没加载出来,500ms 后再检查一次 setTimeout(waitForSeedingTableAndInsertButton, 500); } } // 原来的 window.onload 替换为这个: waitForSeedingTableAndInsertButton(); unsafeWindow.manualClaimTorrents = async function () { const list = Array.from(document.querySelectorAll(CONFIG.fetchSelector)).filter(el => el.style.display !== 'none'); if (list.length === 0) { alert('未检测到可认领的种子,请确认是否在“当前做种”页面且尚有未认领种子。'); return; } if (!confirm(`是否认领 ${CONFIG.siteName} 上的全部种子?\n最多认领 ${CONFIG.maxClaim} 个,运行期间请勿重复点击。`)) return; let total = 0, success = 0; for (let el of list) { if (success >= CONFIG.maxClaim) { alert(`达到最大认领数量上限:${CONFIG.maxClaim} 个`); break; } total += 1; const claimId = el.dataset.torrent_id; try { await fetch(CONFIG.claimUrl, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: CONFIG.postDataTemplate(claimId) }); el.style.background = 'lightgreen'; el.innerText = '成功'; success += 1; } catch (e) { el.style.background = 'orange'; el.innerText = '异常'; console.error(e); } await sleep(300); // 节流,防止频率过高被封 } alert(`认领完成:共识别 ${total} 个种子,成功认领 ${success} 个。`); }; })();