Emucool

Sites suportados: CoolRom, EmuParadise

// ==UserScript==
// @name         Emucool
// @namespace    ROM Download
// @author       Ari
// @version      1
// @description  Sites suportados: CoolRom, EmuParadise
// @include      *://coolrom.com/roms/*
// @include      *://www.coolrom.com/roms/*
// @include      *://coolrom.com.au/*
// @include      *://*emuparadise.me/*/*/*
// @run-at       document-end
// @grant        GM_setValue
// @grant        GM_getValue
// @license MIT
// ==/UserScript==

(function () {
    'use strict';

    /* Adds Element BEFORE NeighborElement */
    Element.prototype.appendBefore = function(element) {
        element.parentNode.insertBefore(this, element);
    }, false;

    /* Adds Element AFTER NeighborElement */
    Element.prototype.appendAfter = function(element) {
        element.parentNode.insertBefore(this, element.nextSibling);
    }, false;

    var website = window.location.href

    //COOLROOM
    if(website.indexOf('coolrom.com') != -1){

        var appendInterval, iframeInterval, idInterval, iframe, query, setTime, downloadUrl;

        iframe = document.createElement('iframe');
        iframe.style = 'display:none';
        query = "";
        idInterval = setInterval(function () {
            var element = document.querySelector('a[href*="/dlpop.php"], a[href*="/downloader"]');
            if (element) {
                element = document.querySelector('a[href*="/downloader"]');
                if (element) {
                    query = element.href.split("?", 2)[1];
                } else {
                    element = document.querySelector('a[href*="/dlpop.php"]');
                    if (element) {
                        query = element.href.replace(/[^\?]+\?([^']+).*/, "$1");
                    }
                }
                iframe.src = '/dlpop.php?' + query;
                clearInterval(idInterval);
            }
        }, 1);

        appendInterval = setInterval(function () {
            if (document.body) {
                document.body.appendChild(iframe);
                clearInterval(appendInterval);
            }
        }, 1);

        iframeInterval = setInterval(function () {
            var links, input;

            if (iframe.contentWindow && !setTime) {
                Object.defineProperty(iframe.contentWindow, 'time', {value: 0});
                setTime = true;
            }

            input = iframe.contentDocument && iframe.contentDocument.getElementsByTagName('input')[0];
            if (input) {
                clearInterval(iframeInterval);
                downloadUrl = input.parentNode.action;
                links = document.querySelectorAll('a[href*="/dlpop.php"], a[href*="/downloader"]');
                Array.prototype.forEach.call(links, function (a) {
                    a.href = downloadUrl;
                });
                var center = document.querySelectorAll('center')[1];
                if (center && center.textContent && (center.textContent.indexOf('Este título está protegido') > -1 || center.textContent.indexOf("title is protected") > -1)) {
                    var div = document.createElement('center');
                    div.innerHTML = '<div class="container"><style>.download-button {position: absolute;top: 50%;left: 54.5%;transform: translate(-50%, -50%);font-family: Verdana;font-style: bold;font-size: 18px;color: #FFFFFF;}</style><a class="download_link" href="' + downloadUrl + '"><img src="/images/download_button2.png" alt="download" style="width:300px;"><div class="download-button">DOWNLOAD</div></a></div>';
                    center.insertBefore(div, center.childNodes[13]);
                    center.removeChild(center.childNodes[14]);

                }
                console.log(downloadUrl);

                iframe.src = 'about:blank';
                if (confirm('Download agora?')) {
                    // Save it!
                    window.location = downloadUrl;
                }
            }
        }, 1);

        Object.defineProperty(window, 'open', {value: function (url) {
            var inter;
            if (url.substr(0, 10) === '/dlpop.php') {
                inter = setInterval(function () {
                    if (downloadUrl) {
                        window.location = downloadUrl;
                        clearInterval(inter);
                    }
                }, 10);
            } else {
                window.location = url;
            }
            return true;
        }});
    }
    //EMUPARADISE
    if(website.indexOf('emuparadise.me') != -1){
        let ipDownload = "50.7.189.186";

        //const urlFirstPart = "http://" + ipDownload + "/happyxhJ1ACmlTrxJQpol71nBc/";
        let urlFirstPart = "http://" + ipDownload + "/happyFJUja181NACLukHITRY719/";

        if(website.indexOf('web.archive.org') != -1){

            var ht = document.body.innerHTML

            let lindex = ht.indexOf("Size: ");
            let findex = ht.lastIndexOf("http://", lindex);
            let urlLastPart = ht.slice(findex, lindex).match(/\d+\.\d+\.\d+\.\d+\/(.*)"/)[1];
            urlLastPart = urlLastPart.replace(/ /g, "%20"); // encodeURI() changes #, e.g. Sonic - The Comic Issue No. 001 Scan


            var original_wayback_link = "";
            //remove the id
            urlLastPart = urlLastPart.substr(urlLastPart.indexOf('/')+1)
            GM_setValue('magazine-comic-guide-scans', urlLastPart)

            console.log(urlLastPart);
            console.log('Download'+urlFirstPart + urlLastPart)
            var link = '"<a href="' + urlFirstPart + urlLastPart + '">Download</a>"'
            window.location.href = 'about:blank';
            var load_event = new Event("load");
            window.dispatchEvent(load_event);
            return;
        }
        var fastload;
        // Others: 50.7.189.186
        //const ipDownload = "50.7.92.186";
        //1


        var platform = document.URL.split("/")[3];

        if (platform == "Sega_Dreamcast_ISOs") {

            let id = document.URL.split("/")[5]
            if(id.indexOf('-download') != -1){


                const inject_location = document.querySelector('#content > h3')
                inject_location.innerHTML = 'Download nesta página não funciona para Dreamcast';
                const xxx = document.createElement("div");
                xxx.innerHTML = '<a href="'+window.location.href.split('-download')[0]+'">Ir para página de download</a>'
                xxx.appendAfter(inject_location)


                if(confirm('Download nesta página não funciona para Dreamcast, queres ser redirecionado para página onde funciona em '+window.location.href.split('-download')[0] + ' ???')){
                    window.location = window.location.href.split('-download')[0]
                }
                return;
            }
            document.querySelector('a[href="#Download"]').click()
            let downs = document.querySelectorAll("p > a[title^=Download]");
            for (let i = 0; i < downs.length; i++) {
                let findex = 9; // "Download X"
                let lindex = downs[i].title.lastIndexOf(" ISO");
                downs[i].href = urlFirstPart + "Dreamcast/" + downs[i].title.slice(findex, lindex);
                console.log(urlFirstPart + "Dreamcast/" + downs[i].title.slice(findex, lindex))
            }
        }
        // match https://www.emuparadise.me/magazine-comic-guide-scans/%NAME%/%ID%
        else if (platform == "magazine-comic-guide-scans") {

            const webArchiveURL = "https://web.archive.org/web/2016/";
            const www = webArchiveURL + document.URL

            let down = document.querySelectorAll("#content > p")[0];
            if(down){
                let info = document.querySelectorAll("#content > div[align=center]")[0];
                let filename = info.children[0].textContent.slice(0, -5); // "X Scan"
                let cat = {
                    "Gaming Comics @ Emuparadise": "may/Comics/",
                    "Gaming Magazines @ Emuparadise": "may/Mags/"
                }[info.children[1].textContent] || "";

                /*down.style.fontSize = '16px';

                down.innerHTML = "<div>Download (Atualizado) "
                    + "<a href=" + urlFirstPart + cat + encodeURIComponent(filename) + ".cbr" + ">cbr</a> or "
                    + "<a href=" + urlFirstPart + cat + encodeURIComponent(filename) + ".rar" + ">rar</a>"
                    + "</div>";

                ipDownload = "50.7.161.234"
                urlFirstPart = "http://" + ipDownload + "/998ajxYxajs13jAKhdca/";
                down.innerHTML += "<div>WaybackMachine (Atualizado, Lento): "
                    + "<a href=" + urlFirstPart + cat + encodeURIComponent(filename) + ".cbr" + ">cbr</a> or "
                    + "<a href=" + urlFirstPart + cat + encodeURIComponent(filename) + ".rar" + ">rar</a>"
                    + "</div>";
            */
                down.innerHTML = 'A obter link, aguarda!';
                document.querySelector('span.help').innerText = 'Clique no link com botão do Lado Direito + Salvar link como...';
                document.querySelector('#content > h2').innerHTML += `<p style="padding-left:20px; font-size:15px;">(Link de Download ira aparecer em alguns segundos, caso nao apareça fazer refresh)</p>
            <div id="iframe_location"></div>`
                //<iframe id="myFrame" referrerpolicy="unsafe-url" onload="alert('lol')" style="width:100%;" src="${www}"></iframe>`

                var myframe = document.createElement('iframe');
                myframe.addEventListener("load", function() {
                    var link_recommended = document.createElement('a');
                    link_recommended.setAttribute('href', urlFirstPart + GM_getValue('magazine-comic-guide-scans'))
                    link_recommended.innerText = 'Download (Opçao 1)';


                    ipDownload = "162.210.194.49";
                    urlFirstPart = "http://" + ipDownload + "/happyFJUja181NACLukHITRY719/";
                    var link_wayback = document.createElement('a');
                    link_wayback.setAttribute('href', urlFirstPart + GM_getValue('magazine-comic-guide-scans'))
                    link_wayback.innerText = 'Download (Opcão 2)';

                    down.innerHTML = 'Successo!';
                    document.getElementById('iframe_location').appendChild(link_recommended);
                    document.getElementById('iframe_location').innerHTML += '<br>';
                    document.getElementById('iframe_location').appendChild(link_wayback);

                }); // before setting 'src'
                myframe.src = www;
                myframe.setAttribute('referrerpolicy',"unsafe-url")
                myframe.setAttribute('style', 'display:block')
                document.getElementById('iframe_location').appendChild(myframe);


            }






        } else {
            let id = document.URL.split("/")[5]
            if(id.indexOf('#') != -1)
                id = id.split('#')[0]

            if(id.indexOf('-download') != -1){
                id = id.replace('-download','');
                const inject_location = document.querySelector('#content > h3')
                const xxx = document.createElement("div");
                inject_location.innerHTML=''
                xxx.appendAfter(inject_location)
                unlock_dl(id,xxx)

            }else{

                const dl = document.querySelector('.download-link');
                unlock_dl(id,dl)
                document.querySelector('a[href="#Download"]').click()

            }


            function unlock_dl(id, dl){
                let div = document.createElement("div");
                div.innerHTML = `
            <h1 style="color:orange">Dowload Desbloqueado!</h1>
            <span onclick="help_download()" id="help_dl" style="font-size: 14px; border-bottom:1px solid orange; cursor:pointer;margin-bottom:10px;">Ajuda para download?</span>

<div id="help_dl_instructions" style="display:none;border:1px solid orange;padding:4px;margin-top:-2px">
            <span class="help">    Clique no link com botão do Lado Direito + Salvar link como...</span>
</div><br>
`;
                dl.insertBefore(div, dl.firstChild);

                var help_download = document.createElement('script');
                help_download.innerHTML = `function help_download(){
                    const display = document.getElementById('help_dl_instructions').style.display
                    if(display == 'none'){
                        document.getElementById('help_dl_instructions').style.display = 'block'
                    }else{
                        document.getElementById('help_dl_instructions').style.display = 'none';
                    }
                }`
                document.body.appendChild(help_download);



                const broken_dl = dl.querySelector('a');
                let title='', txt=''
                if(broken_dl){
                    title = broken_dl.getAttribute('title')
                    txt = broken_dl.innerText;
                    broken_dl.innerHTML = `<br><br>>>> <a target="_blank" href="/roms/get-download.php?gid=${id}&test=true" title="${title}">${txt}</a> <<<`
                    return
                }

                if(title == '')
                    title = 'Download'
                if(txt == '')
                    txt = 'Download'

                div.innerHTML += `<br>>>> <a style="font-size:16px" target="_blank" href="/roms/get-download.php?gid=${id}&test=true" title="${title}">${txt}</a> <<<`


            }
        }

    }
}());