// ==UserScript== // @name Nyaa Magnet Catcher Mod // @namespace https://greasyfork.org/zh-CN/users/5899-pks // @version 0.2 // @description 列表页批量选择复制磁力链接,适合配合aria2等下载软件导入批量任务,支持shift连选 // @author luminisward // @match https://*.nyaa.si/ // @match https://*.nyaa.si/?* // @license MIT // @grant none // @downloadURL none // ==/UserScript== (function () { "use strict"; // 在表头和每一行中插入复选框 function insertCheckbox() { // 插入表头的全选复选框 $(".table thead tr").prepend( $("").append( $('').change(function () { // 全选功能 $("tbody input[type='checkbox']").prop("checked", this.checked); }) ) ); // 插入每一行的复选框,初始状态为勾选 $(".table tbody tr").prepend( $("").append( $('') ) ); } // 获取选中的行对应的磁力链接 function getCheckedLinks() { const links = []; $(".table tbody tr").each(function () { const checkbox = $(this).find("input[type='checkbox']"); if (checkbox.prop("checked")) { const magnetLink = $(this).find("a[href^='magnet:']").attr("href"); if (magnetLink) { links.push(magnetLink); } } }); return links; } // 插入复制按钮 function insertCopyButton() { const navBar = $("ul.nav"); const button = $("
  • ").append( $("") .attr("href", "#") .attr("id", "copyMagnet") .text("Copy All MagnetLink") .click((e) => { e.preventDefault(); }) ); navBar.append(button); } // Shift 和 Ctrl 连选逻辑 let lastChecked = null; // 记录最后一次点击的复选框 function handleCheck(event) { const currentCheckbox = $(this); // 当前点击的复选框 // 阻止浏览器的默认行为 event.preventDefault(); if (event.shiftKey && lastChecked) { // Shift + Click: 连选逻辑 const checkboxes = $(".row-checkbox"); // 获取所有复选框 const startIndex = checkboxes.index(currentCheckbox); // 当前复选框的索引 const endIndex = checkboxes.index(lastChecked); // 上一次点击的复选框索引 const [start, end] = [Math.min(startIndex, endIndex), Math.max(startIndex, endIndex)]; // 确保范围正确 // 遍历范围内的复选框,设置状态 checkboxes.slice(start, end + 1).each(function () { $(this).prop("checked", $(lastChecked).prop("checked")); // 状态跟随上一次点击的状态 }); } else { // 单击:切换当前复选框状态 const currentState = currentCheckbox.prop("checked"); currentCheckbox.prop("checked", !currentState); // 手动反选 } // 更新最后点击的复选框 lastChecked = currentCheckbox; } // 绑定事件 function bindEvents() { // 动态绑定复选框点击事件 $(document).on("mousedown", ".row-checkbox", handleCheck); $(document).on("mouseup", ".row-checkbox", (event) => event.preventDefault()); // 避免默认行为 $(document).on("click", ".row-checkbox", (event) => event.preventDefault()); // 避免默认行为 } // 初始化 function init() { insertCheckbox(); // 插入复选框 insertCopyButton(); // 插入复制按钮 bindEvents(); // 绑定事件 // 配置 Clipboard.js new ClipboardJS("#copyMagnet", { text: function () { return getCheckedLinks().join("\n"); }, }); } // 启动脚本 init(); })();