All Gallery Thumbs

Load all thumbnail pages for a gallery

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         All Gallery Thumbs
// @version      1.27
// @description  Load all thumbnail pages for a gallery
// @author       Hauffen
// @include      /https?:\/\/(e-|ex)hentai\.org\/.*/
// @require      https://code.jquery.com/jquery-3.3.1.min.js
// @namespace https://greasyfork.org/users/285675
// ==/UserScript==

(function() {
    let $ = window.jQuery;
    var url = document.URL;
    var count = 1;
    var flag = true;
    var timeout;

    if (url.split('/')[3] === "g") {
        var pages = document.getElementsByClassName('ptt')[0].children[0].children[0].children[document.getElementsByClassName('ptt')[0].children[0].children[0].childElementCount - 2].innerText;
        var s = setInterval(function() {

            if(document.hidden) { return; }

            loadMore();

            $("<style>.gtb{visibility:hidden;}.ptb{visibility:hidden;}div#gdt{display:grid;grid-template-columns:repeat(auto-fit, minmax(" + $(".gdtm").first().width() + "px, 1fr));}</style>").appendTo("head"); 
            clearInterval(s);
        }, 500);
    } else {
        return;
    }

    function loadMore() {
        if (!flag) {
            return;
        }
        flag = false;
        clearTimeout(timeout);

        if (count >= pages) {
            clearTimeout(timeout);
            return;
        }

        var $content = $('<div>');
        var nextUrl = url + "?p=" + count;
        count = count + 1;
        $content.load(`${nextUrl} #gdt`, function() {
            var divs = this.children[0].children;

            divs[0].parentNode.removeChild(divs[divs.length-1]);

            while (divs.length > 0) {
                $(divs[0]).insertBefore( document.getElementsByClassName('c')[3] );
            }
            flag = true;
            timeout = setTimeout(loadMore(count), 5000);
        });
    }
})();