您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Provides infinite scroll and larger thumbnails for gallery browsing.
// ==UserScript== // @name EX Better Thumbnails // @description Provides infinite scroll and larger thumbnails for gallery browsing. // @version 0.63 // @match https://exhentai.org/g/* // @grant none // @namespace https://greasyfork.org/users/13871 // ==/UserScript== const titleInputBoxMode = false; var thisURL = document.createElement("a"); thisURL.href = document.URL; var i = 0; var URLGen = URLGenerator(); var fileCount; var len = 0; var gdata; const jQueryCDN = "https://code.jquery.com/jquery-1.11.3.min.js"; const api = "https://exhentai.org/api.php"; const CSSCode = ".select {float: left}"; function loadJS(URL, callback) { var js = document.createElement("script"); js.type = "text/javascript"; js.src = URL; if (callback) { js.onload = callback; } document.head.appendChild(js); } (function() { callback = function() { changeLayout(); injectCSS(); // injectBar(); request(gid, token); main(); } loadJS(jQueryCDN, callback); })(); function injectCSS() { var css = $("<style></style>"); css.html(CSSCode); $("body").append(css); } function injectBar() { $('<div id="controlbar"></div>').prependTo($("#gdt")); var button = $('<button id="debug">debug</button>').click(function() {listChecked();}); $('#controlbar').append(button); } function request(gid, token) { var data = { method: "gdata", gidlist: [ [gid, token] ] }; data = JSON.stringify(data); var r = $.ajax({ url: api, data: data, dataType: "JSON", type: "POST", contentType: "application/json", success: function(res, error) { gdata = res; fileCount = Number(gdata["gmetadata"][0]["filecount"]); console.log("File count: " + fileCount); } }); } function* URLGenerator() { var base = thisURL.protocol + "//" + thisURL.hostname + thisURL.pathname + "?inline_set=ts_l"; while (true) { yield base + "&" + "p=" + i; i += 1; } } function openPageURL(URL, elem) { var callback = function(data) { var DOM = $.parseHTML(data); var imgURL = $(DOM).find("#img").prop("src"); var original = "" try { original = $(DOM).find("#i7").find("a").prop("href"); } catch (err) { console.log(err); } if (original) { imgURL = original; } if (elem) { var k = document.createElement('a'); k.href = imgURL; k.download = true; k.click(); k.remove(); } } $.get(URL, callback); } function insert(URL) { $.get(URL, function(data) { var DOM = $.parseHTML(data); $(DOM).find(".gdtl").each(function() { var title = $(this).find("img").prop("title"); var fname = title var caption = $('<div class="caption"></div>'); $(caption).appendTo(this); var pageURL = $(this).find("a").prop("href"); $(caption).html("<a href=" + '"javascript: void(0);"' +">"+ fname + "</a>"); $(caption).find("a").click(function() { openPageURL(pageURL, $(caption).find("a")); }); $("#gdt > .c").before(this); $(this).hide().fadeIn(); }); }) } function call() { var url = URLGen.next().value; console.log(url); insert(url); } function changeLayout() { if (titleInputBoxMode) { var i =$( '<input type="text" value=""></input>'); i.prop("value", $("#gn").html()); $("#gn").html(i); } $("#asm, #gdo, .gtb, #frontpage").remove(); var thumbnails = document.getElementById("gdt"); document.body.insertBefore(thumbnails, document.body.lastChild); $(".gdtm, .gdtl").each(function() { $(this).remove() }) } function main() { if (len == 0) { call(); } $(window).scroll(function() { len = $(".gdtl").length; if (len < fileCount && window.innerHeight + window.scrollY >= document.body.offsetHeight) { call(); } }) }