All Gallery Thumbs

Load all thumbnail pages for a gallery

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 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);
        });
    }
})();