NexusPHP PT 一键认领

一键认领

// ==UserScript==
// @name            NexusPHP PT 一键认领
// @name:en         NexusPHP PT torrents claim
// @version         0.0.2
// @description     一键认领
// @description:en  one key claim all the seeding torrents in NexusPHP PT.
// @author          mintiang
// @match           https://*/userdetails.php?id=*
// @license         MIT
// @grant           unsafeWindow
// @namespace https://greasyfork.org/users/920757
// ==/UserScript==

/**
 * 改自HDTIME一键认领, 原网址: https://greasyfork.org/scripts/469883
 */

(function () {
    'use strict';

    // Your code here...
    function wait(time) {
        return new Promise((resolve) => setTimeout(resolve, time)).catch((e) => {
            console.log(e);
        });
    }

    window.onload = function () {
        if (!jQuery || !layer) {
            alert('站点无法使用该脚本')
        }
        let url = new URL(window.location.href);
        let params = url.searchParams;
        if (jQuery("a[href='claim.php?uid=" + params.get("id") + "']").length) {
            let aTag = '<a id="claimAllTorrents" href="javascript:void(0);" onclick="window.manualClaimTorrents();" style="margin-left:10px;font-weight:bold;color:red" title="认领全部当前做种(运行后无法停止,强制停止可关闭页面)">一键认领</a><br>'
            jQuery('#ka1').parent().prepend(aTag)
        }
    }

    unsafeWindow.manualClaimTorrents = async function () {
        var msg = "确定要认领全部种子吗?\n种子越多越要等捏(每个种子访问间隔5000ms)\n停止脚本刷新当前页面即可。";
        if (!confirm(msg)) return;
        jQuery('#claimAllTorrents').css("pointer-events",'none');
        jQuery('#ka1').parent().find('a')[1].click()
        layer.msg('脚本开始执行', {
            icon: 6,
            time: 4000
        })
        await wait(3000)
        let buttonArr = new Array(...(jQuery('#ka1').find('[data-action="addClaim"]').length ? jQuery('#ka1').find('[data-action="addClaim"]') : []))
        buttonArr = buttonArr.filter(x => jQuery(x).css('display') !== 'none')
        if (!buttonArr || !buttonArr.length) {
            alert('未检测到可以认领的种子\n请打开当前做种列表, 若列表没有种子您无法认领!\n若您已经全部认领请无视!')
            return
        }
        let total = 0, success = 0;
        for (let el of buttonArr) {
            total++
            let torrentId = jQuery(el).attr("data-torrent_id")
            let action = jQuery(el).attr("data-action")
            let param = {
                "action": action,
                "params": {
                    torrent_id: torrentId
                }
            }
            new Promise((resolve) => {
                jQuery.post("ajax.php", param, function (response) {
                    if (response.ret == 0) {
                        success++
                    }
                }, "json")
            })
            layer.msg(`正在认领第${total}/${buttonArr.length}个,成功认领${success}个`, {
                icon: 6,
                time: 4000
            })
            await wait(5000)
        }
        alert(`共计可认领${total}个种子,本次成功认领${success}个。`);
        jQuery('#claimAllTorrents').css("pointer-events",'');
    }
})();