try to take over the world!
当前为
// ==UserScript==
// @name Nozomi infinite scroll
// @namespace http://tampermonkey.net/
// @version 0.6
// @description try to take over the world!
// @author BicHD
// @match https://*nozomi.la/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=nozomi.la
// @grant none
// ==/UserScript==
var page_number = Number(window.location.pathname.replace(/.+-(\d+)\.html/,"$1")) || 1
const index = window.location.pathname.toLocaleLowerCase().includes("popular") ? "index-Popular" : "index"
async function get_jsons(post_id, post_ids) {
let response = await fetch(`//j.nozomi.la/post/${post_id.length < 3 ? post_id : (post_id.toString().replace(/^(.*(..)(.))/, '$3/$2/$1'))}.json`, {
method: 'GET',
headers: {'origin': "https://nozomi.la"},})
post_ids[post_id] = await response.json()
}
async function scrollHandler() {
var post_ids = {}
let scrollTop = (typeof pageYOffset != "undefined") ? pageYOffset : document.documentElement.scrollTop
if (!(document.documentElement.scrollHeight - scrollTop - document.documentElement.clientHeight < 58 && document.querySelector('#loader-content.hidden'))) return
document.getElementById('loader-content').classList.remove('hidden')
page_number += 1
let tns_per_page = 64
let start_byte = (page_number - 1) * tns_per_page * 4;
let end_byte = start_byte + tns_per_page * 4 - 1;
let response = await fetch(`//n.nozomi.la/${index}.nozomi`, {
method: 'GET',
headers: {'Range': `bytes=${start_byte}-${end_byte}`,'origin': "https://nozomi.la"},
})
if (!response.ok) {
document.getElementById('loader-content').classList.add('hidden')
}
let total_pages = Math.ceil((response.headers.get('Content-Length').replace(/^bytes \d+-\d+\//i, '') / 4) / tns_per_page);
let view = new DataView(await response.arrayBuffer());
let jsonPromises = []
for (let i = 0; i < view.byteLength / 4; i++) {
let post_id = view.getUint32(i * 4, false /* big-endian */)
jsonPromises.push(get_jsons(post_id, post_ids))
}
await Promise.all(jsonPromises);
Object.values(post_ids).forEach(post => {
var c = document.querySelector(".content")
if (c) {
var s = c.clientWidth;
var n = Math.ceil(6.0*s/1000.0);
var w = ((s - (10.0*n + 10.0) - 0.5) / n) - 2.0;
var divs = document.querySelectorAll(".thumbnail-div");
for (var i = 0; i < divs.length; i++) {
var div = divs[i];
div.style.width=(w+"px");
div.style.height=(w+"px");
}
}
document.querySelector("#thumbnail-divs > .thumbnail-div:last-child").insertAdjacentHTML('afterend',`<div class="thumbnail-div" style="width: ${w}px; height: ${w}px;"><a href="/post/${post.postid}.html"><img class="tag-list-img" src="//tn.nozomi.la/${post.imageurls[0].dataid.replace(/^.*(..)(.)$/, '$2/$1/')}${post.imageurls[0].dataid}.${post.imageurls[0].type}.webp" title="" style=""></a></div>`);
})
document.getElementById('loader-content').classList.add('hidden')
}
document.addEventListener("scrollend", scrollHandler);