Greasy Fork

Greasy Fork is available in English.

巴哈縮圖強化

狗才用預設縮圖= =

当前为 2019-10-01 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         巴哈縮圖強化
// @namespace    http://tampermonkey.net/
// @version      0.7.34
// @description  狗才用預設縮圖= =
// @author       SmallYue1
// @match        https://forum.gamer.com.tw/B.php*
// @match        https://forum.gamer.com.tw/C.php*
// @match        https://forum.gamer.com.tw/Co.php*
// @match        https://forum.gamer.com.tw/post1.php*
// @require      https://cdnjs.cloudflare.com/ajax/libs/jszip/3.2.0/jszip.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js
// ==/UserScript==

var Lists = [], Lists_Img = [], Lists_Content = [], 帳號 = [], 帳號小寫 = [], 勇者頭像 = [], 小屋連結 = [], 時間 = [], 人氣和互動 = [];
var zip, img, A_Download, Count_Text, Num_Of_Img_Text,Textarea,Clipboard,文章資訊卡,文章資訊卡_內容;

function 新增頁面點擊事件()
{
    document.getElementsByTagName("body")[0].onclick = function(e){
        if((e.target.parentNode.id != "PreView") && (e.target.id != "PreView") && (e.target.className.indexOf("b-list__img") == -1) && (e.target.className.indexOf("video-btn_play") == -1) && (e.target.className.indexOf("video-mask") == -1))
        {
            document.getElementById("PreView").outerHTML = "";
        }
    };
}

function 縮圖強化()
{
    var Match = document.getElementsByTagName('tr');
    刪除行及初始設定(Match);
    for(var i = 0; i < Lists.length; i++)
    {
        版面設定(Lists[i],Lists_Img[i],Lists_Content[i]);
        製作文章資訊卡(Lists[i],帳號[i],勇者頭像[i],小屋連結[i],時間[i],人氣和互動[i]);
        覆寫縮圖(Lists_Img[i]);
        文章資訊卡.setAttribute("style","float:left;width:160px;margin-top:5px;margin-bottom:5px;padding-top:"+((文章資訊卡.parentNode.offsetHeight)-((文章資訊卡.offsetHeight+10)))/2+"px;");
        文章資訊卡.parentNode.setAttribute("style","height:"+文章資訊卡.parentNode.offsetHeight+"px;");
    }
}

function 刪除行及初始設定(Match)
{
    for(var i = 0; i < Match.length; i++)
    {
        if(Match[i].className.indexOf('b-list__head') != -1)
        {
            for(var j = Match[i].children.length-1; j >0 ; j--)
            {
                Match[i].removeChild(Match[i].children[j]);
            }
        }
        if(Match[i].className.indexOf('b-list__row') != -1)
        {
            if(Match[i].children.length > 2)
            {
                初始設定(Match[i]);
            }
        }
    }
}

function 初始設定(列)
{
    var Tempt;
    Lists.push(列);
    帳號.push(列.children[2].children[1].innerText);
    帳號小寫.push(帳號[帳號.length-1].toLowerCase());
    Tempt = 帳號小寫[帳號小寫.length-1];
    勇者頭像.push("https://avatar2.bahamut.com.tw/avataruserpic/"+Tempt.split("")[0]+"/"+Tempt.split("")[1]+"/"+Tempt+"/"+Tempt+"_s.png");
    小屋連結.push("https://home.gamer.com.tw/homeindex.php?owner="+帳號[帳號.length-1]);
    時間.push(列.children[3].children[0].innerText);
    人氣和互動.push(列.children[2].children[0].innerText);
    if((列.className.indexOf('b-list__row--sticky') == -1) && (列.className.indexOf('is-del') == -1) && (列.className.indexOf('b-imglist-item') != -1))
    {
        Lists_Img.push(列.children[1].children[0].children[0]);
        Lists_Content.push(列.children[1].children[0].children[1]);
    }
    else
    {
        Lists_Img.push("");
        Lists_Content.push("");
        if(列.className.indexOf('is-del') != -1)
        {
            if(列.children[1].children[0].childElementCount == 0)
            {
                列.children[1].children[1].setAttribute('style','display:inline-block;max-width:677px;margin-top:10px');
                列.children[1].removeChild(列.children[1].children[0]);
            }
            else
            {
                列.children[1].children[0].children[1].setAttribute('style','display:inline-block;max-width:677px;margin-top:10px');
                列.children[1].children[0].removeChild(列.children[1].children[0].children[0]);
            }
        }
    }
    if(列.children[0].children[2] === undefined)
    {
        var Node_Span = document.createElement('span');
        Node_Span.setAttribute('class','b-list__summary__gp b-gp b-gp--normal');
        Node_Span.append("0");
        列.children[0].appendChild(Node_Span);
    }
    for(var k = 列.children.length-1; k > 1; k--)
    {
        列.removeChild(列.children[k]);
    }
}

