YTS Magnet Button

Add magnet button next to YTS download buttons

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         YTS Magnet Button
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  Add magnet button next to YTS download buttons
// @match        https://yts.mx/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Function to create and add the magnet button
    function addMagnetButton(downloadButton) {
        // Check if the magnet button already exists
        if (downloadButton.nextSibling && downloadButton.nextSibling.classList && downloadButton.nextSibling.classList.contains('magnet-button')) {
            return;
        }

        // Create the magnet button
        const magnetButton = document.createElement('a');
        magnetButton.innerHTML = '🧲'; // Magnet emoji as the button text
        magnetButton.style.cursor = 'pointer';
        magnetButton.title = 'Magnet and open to default torrent app';
        magnetButton.classList.add('magnet-button'); // Add a class for identification

        // Add click event to the magnet button
        magnetButton.addEventListener('click', function(e) {
            e.preventDefault();
            e.stopPropagation();

            // Get the torrent URL from the download button
            const torrentUrl = downloadButton.href;

            // Construct the magnet link (this is a simplified version, you may need to adjust it)
            const magnetLink = `magnet:?xt=urn:btih:${torrentUrl.split('/').pop()}&dn=${encodeURIComponent(document.title)}`;

            // Open the magnet link (this should trigger qBittorrent if it's set as the default app)
            window.location.href = magnetLink;
        });

        // Create a container for the buttons
        const buttonContainer = document.createElement('div');
        buttonContainer.style.display = 'flex';
        buttonContainer.style.marginBottom = '10px';

        // Move the original download button into the container
        downloadButton.parentNode.insertBefore(buttonContainer, downloadButton);
        buttonContainer.appendChild(downloadButton);

        // Add the magnet button to the container
        buttonContainer.appendChild(magnetButton);
    }

    // Find all download buttons and add magnet buttons
    function addMagnetButtons() {
        const downloadButtons = document.querySelectorAll('a[href^="https://yts.mx/torrent/download/"]');
        downloadButtons.forEach(addMagnetButton);
    }

    // Function to add a line break after the specified <em> element
    function addLineBreakAfterEmElement() {
        const emElement = document.querySelector('em.pull-left');
        if (emElement && emElement.textContent.includes('Available in:')) {
            const br = document.createElement('br');
            emElement.parentNode.insertBefore(br, emElement.nextSibling);
        }
    }

    // Run the script when the page loads
    window.addEventListener('load', function() {
        addMagnetButtons();
        addLineBreakAfterEmElement();
    });
})();