Sukebei MissAV Button

Adds a blue MissAV button with favicon and a single 'or' separator.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Sukebei MissAV Button
// @namespace    http://tampermonkey.net/
// @version      2.1
// @description  Adds a blue MissAV button with favicon and a single 'or' separator.
// @author       phnthnhnm
// @match        https://sukebei.nyaa.si/view/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // 1. Find the torrent title element
    const titleElement = document.querySelector('h3.panel-title');
    if (!titleElement) return;

    const titleText = titleElement.textContent.trim();

    // 2. Extract the code using Regex
    // Pattern: alphanumeric chars, a dash, then numbers (e.g., abcd123-01234)
    const regex = /[a-zA-Z0-9]+-\d+/;
    const match = titleText.match(regex);

    // If no code is found, stop execution
    if (!match) {
        console.log('MissAV Button: No code found in title.');
        return;
    }

    const code = match[0];

    // 3. Find the Magnet button
    const magnetBtn = document.querySelector('a[href^="magnet:"]');
    if (!magnetBtn) return;

    // 4. Create the "or" text separator
    const orText = document.createTextNode(' or ');

    // 5. Create the "MissAV" button
    const missBtn = document.createElement('a');
    missBtn.href = `https://missav.ws/en/${code}`;
    missBtn.target = '_blank';
    missBtn.textContent = 'MissAV';

    // 6. Add the Favicon
    const favicon = document.createElement('img');
    favicon.src = 'https://www.google.com/s2/favicons?domain=missav.ws&sz=16';
    favicon.style.height = '14px';
    favicon.style.width = '14px';
    favicon.style.marginRight = '5px';
    favicon.style.verticalAlign = 'text-bottom';
    favicon.style.border = 'none';

    // Place icon before the text inside the button
    missBtn.prepend(favicon);

    // 7. Insert elements into the DOM
    // Order: [Magnet Button] -> [ or ] -> [MissAV Button]
    magnetBtn.parentNode.insertBefore(orText, magnetBtn.nextSibling);
    magnetBtn.parentNode.insertBefore(missBtn, orText.nextSibling);

})();