function 版面設定(列,縮圖,文字)
{
    var Tempt;
    var New_div1 = document.createElement('div');
    var New_div2 = document.createElement('div');
    if((列.className.indexOf('b-list__row--sticky') == -1) && (列.className.indexOf('is-del') == -1) && (列.className.indexOf('b-imglist-item') != -1))
    {
        文字.className="";
        文字.parentNode.setAttribute('style','text-decoration:none;');
        文字.setAttribute('style','display:block;margin-top:5px;margin-right:20px;');
        New_div1.setAttribute('style','display:inline-block;max-width:677px;margin-top:5px');
        New_div2.appendChild(文字.parentNode);
        New_div1.appendChild(New_div2);
        New_div1.appendChild(縮圖);
        列.children[1].appendChild(New_div1);
        if(文字.childElementCount > 1)
        {
            文字.children[1].setAttribute('style','margin:5px;margin-left:10px;margin-right:25px;');
        }

    }
}

function 製作文章資訊卡(列,帳號,勇者頭像,小屋連結,時間,人氣和互動)
{
    文章資訊卡 = document.createElement('div');
    文章資訊卡_內容 = document.createElement('a');
    列.children[1].className="";
    列.children[1].prepend(文章資訊卡);
    文章資訊卡.appendChild(文章資訊卡_內容);
    文章資訊卡.setAttribute("class","TOP-my");
    文章資訊卡_內容.outerHTML =`
            <a class="topbar_member-home" href="${小屋連結}" target="_blank" style="text-align:center;color: #117096;display:inline-block;width:100%">
                <div class="nav-member_imgbox">
                    <img src="${勇者頭像}">
                </div>
                ${帳號}
            </a>
            <p style="text-align:center;font-size:13px">
                今日 ${時間}
            </p>
            <p style="text-align:center;font-size:11px; color:gray;">
                互動: ${人氣和互動.split("/")[0]} 人氣: ${人氣和互動.split("/")[1]}
            </p>`;
}

function 覆寫縮圖(縮圖)
{
        if(縮圖 !== "")
        {
            if(縮圖.dataset.thumbnail != undefined)
            {
                縮圖.setAttribute('style','margin-top:5px;margin-left:10px;margin-bottom:10px;background-image:url("'+縮圖.dataset.thumbnail+'");');
                縮圖.className = 'b-list__img';
                if(縮圖.dataset.thumbnail.indexOf("ytimg") != -1)
                {
                    縮圖.onclick = function() {
                        var New_div = document.createElement('div');
                        var New_Img_Btn = document.createElement('img');
                        var New_Iframe = document.createElement('iframe');
                        New_Img_Btn.src = "https://1.bp.blogspot.com/-aBquCi-gyQw/XXqz_sdh-II/AAAAAAAAAzs/qGjB4yTIIPMfI6gcZjOxw6WFQ4SiXvznwCKgBGAsYHg/s1600/x-symbol%25282%2529.png";
                        New_Img_Btn.onclick = function(){
                            this.parentNode.outerHTML = "";
                        };
                        New_Iframe.src = "https://www.youtube.com/embed/"+this.dataset.thumbnail.split('/')[4];
                        New_div.setAttribute('style','background-image:url("https://p2.bahamut.com.tw/HOME/cssimg/25/smallyue1_A_7.PNG?v=1567059486");height:80%;width:80%;position:fixed;top:15%;left:8%;z-index:1;overflow:auto;');
                        New_Img_Btn.setAttribute('style','position:fixed;z-index:3;width:16px;height:16px;margin-top:4px;margin-left:4px;');
                        New_Iframe.setAttribute('style','position: absolute;bottom:0px;left:2%;right:2%;width:96%;height: 95%;');
                        New_div.appendChild(New_Img_Btn);
                        New_div.appendChild(New_Iframe);
                        New_div.setAttribute("id","PreView");
                        document.body.prepend(New_div);
                    };
                }
                else
                {
                    縮圖.onclick = function() {
                        var New_div = document.createElement('div');
                        var New_Img_Btn = document.createElement('img');
                        var New_Img = document.createElement('img');
                        New_Img_Btn.src = "https://1.bp.blogspot.com/-aBquCi-gyQw/XXqz_sdh-II/AAAAAAAAAzs/qGjB4yTIIPMfI6gcZjOxw6WFQ4SiXvznwCKgBGAsYHg/s1600/x-symbol%25282%2529.png";
                        New_Img_Btn.onclick = function(){
                            this.parentNode.outerHTML = "";
                        };
                        New_Img.src = this.dataset.thumbnail;
                        New_div.setAttribute('style','background-image:url("https://p2.bahamut.com.tw/HOME/cssimg/25/smallyue1_A_7.PNG?v=1567059486");height:80%;width:80%;position:fixed;top:15%;left:8%;z-index:1;overflow:auto;');
                        New_Img_Btn.setAttribute('style','position:fixed;z-index:3;width:16px;height:16px;margin-top:4px;margin-left:4px;');
                        New_Img.setAttribute('style','width:98%;margin-top:24px;margin-left:1%;z-index:2;');
                        New_div.appendChild(New_Img_Btn);
                        New_div.appendChild(New_Img);
                        New_div.setAttribute("id","PreView");
                        document.body.prepend(New_div);
                    };
                }
            }
            else
            {
                縮圖.outerHTML = "";
            }
        }
}

