AudiobookBay Add Magnets Without Login

Add a magnet link next to the InfoHash

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         AudiobookBay Add Magnets Without Login
// @version      1.0
// @description  Add a magnet link next to the InfoHash
// @author       Rust1667
// @match        https://audiobookbay.lu/abss/*
// @icon         https://icons.duckduckgo.com/ip3/audiobookbay.lu.ico
// @grant        none
// @namespace https://greasyfork.org/users/980489
// ==/UserScript==

(function() {
    'use strict';

    // Tracker URL to include in the magnet link
    const tracker = 'http://tracker.files.fm:6969/announce';

    // Magnet icon image URL
    const magnetIconUrl = 'https://cdn-icons-png.flaticon.com/512/5405/5405497.png';

    // Get the torrent name from the title element with selector '.postTitle > h1:nth-child(1)'
    const titleElement = document.querySelector('.postTitle > h1:nth-child(1)');
    const torrentName = titleElement ? titleElement.innerText.trim() : 'Unnamed Torrent';

    // Find all table rows in the document
    const rows = document.querySelectorAll('tr');

    // Iterate over the rows to find the one containing "Info Hash:"
    rows.forEach(row => {
        const cells = row.querySelectorAll('td');

        if (cells.length === 2 && cells[0].innerText.trim() === 'Info Hash:') {
            // The second cell contains the hash
            const infoHash = cells[1].innerText.trim();

            // Generate the magnet link with the tracker and the torrent name
            const magnetLink = `magnet:?xt=urn:btih:${infoHash}&tr=${encodeURIComponent(tracker)}&dn=${encodeURIComponent(torrentName)}`;

            // Create a plain text node for the info hash
            const infoHashText = document.createTextNode(infoHash);

            // Create an image element for the magnet icon
            const magnetIconElement = document.createElement('img');
            magnetIconElement.src = magnetIconUrl;
            magnetIconElement.alt = 'Magnet Link';
            magnetIconElement.style = 'width: 20px; height: 20px; vertical-align: middle; margin-left: 10px;'; // Adjust size and spacing

            // Create a clickable link for the magnet icon
            const magnetLinkElement = document.createElement('a');
            magnetLinkElement.href = magnetLink;
            magnetLinkElement.appendChild(magnetIconElement);  // Make the image clickable

            // Clear the existing hash text in the cell
            cells[1].innerHTML = '';

            // Add the plain hash text and the clickable magnet icon to the second cell
            cells[1].appendChild(infoHashText);  // Insert the plain hash text
            cells[1].appendChild(magnetLinkElement);  // Insert the clickable magnet icon
        }
    });

})();