Greasy Fork is available in English.

Copy Magnet URL

Adds "Copy Magnet URL" button next to magnet links and trims extra info from magnet links

// ==UserScript==
// @name         Copy Magnet URL
// @name:uk      Copy Magnet URL
// @version      2.0
// @description  Adds "Copy Magnet URL" button next to magnet links and trims extra info from magnet links
// @description:ru  Добавляет кнопку «Копировать магнитный URL» рядом с магнитными ссылками и удаляет дополнительную информацию из магнитных ссылок.
// @description:uk  Додає кнопку «Копіювати URL-адресу магніту» поруч із магнітними посиланнями та обрізає додаткову інформацію з магнітних посилань
// @author       Sitego
// @match        *://rutor.info/*
// @match        *://nnmclub.to/*
// @match        *://rutracker.org/*
// @match        *://kinozal.tv/*
// @icon         https://ide.onl/img/script/magnet48.png
// @homepageURL  https://ide.onl/
// @supportURL   https://ide.onl/contact.html
// @namespace    https://greasyfork.org/users/1221433
// @grant        GM_setClipboard
// @license      MIT
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js
// ==/UserScript==

(function () {
    'use strict';
    function copyToClipboard(text) {
        const input = document.createElement('textarea');
        input.innerHTML = text;
        document.body.appendChild(input);
        input.select();
        document.execCommand('copy');
        document.body.removeChild(input);
    }
    function showTooltip(element, message) {
        var tooltip = $('<div class="tooltip"></div>').text(message).css({
            'position': 'absolute',
            'background-color': '#108A34',
            'color': '#fff',
            'padding': '5px 10px',
            'border-radius': '5px',
            'top': element.offset().top - 30,
            'left': element.offset().left,
            'z-index': 1000,
            'white-space': 'nowrap'
        }).appendTo('body');
        setTimeout(function () {
            tooltip.remove();
        }, 1500);
    }
    function addCopyMagnetButton(link) {
        var magnetLink = link.split('&')[0];
        var copyButton = $('<button>Копировать Magnet</button>').css({
            'background-color': '#ff0000',
            'color': '#ffffff',
            'font-weight': 'bold',
            'margin-bottom': '7px',
            'border': 'none',
            'padding': '5px 10px',
            'margin-left': '10px',
            'cursor': 'pointer',
            'border-radius': '5px',
        }).click(function () {
            $(this).css({
                'background-color': '#cc0000',
            });
            copyToClipboard(magnetLink);
            showTooltip($(this), 'Скопировано!');
            setTimeout(function () {
                copyButton.css({
                    'background-color': '#ff0000',
                });
            }, 200);
        });
        if (window.location.hostname === 'kinozal.tv') {
            $('#containerdata').append(copyButton);
        } else {
            $(this).after(copyButton);
        }
    }
    if (window.location.hostname === 'kinozal.tv') {
        $(document).on('click', 'a[onclick^="get_torm"]', function () {
            setTimeout(function () {
                var hashText = $('li:contains("Инфо хеш:")').text().replace('Инфо хеш:', '').trim();
                var magnetLink = 'magnet:?xt=urn:btih:' + hashText;
                addCopyMagnetButton(magnetLink);
            }, 1000);
        });
    } else {
        $('a[href^="magnet:"]').each(function () {
            addCopyMagnetButton.call(this, $(this).attr('href'));
        });
    }
})();