function 設定對優質門寶具()
{
    var Tool_Bar = document.getElementById('BH-menu-path');
    A_Download = document.createElement('a');
    Count_Text = document.createElement('a');
    Num_Of_Img_Text = document.createElement('a');
    var Li_A_Download = document.createElement('li');
    Li_A_Download.appendChild(A_Download);
    A_Download.append("對優質門寶具");
    A_Download.onclick = 對優質門寶具;
    A_Download.setAttribute("id","A_Download");
    Count_Text.append("0");
    Count_Text.setAttribute("id","Count");
    Num_Of_Img_Text.append("0");
    Num_Of_Img_Text.setAttribute("id","Num_Of_Img");
    if(Tool_Bar !== null)
    {
        Tool_Bar.children[0].appendChild(Li_A_Download);
        document.body.appendChild(Count_Text);
        document.body.appendChild(Num_Of_Img_Text);
    }
}

function 對優質門寶具()
{
    zip = new JSZip();
    zip.file(document.title.replace(/\//g,"_") +".url", "[InternetShortcut]\n" +"URL="+location.href);
    img = zip.folder("images");
    var Match_Imgs = document.getElementsByTagName('img');
    DownloadImage(Match_Imgs);
}

function DownloadImage(Match_Imgs)
{
    var xhr = [];
    for(var i = 0; i < Match_Imgs.length; i++)
    {
        if((Match_Imgs[i].getAttribute("data-src") != null) && ((Match_Imgs[i].className.indexOf('lazyloaded') != -1) || (Match_Imgs[i].className.indexOf('lazyload') != -1)) && ((Match_Imgs[i].getAttribute("data-src").indexOf("bahamut") == -1) || ((Match_Imgs[i].getAttribute("data-src").indexOf("truth") != -1) && (Match_Imgs[i].getAttribute("data-src").indexOf("bahamut") != -1))))
        {
            Num_Of_Img_Text.innerText = parseInt(Num_Of_Img_Text.innerText) + 1;
            xhr.push(new XMLHttpRequest());
            xhr[i].responseType = 'blob';
            xhr[i].MURL = Match_Imgs[i].getAttribute("data-src");
            xhr[i].onload = function () {
                Count_Text.innerText = parseInt(Count_Text.innerText) + 1;
                A_Download.innerText = "下載 "+Count_Text.innerText+" 張圖片中";
                img.file(this.responseURL.split("/")[this.responseURL.split("/").length-1],this.response);
            };
            xhr[i].onerror = function () {
                var xhr = new XMLHttpRequest();
                xhr.responseType = 'blob';
                xhr.onload = function () {
                    if(this.statusText == "OK")
                    {
                        Count_Text.innerText = parseInt(Count_Text.innerText) + 1;
                        A_Download.innerText = "下載 "+Count_Text.innerText+" 張圖片中";
                        img.file(this.responseURL.split("/")[this.responseURL.split("/").length-1],this.response);
                    }
                    else if(this.statusText == "Too Many Requests")
                    {
                        alert('檔案 '+this.responseURL.split("/")[this.responseURL.split("/").length-1]+' 下載失敗:過多請求,請稍後再試。');
                        Num_Of_Img_Text.innerText = parseInt(Num_Of_Img_Text.innerText) - 1;
                    }
                    else
                    {
                        Num_Of_Img_Text.innerText = parseInt(Num_Of_Img_Text.innerText) - 1;
                    }
                };
                xhr.open("GET", "https://cors-anywhere.herokuapp.com/"+this.MURL);
                xhr.send(null);
            };
            xhr[i].open("GET", Match_Imgs[i].getAttribute("data-src"));
            xhr[i].send(null);
        }
        else
        {
            xhr.push("");
        }
    }
    setTimeout(function(){Check();},1000);
    console.log("done");
}

function Check()
{
    if(parseInt(Num_Of_Img_Text.innerText) == parseInt(Count_Text.innerText))
    {
        Package();
    }
    else
    {
        setTimeout(function(){Check();},1000);
    }

}

function Package()
{
    if(parseInt(Count_Text.innerText) !== 0)
    {
        zip.generateAsync({type:"blob",compression:"STORE"}, function updateCallback(metadata) {
            A_Download.innerText = "封裝進度: " + metadata.percent.toFixed(2) + " %";
        }).then(function(content) {
            saveAs(content, document.title.replace(/\//g,"_") + ".zip");
            A_Download.innerText = "共下載了 "+Count_Text.innerText+" 張圖片";
            Count_Text.setAttribute("style","visibility:hidden;");
        });
    }
    else
    {
        A_Download.innerText = "沒有符合域名的圖片";
    }
}

function Pixiv轉pixivcat代理()
{
    const iframeWindow = document.getElementsByTagName('iframe')[0].contentWindow;
    Textarea = iframeWindow.document.getElementsByTagName("body");
    Clipboard = document.createElement('a');
    Clipboard.innerText = "";
    Clipboard.setAttribute("id","Clipboard");
    document.body.appendChild(Clipboard);
    iframeWindow.addEventListener('paste', function(e){
        if(this.document.hasFocus())
        {
            var paste = e.clipboardData.getData("text/plain");
            Clipboard.innerText = paste;
            setTimeout(()=>{
                Clipboard.innerText = "";
            },1000)
        }
    }, false);
    Textarea[0].addEventListener('input',function(e){
        if(this.innerHTML.indexOf("pximg.net") != "-1")
        {
            this.innerHTML = this.innerHTML.replace(/pximg.net/g,"pixiv.cat");
        }
        else if(this.innerHTML.indexOf("www.pixiv.net") != "-1")
        {
            setTimeout(()=>{
                var Tempt = Clipboard.innerText.split("/");
                Tempt = Tempt[Tempt.length-1];
                var Tempt_A = this.getElementsByTagName('a');
                for(var i = 0; i < Tempt_A.length; i++)
                {
                    if((Tempt_A[i].innerText.indexOf(Tempt) != -1) && (Tempt_A[i].innerText == Clipboard.innerText) && (Tempt_A[i].innerText != ""))
                    {
                        Tempt_A[i].outerHTML = '<img id = "'+Tempt+'" src = "https://pixiv.cat/'+Tempt+'.jpg">';
                        var Tempt_Img = this.getElementsByTagName("img");
                        for(var j = 0; j < Tempt_Img.length; j++)
                        {
                            if(Tempt_Img[j].id == Tempt)
                            {
                                Tempt_Img[j].onerror = function(){
                                    var tempt = this.src;
                                    tempt = tempt.split("/");
                                    tempt = tempt[tempt.length-1];
                                    tempt = tempt.split(".")[0];
                                    this.src = "https://pixiv.cat/"+tempt+"-1.jpg";
                                }
                            }
                        }
                    }
                }
            },10);
        }
    }, false);
}

(function() {
    'use strict';
    if(location.pathname.indexOf("B.php") != -1)
    {
        新增頁面點擊事件();
        縮圖強化();
    }
    else if((location.pathname.indexOf("C.php") != -1) || (location.pathname.indexOf("Co.php") != -1))
    {
        設定對優質門寶具();
    }
    else if(location.pathname.indexOf("post1.php") != -1)
    {
        Pixiv轉pixivcat代理();
    }
})();