您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows batch download of all displayed results in one single click.
- // ==UserScript==
- // @name nyaa.si - Batch Download
- // @description Allows batch download of all displayed results in one single click.
- // @version 2023.03.16.23.02
- // @author MetalTxus
- // @namespace https://github.com/jesuscc1993
- // @grant GM_xmlhttpRequest
- // @icon https://avatars3.githubusercontent.com/u/28658394?s=44
- // @match https://nyaa.si/*
- // @require https://code.jquery.com/jquery-3.2.1.min.js
- // ==/UserScript==
- /* globals jQuery */
- (() => {
- 'use strict';
- const delayBetweenDownloads = 150;
- let downloadButton;
- let magnets;
- const appendBatchDownloadButton = () => {
- magnets = jQuery(magnetsSelector);
- const fileCount = magnets.length;
- if (fileCount) {
- downloadButton = jQuery(`
- <a title="Download all" href class="mt-batch-download">
- <i class="fa fa-fw fa-magnet"></i>
- <span class="mt-batch-download-label">Download all (${fileCount})</span>
- <i class="fa fa-fw fa-magnet"></i>
- </a>
- `);
- downloadButton.click((event) => {
- event.preventDefault();
- downloadAll();
- });
- setButtonText();
- jQuery('.torrent-list').append(downloadButton);
- downloadButton
- .wrap(`<td colspan="9" align="center">`)
- .wrap(`<tr style="background: none;">`);
- }
- };
- const setButtonText = () => {
- downloadButton
- .find(buttonLabelSelector)
- .text(`Download all (${magnets.length})`);
- };
- const downloadAll = () => {
- downloadNext(magnets.toArray());
- };
- const downloadNext = (anchors) => {
- const anchor = anchors.pop();
- const url = anchor.href.split('&dn=')[0];
- const magnetTab = window.open(url);
- setTimeout(() => magnetTab.close(), delayBetweenDownloads);
- if (anchors.length) {
- setTimeout(() => downloadNext(anchors), delayBetweenDownloads);
- }
- };
- const onMutation = () => {
- magnets = jQuery(magnetsSelector);
- setButtonText();
- };
- const initialize = () => {
- appendBatchDownloadButton();
- window.onload = () => {
- new MutationObserver(onMutation).observe(
- document.querySelector('tbody'),
- { childList: true }
- );
- };
- };
- const magnetsSelector = 'a[href*="magnet:"]';
- const buttonLabelSelector = '.mt-batch-download-label';
- initialize();
- })();