琉神转 | Create Download Links for HACG (https)

琉璃神社与其他绅士站神秘代码转换成下载链接

Versión del día 7/10/2016. Echa un vistazo a la versión más reciente.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name        琉神转 | Create Download Links for HACG (https)
// @namespace   hoothin
// @description 琉璃神社与其他绅士站神秘代码转换成下载链接
// @author      hoothin
// @include     http*://www.hacg.*/wordpress/*
// @include     http*://hacg.*/wordpress/*
// @include     http*://www.hacg.*/wp/*
// @include     http*://hacg.*/wp/*
// @include     http*://blog.reimu.net/*
// @include     http*://pan.baidu.com/share/*
// @include     http*://pan.baidu.com/s/*
// @include     http*://sexacg.com/*
// @include     http*://www.acg.tf/*
// @include     http*://www.shenshi.re/*
// @include     http*://acg.tf/*
// @include     http*://shenshi.re/*
// @include     http*://www.moxacg.com/*
// @include     http*://*.acggj.com/*
// @include     http*://acg12.com/*
// @include     http*://*.acg12.com/*
// @include     http*://www.acgnz.cc/*
// @include     http*://nacg.me/*
// @include     http*://www.tianshit.com/*
// @include     http*://www.oomoe.moe/*
// @include     http*://www.kaze5.com/*
// @include     http*://www.acglover.top/*
// @version     3.19.38
// @grant       GM_notification
// @grant       GM_getResourceURL
// @run-at      document-end
// @require     https://greasyfork.org/scripts/23522-olddriver-js/code/oldDriverjs.js?version=151229
// @require     https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/core-min.js
// @require     https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js
// @require     https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/enc-base64-min.js
// @resource    odIcon http://i1.piimg.com/4851/503895c2571f5cdb.jpg
// ==/UserScript==
(function(){
    var sites=[["https://www.hacg.fi/wp/",".hacg."],
               ["https://blog.reimu.net/","blog.reimu."],
               ["https://sexacg.com/","sexacg"],
               ["https://www.acggj.com/","acggj."],
               ["https://www.tianshit.com/","tianshit."],
               ["https://www.oomoe.moe/","oomoe.moe"],
               ["https://acg12.com/","acg12."],
               ["https://www.acgnz.cc/","acgnz.cc"],
               ["https://www.moxacg.com/","moxacg."],
               ["https://www.acg.tf/",".acg.tf"],
               ["http://www.kaze5.com/","kaze5.com"],
               ["http://www.acglover.top/","acglover.top"],
               ["http://nacg.me/","nacg.me"]];
    document.onkeydown= function(e) {
        if (e.keyCode == 117) {
            var i=0;
            for(var j=sites.length;i<j;i++){
                if(location.href.indexOf(sites[i][1]) !=-1){
                    break;
                }
            }
            if(e.shiftKey) i=i===0?(sites.length-1):(i-1);
            else i=i==(sites.length-1)?0:(i+1);
            location.href = sites[i][0];
            return false;
        }
    };

    //度盘填充提取码
    if(/\.baidu\./.test(location.href)){
        if(location.hash.slice(1)){
            document.querySelector("#accessCode").value=location.hash.slice(1);
            document.querySelector('#submitBtn').click();
        }
        return;
    }else if(/hacg.*about\.html/.test(location.href)){
        return;
    }else if(/acg\.tf/.test(location.href)){
        var content=document.querySelector('.entry-content');
        if(content){
            var plist = content.querySelectorAll("p");
            var key = "";
            for(var pNode of plist){
                if(/(?<=密匙[::])\S*/i.test(pNode.innerHTML)){
                    var orgStr = pNode.innerHTML.match(/(?<=密匙[::])(\S*)/i)[0];
                    key=CryptoJS.enc.Base64.parse(orgStr).toString(CryptoJS.enc.Utf8);
                    pNode.innerHTML = "";
                    break;
                }
            }
            if(key !==""){
                var blockquotes = content.querySelectorAll("blockquote");
                for(var blockquote of blockquotes){
                    var target = blockquote.querySelector("p");
                    if(!target||target.innerText===""||!/^[0-9a-z\+\/=\s]+$/i.test(target.innerText)){continue;}
                    var result = target.innerHTML.replace(/<br>/g,"").replace(/\s/g,"");
                    result = CryptoJS.AES.decrypt(result,key).toString(CryptoJS.enc.Utf8);
                    target.innerHTML = result;
                }

            }
        }
    }else if (/reimu\./.test(location.href)){
        document.querySelector("#main").addEventListener('DOMNodeInserted', function(e) {
            var author = document.querySelector(".author-info");
            if (author && !document.querySelector("#blockBtn")) {
                createBlockBtn();
                process();
                clickBlockListener();
            }
        });
        createBlockBtn();
    }else if(/acg12\.com\/download/.test(location.href)){
        t=window.setInterval(checkAcg12,1000);
    }

    function process(){
        var contentArea='.entry-content';
        if(/sexacg\./.test(location.href))contentArea='article';
        else if(/moxacg\./.test(location.href)){
            addInsertHandler([["body","a","img","link","script"],[['p:\/\/(www\.)?moxacg','ps:\/\/$1moxacg']]]);
        }
        else if(/www\.acggj\./.test(location.href)){
            st2https(true,[["a","img","script","link"],[['p:\/\/(www\.)?acggj','ps:\/\/$1acggj'],['"\/\/(img\.2dfan)','"http:\/\/$1']]]);
            var benzi=document.querySelector('#menu-item-3786');
            if(benzi){
                var scy=benzi.cloneNode(true);
                scy.innerHTML = scy.innerHTML.replace(/本子/g, '三次元').replace(/hexie\/book/g, 'sciyuan').replace(/fa-book/g, 'fa-instagram');
                benzi.after(scy);
            }
        }else if(/bbs\.acggj\./.test(location.href)){
            st2https(true,[["a","img","script","link"],[['p:\/\/(bbs\.)?acggj','ps:\/\/$1acggj'],['"\/\/(img\.2dfan)','"http:\/\/$1']]]);
            var baseUrl=document.querySelector('base');
            baseUrl.href=baseUrl.href.replace(/http:/,"https:");
            var tags=["a","img","script","link"];
            for(var tag of tags){
                var temps=document.querySelectorAll(tag);
                for(var temp of temps){
                    if(temp.parentNode)
                        temp.outerHTML = temp.outerHTML;
                }
            }
        }else if(/acg12\./.test(location.href)){
            addInsertHandler([["a","img","link","script"],[['p:\/\/(www\.|static\.)?acg12','ps:\/\/$1acg12']]]);
        }else if(/acgnz\.cc/.test(location.href)){
            addInsertHandler([["a","img","link","script"],[['p:\/\/(www\.)?acgnz','ps:\/\/$1acgnz'],['"\/\/(pic|tc)\.(ffsky|rpgsky)','"http:\/\/$1\.$2']]]);
        }else if(/nacg\.me/.test(location.href)){
            contentArea='.content';
        }else if(/tianshit\.com/.test(location.href)){
            contentArea='.article-content';
        }
        var content=document.querySelector(contentArea);
        if(content){
            var oldDrivers = content.childNodes;
            for(var childOd of oldDrivers){
                if(childOd.innerHTML){
                    processTxt(childOd);
                }
            }
        }
        var link;
        if (document.querySelectorAll) {
            link = document.querySelectorAll('a');
        } else {
            link = document.getElementsByTagName('a');
        }
        for (var i = 0, k = link.length; i < k; i++) {
            if (/.*http:.*\.hacg\./i.test(link[i].outerHTML)) {
                link[i].href = link[i].outerHTML.match(/(?<=href=").*?(?=")/i)[0].replace(/http/, 'https');
            }
            var target=link[i];
            if(/baidu.com/i.test(target.href)&&!/(?:eyun|tieba)\.baidu\.com/i.test(target.href)&&!/#/i.test(target.href)){
                if(/(acggj\.com|oomoe\.moe|kaze5\.com)\/storage-download/.test(location.href)){
                    var pass=target.parentNode.parentNode.querySelector('input.pwd');
                    if(pass)target.href+='#'+pass.value;
                } else if(/acg12\.com\/download/.test(location.href)){
                    var pass2=target.parentNode.parentNode.parentNode.querySelector('input.form-control');
                    if(pass2)target.href+='#'+pass2.value;
                } else if(codeRule.test(target.textContent)){
                    target.href+='#'+extCode(target);
                } else if(target.nextSibling&&codeRule.test(target.nextSibling.textContent)){
                    if(!/#\S+/i.test(target.href)){
                        target.href+=/#/i.test(target.href)?extCode(target.nextSibling):('#'+extCode(target.nextSibling));
                    }
                } else if(codeRule.test(target.parentNode.textContent)){
                    if(!/#\S+/i.test(target.href)) target.href+=/#/i.test(target.href)?extCode(target.nextSibling):('#'+extCode(target.nextSibling));
                } else {
                    var j = 0,
                        maxParent = 5,
                        parent = target;
                    while(j<maxParent) {
                        j++;
                        parent = parent.parentNode;
                        if(parent.tagName=="TR") {
                            if(codeRule.test(parent.nextElementSibling.textContent)) {
                                parent=parent.nextElementSibling;
                                target.href+='#'+extCode(parent);
                                break;
                            }
                        } else if(codeRule.test(parent.textContent)) {
                            target.href+='#'+extCode(parent);
                            break;
                        }
                        if(parent==document.body) break;
                    }
                }
            }
        }
    }

    function createBlockBtn(){
        var pre = document.querySelector("pre");
        var author = document.querySelector(".author-info");
        if (author && !document.querySelector("#blockBtn")) {
            var blockBtn=document.createElement("button");
            blockBtn.id="blockBtn";
            blockBtn.type="button";
            blockBtn.textContent="好孩子看不到";
            blockBtn.style="padding:4px 0;position: relative;width:120px;";
            if(pre){
                pre.before(blockBtn);
            }else{
                blockBtn.style="display:none;";
                author.appendChild(blockBtn);
            }
        }
    }

    function clickBlockListener(){
        if(document.querySelector("#blockBtn")){
            document.querySelector("#blockBtn").addEventListener("click", function(){
                if(this.nextSibling.style.display == 'block'){
                    this.nextSibling.style.display = '';
                }else{
                    this.nextSibling.style.display = 'block';
                }
            });
        }
    }

    //防爆补丁
    var feiZao=document.getElementsByTagName("p1");
    var fZLength=feiZao.length;
    if (!!fZLength){
        for (var i = 0; i < fZLength; i++){
            feiZao[0].parentNode.removeChild(feiZao[0]);
        }
    }
    var t;
    function checkAcg12(){
        if(document.querySelector('.btn-success')){
            clearInterval(t);
            process();
        }
    }
    process();
    clickBlockListener();

    var exsites=/nacg\.me|oomoe\.moe|kaze5\.|acg12\.|acgnz\.cc|moxacg\.|acggj\./;
    if(!exsites.test(location.href)){
        document.getElementsByTagName("head")[0].appendChild(nod);
        var oD_box=document.createElement("div");
        oD_box.id="oD_box";
        oD_box.className = "oD_box";
        oD_box.onmouseover = function(e) {
            oD_link.style.visibility = "visible";
            oD_link2.style.visibility = "visible";
        };
        oD_box.onmouseout = function(e) {
            oD_link.style.visibility = "hidden";
            oD_link2.style.visibility = "hidden";
        };
        var oD_text=document.createElement("input");
        oD_text.id="oD_text";
        oD_text.type="text";
        oD_text.style="min-height:25px;max-height:33px";
        oD_text.placeholder="输入hash值";
        oD_text.title='将自动添加"magnet:?xt=urn:btih:",去除[]中的内容、非字母数字字符、空格';
        var oD_button=document.createElement("button");
        oD_button.id="oD_button";
        oD_button.type="button";
        oD_button.textContent="开车";
        oD_button.style="padding:4px 0;position: absolute;top:-1px;right:0px;width:40px;height:35px";
        oD_button.onclick=function (){
            var oD_hash=oD_text.value.replace(/(\[.*\])|[\W_]/g,"");
            if(oD_hash===""){
                alert("请输入hash值");
                return;
            }else if(!regObj.btih.test(oD_hash)){
                alert("hash值格式错误");
                return;
            }
            oD_link.href="magnet:?xt=urn:btih:"+oD_hash;
            oD_link.textContent="磁链";
            oD_link2.href="http://www.torrent.org.cn/Home/torrent/download.html?hash="+oD_hash;
            oD_link2.textContent="种子";
            oD_link2.style="margin-left:20px";
            oD_link3.href="https://btso.pw/magnet/detail/hash/"+oD_hash;
            oD_link3.textContent="详情";
            oD_link3.style="margin-left:20px";
        };
        var oD_link=document.createElement("a");
        var oD_link2=document.createElement("a");
        var oD_link3=document.createElement("a");
        oD_link2.target="_blank";
        oD_link3.target="_blank";
        oD_box.appendChild(oD_text);
        oD_box.appendChild(oD_button);
        oD_box.appendChild(document.createElement('br'));
        oD_box.appendChild(oD_link);
        oD_box.appendChild(oD_link2);
        oD_box.appendChild(oD_link3);
        document.body.appendChild(oD_box);
    }
    //评论区度娘、115、tcn
    var commArea="";
    if(/sexacg\./.test(location.href)){
        commArea='su-quote-inner';
    }else{
        commArea='comment-content';
    }
    seriousReplace(commArea);

    var hasViewed=false;
    if(document.referrer){
        for(var site of sites){
            if(document.referrer.indexOf(site[1])!=-1){
                hasViewed=true;
                break;
            }
        }
    }
    if(!hasViewed){
        var icon = GM_getResourceURL('odIcon');
        var notificationDetails = {
            text: "F6下一个绅士站,shift+F6上一个绅士站",
            title: "老司机发车了!",
            timeout: 10000,
            image: icon,
            onclick: function() {
                window.open("http://hoothin.com");
            }
        };
        GM_notification(notificationDetails);
    }
})();