Sukebetter-JS

Open images without annoying ads

Stan na 06-03-2024. Zobacz najnowsza wersja.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

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

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

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.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name         Sukebetter-JS
// @homepage     https://greasyfork.org/zh-CN/scripts/488024-sukebetter-js
// @version      0.2
// @description  Open images without annoying ads
// @author       yosoro
// @grant        GM_xmlhttpRequest
// @match        *://sukebei.nyaa.si/*
// @match        *://javball.com/*
// @match        *://ovabee.com/*
// @match        *://cnxx.me/*
// @match        *://ai18.pics/*
// @match        *://porn4f.com/*
// @match        *://idol69.net/*
// @match        *://cnpics.org/*
// @match        *://cosplay18.pics/*
// @match        *://pig69.com/*
// @connect      *://javball.com/*
// @connect      *://ovabee.com/*
// @connect      *://cnxx.me/*
// @connect      *://ai18.pics/*
// @connect      *://porn4f.com/*
// @connect      *://idol69.net/*
// @connect      *://cnpics.org/*
// @connect      *://cosplay18.pics/*
// @connect      *://pig69.com/*
// @run-at       document-end
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js
// @namespace https://greasyfork.org/users/1263683
// ==/UserScript==

(function() {
    'use strict';

    //sukebei.nyaa.si ad remove
    if (window.location.origin=='https://sukebei.nyaa.si') {
        let fcscripts = document.getElementsByTagName('script');
        for (let i = 0; i < fcscripts.length; i++) {
            if (fcscripts[i].attributes.src) {
                if (fcscripts[i].attributes.src.value.search(/min/i) == -1){
                    console.log('remove ad scripts: ' + fcscripts[i].attributes.src.value);
                    fcscripts[i].remove();
                }
            } else if (fcscripts[i].text) {
                if (fcscripts[i].text.search(/adConfig/i) != -1){
                    console.log('remove ad scripts: ' + fcscripts[i].text.value);
                    fcscripts[i].remove();
                }
            }
        }
        document.getElementById('e71bf691-4eb4-453f-8f11-6f40280c18f6').remove();
        console.log('* Banner ad is removed.');
        let wrapper_elements = document.getElementsByClassName('exo_wrapper');
        setTimeout(function() {
            while (wrapper_elements.length > 0){
                document.querySelector("body > style").remove();
                wrapper_elements[0].parentNode.removeChild(wrapper_elements[0]);
                console.log('* Toast ad is removed.');
            }
        }, 2000);

        //sukebei.nyaa.si thumbnails detect
        if (window.location.pathname.includes('view')) {
            let thumbs = [];
            let detail_elements = document.getElementById('torrent-description').innerHTML;
            let thumb_regex = /<a href="([^"]+\_s.jpg)"[^>]*>/g;
            let thumb_addr;
            while ((thumb_addr = thumb_regex.exec(detail_elements)) != null) {
                thumbs.push(thumb_addr[1]);
            }

            //picture async load
            let thumb_parent = document.querySelector('#torrent-description > hr:nth-child(4) + p');
            thumbs.forEach(url => {
                GM_xmlhttpRequest({
                    method: "GET",
                    url: url,
                    responseType: "blob",
                    onload: function(response) {
                        let parser = new DOMParser();
                        let doc = parser.parseFromString(response.responseText, 'text/html');
                        let realimg = doc.getElementsByTagName('meta')['twitter:image:src'].content;
                        let real_thumb = document.createElement('img');
                        real_thumb.src = realimg;
                        console.log('fetch thumb: ' + realimg);
                        thumb_parent.innerHTML = "";
                        thumb_parent.appendChild(real_thumb);
                    },
                    onerror: function(error) {
                        console.error("GET error: ", error);
                    }
                });
            });
        }


    //picture beds ad remove
    } else {
        let realimg=document.getElementsByTagName('meta')['twitter:image:src'].content;
        window.open(realimg,'_self');
    }
})();