Greasy Fork is available in English.

蜜柑计划批量复制磁链

为番剧独立页面添加批量复制磁链的功能

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         蜜柑计划批量复制磁链
// @namespace    nekomoyi.mikancopy
// @version      1.0
// @description  为番剧独立页面添加批量复制磁链的功能
// @match        https://mikanani.me/Home/Bangumi/*
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    function processTable(table) {
        var rows = table.querySelectorAll('tbody tr');
        rows.forEach(function(row) {
            var selectBox = document.createElement('td');
            selectBox.innerHTML = '<input type="checkbox" />';
            row.insertBefore(selectBox, row.firstChild);
        });

        var theadRow = table.querySelector('thead tr');
        var selectAllBox = document.createElement("input")
        selectAllBox.type = "checkbox";
        selectAllBox.onclick = function() {
            var rows = table.querySelectorAll('tbody tr');
            rows.forEach(function(row) {
                row.querySelector('input[type="checkbox"]').checked = selectAllBox.checked;
            });
        }
        var selectAllTh = document.createElement('th');
        selectAllTh.appendChild(selectAllBox);
        theadRow.insertBefore(selectAllTh, theadRow.firstChild);

        var controlBar = table.previousElementSibling;
        var subscribeButton = controlBar.querySelector('a.subgroup-subscribe');
        var copyButton = document.createElement('a');
        copyButton.classList.add('pull-right' ,'subgroup-subscribe');
        copyButton.textContent = '复制选中';
        copyButton.style.paddingLeft = '10px';
        copyButton.onclick = function() {
            var rows = table.querySelectorAll('tbody tr');
            var magnetLinks = [];
            rows.forEach(function(row) {
                var checkbox = row.querySelector('input[type="checkbox"]');
                if (checkbox.checked) {
                    var magnetLink = row.querySelector('a.js-magnet').getAttribute('data-clipboard-text');
                    magnetLink = magnetLink
                    magnetLinks.push(magnetLink);
                }
            });
            var magnetLinksText = magnetLinks.join('\n');
            console.log(magnetLinksText)
            navigator.clipboard.writeText(magnetLinksText);
        }
        controlBar.insertBefore(copyButton, subscribeButton);
    }

    var tables = document.querySelectorAll('#sk-container > div.central-container > table.table-striped.tbl-border.fadeIn');
    tables.forEach(function(table) {
        processTable(table);
    });
})();