PT批量打开种子详情链接(全选版)

在PT站点表格行后添加复选框,且在表头添加全选功能,支持多选后在新窗口批量打开种子详情链接

// ==UserScript==
// @name         PT批量打开种子详情链接(全选版)
// @namespace    http://tampermonkey.net/
// @author       shun
// @version      1.2
// @description  在PT站点表格行后添加复选框,且在表头添加全选功能,支持多选后在新窗口批量打开种子详情链接
// @match        *://*/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // 添加选择列样式
    const style = document.createElement('style');
    style.textContent = `
        table.torrents tr td:last-child {
            width: 60px;
            text-align: center;
            vertical-align: middle;
        }
        #bulkOpenBtn {
            margin: 10px;
            padding: 8px 16px;
            cursor: pointer;
        }
        .select-all {
            cursor: pointer;
            position: relative;
            top: 2px;
        }
    `;
    document.head.appendChild(style);

    // 等待表格加载
    const init = () => {
        const table = document.querySelector('table.torrents');
        if (!table) return;

        // 添加表头全选列
        const headerRow = table.querySelector('tr:first-child');
        if (!headerRow.querySelector('td:last-child').textContent.includes('全选')) {
            const th = document.createElement('td');
            th.className = 'colhead';
            th.innerHTML = `<input type="checkbox" class="select-all"> 全选`;
            headerRow.appendChild(th);
        }

        // 为数据行添加复选框
        const rows = Array.from(table.querySelectorAll('tr:not(:first-child)'));
        rows.slice(0, -1).forEach(row => {
            if (!row.querySelector('input[type="checkbox"]:not(.select-all)')) {
                const checkbox = document.createElement('input');
                checkbox.type = 'checkbox';
                const td = document.createElement('td');
                td.className = 'rowfollow';
                td.appendChild(checkbox);
                row.appendChild(td);
            }
        });

        // 添加批量操作按钮
        if (!document.getElementById('bulkOpenBtn')) {
            const tbody = table.querySelector('tbody');
            const buttonRow = document.createElement('tr');
            const buttonCell = document.createElement('td');
            buttonCell.colSpan = headerRow.cells.length;
            buttonCell.style.textAlign = 'center';

            const button = document.createElement('button');
            button.id = 'bulkOpenBtn';
            button.textContent = '批量打开选中链接';
            button.onclick = handleBulkOpen;

            buttonCell.appendChild(button);
            buttonRow.appendChild(buttonCell);
            tbody.appendChild(buttonRow);
        }

        // 绑定全选事件
        const selectAll = document.querySelector('.select-all');
        if (selectAll) {
            selectAll.onclick = function() {
                const checkboxes = document.querySelectorAll('table.torrents tr:not(:first-child) input[type="checkbox"]');
                checkboxes.forEach(checkbox => {
                    checkbox.checked = this.checked;
                });
            };
        }
    };

    // 处理批量打开
    const handleBulkOpen = () => {
        const checkboxes = document.querySelectorAll('table.torrents input[type="checkbox"]:checked:not(.select-all)');
        checkboxes.forEach(checkbox => {
            const row = checkbox.closest('tr');
            const link = row.querySelector('a[href^="details.php?id="]');
            if (link) window.open(link.href, '_blank');
        });
    };

    // 初始化执行
    setTimeout(init, 500);
    // 监听DOM变化
    new MutationObserver(init).observe(document.body, {
        childList: true,
        subtree: true
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址