E-Hentai Load More Thumbnails

On an e-hentai gallery page, click "Load more" next to the page numbers and enter how many pages' worth of additional thumbnails you want to load onto the current page.

ของเมื่อวันที่ 09-06-2018 ดู เวอร์ชันล่าสุด

// ==UserScript==
// @name        E-Hentai Load More Thumbnails
// @namespace   e-hentai.org
// @description On an e-hentai gallery page, click "Load more" next to the page numbers and enter how many pages' worth of additional thumbnails you want to load onto the current page.
// @match       *://*.exhentai.org/g/*
// @match       *://*.e-hentai.org/g/*
// @version     0.1
// @grant       none
// ==/UserScript==

console.log('Hi');

var MAX_PAGES = 20;
var START_PAGES = 0;
var DEFAULT_PAGES = 2;
var last_loaded = 0;
var base_url = '';

var container_div = document.querySelector('#gdt');
var c_div = document.querySelector('#gdt .c');
var top_row = document.querySelector('.ptt tr');
var bottom_row = document.querySelector('.ptb tr');
var new_td = document.createElement('td');
var a = document.createElement('a');
a.onclick = "return false";
a.innerHTML = 'Load more';
new_td.appendChild(a);
new_td.style.width = '72px';
new_td2 = new_td.cloneNode(true);
new_td.onclick = new_td2.onclick = pop_up;

top_row.appendChild(new_td);
bottom_row.appendChild(new_td2);

var m = document.location.href.match(/^([^?]+)(?:\??.*p=(\d+))?/);
//console.log('m', m);
if (m) {
	base_url = m[1];
	if (m[2]) {
		last_loaded = Math.max(last_loaded, m[2]);
	}
}

var page_links = Array.from(document.querySelectorAll('.ptt a'));
var last_page = Math.max.apply(null, page_links.map((el) => {
		var m = el.href && el.href.match(/p=(\d+)/);
		return parseInt(m && m[1]);
	})
	.filter((num) => num));

START_PAGES > 0 && start_load(START_PAGES);

function pop_up() {
	if (last_loaded >= last_page) {
		alert('No more pages to load');
		console.log('No more pages to load');
	} else {
		var desired_pages = parseInt(prompt('Load how many pages', DEFAULT_PAGES));
		if (desired_pages > 0) {
			start_load(desired_pages);
		}
	}
}

function start_load(desired_pages) {
	if (last_loaded >= last_page) {
		console.log('No more pages to load');
		return;
	}
	var number_wanted = Math.min(desired_pages, MAX_PAGES);
	var end = Math.min(last_loaded + number_wanted, last_page);

	if (!document.querySelector('#marker' + (last_loaded + 1))) {
		add_marker(last_loaded + 1);
	}
	for (var i = last_loaded + 1; i <= end; i++) {
		var marker_div = add_marker(i + 1);
		//var url = good_links[i];
		var url = base_url + '?p=' + i;
		console.log('loading thumbs from', url)
		var oReq = new XMLHttpRequest();
		oReq.addEventListener("load", page_load(marker_div));
		oReq.open("GET", url);
		oReq.send();
		last_loaded = i;
	}
}

function add_marker(i) {
	var marker_div = document.createElement('div');
	marker_div.innerHTML = 'Page ' + i;
	marker_div.id = 'marker' + i;
	marker_div.style.clear = 'both';
	container_div.appendChild(marker_div);
	return marker_div;
}

function page_load(marker) {
	return function() {
		//console.log(this);
		var h = document.createElement('html');
		h.innerHTML = this.responseText;
		var thumb_divs = Array.from(h.querySelectorAll('.gdtl'));
		thumb_divs.forEach((el) => {
			//console.log(marker, el)
			container_div.insertBefore(el, marker);
		});
	}
}