您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
08.01.2022, 13:40:04
// ==UserScript== // @name better search rule34 // @namespace Violentmonkey Scripts // @match https://rule34.xxx/index.php // @grant none // @version 1.0 // @require https://code.jquery.com/jquery-3.5.1.min.js // @author - // @description 08.01.2022, 13:40:04 // ==/UserScript== async function main(){ console.log("better search rule34"); var tags = $("input[name='tags']").val().split(' '); for(var i = 0; i < tags.length; i++){ if(tags[i].split("||").length > 1){ $("div.image-list").empty() console.log(tags[i].split("||")); var normalTags = ""; for(var j = 0; j < tags.length; j++){ if(tags[j].includes("||")){ continue; } normalTags += tags[j] + " "; } console.log(normalTags); for(var x = 0; x < tags[i].split("||").length; x++){ var tag = normalTags + tags[i].split("||")[x]; var postCount = await getPostCount(tag); console.log("POST COUNT: " + tag, postCount); var div = document.createElement("div"); var content = document.createElement("div"); content.id = tag; var header = document.createElement("h3"); header.innerHTML = tag + " >> " + postCount; header.style.backgroundColor = "#e74c3c"; header.onclick = function(){ if(this.nextSibling.style.display != "none"){this.nextSibling.style.display = "none"}else{this.nextSibling.style.display = "block";} }; div.appendChild(header); div.appendChild(content); document.getElementsByClassName("content")[0].appendChild(div); var imgDir = []; for(var k = 0; k <= postCount; k += 42){ //addImagesFromUrl("https://rule34.xxx/index.php?page=post&s=list&tags=" + tag + "&pid=" + k, content); imgDir.push(getImagesFromUrl("https://rule34.xxx/index.php?page=post&s=list&tags=" + tag + "&pid=" + k)); header.innerHTML = tag + " >> " + k + " loading..."; } const result = await Promise.all(imgDir); console.log(result); header.innerHTML = tag + " >> " + k + " Done"; for(var k = 0; k < result.length; k++){ for(var j = 0; j < result[k].images.length; j++){ content.appendChild(result[k].images[j]); } } } } } /* for(var i = 0; i < tags.length; i++){ console.log(tags[i]); console.log(tags); var postCount = await getPostCount(tags[i]); console.log(postCount); for(var j = 0; j <= postCount; j += 42){ console.log("requesting: ", "https://rule34.xxx/index.php?page=post&s=list&tags=" + tags[i] + "&pid=" + j); addImagesFromUrl("https://rule34.xxx/index.php?page=post&s=list&tags=" + tags[i] + "&pid=" + j); await sleep(10000); } }*/ }; async function getPostCount(tags){ var postCount = 0; var iframe = document.createElement("iframe"); iframe.id = "ifream"; iframe.src = "https://rule34.xxx/index.php?page=post&s=list&tags=" + tags; iframe.onload = function() { postCount = $("#ifream").contents().find('a[alt="last page"]')[0].href.split("pid=")[1]; iframe.parentNode.removeChild(iframe); } document.body.appendChild(iframe); while(postCount == 0){ await sleep(100); } return postCount; } function addImagesFromUrl(url, element = null){ if(element == null){element = document.getElementsByClassName("content")[0]}; var ifream = document.createElement("iframe"); ifream.src = url; ifream.onload = function() { var images = ifream.contentWindow.document.getElementsByTagName("img"); var header = document.createElement("h6"); header.innerHTML = url; element.appendChild(header, document.getElementById("paginator")); /*for(i = images.length-1; i >= 0; i--){ if(images[i].parentNode.parentNode.tagName == "SPAN"){ document.getElementById("paginator").parentNode.insertBefore(images[i].parentNode.parentNode, document.getElementById("paginator")); } }*/ for(i = 0; i < images.length; i++){ if(images[i].parentNode.parentNode.tagName == "SPAN"){ element.appendChild(images[i].parentNode.parentNode.cloneNode(true), document.getElementById("paginator")); } } ifream.parentNode.removeChild(ifream); } document.body.appendChild(ifream); } async function getImagesFromUrl(url){ var outimages = []; var done = false; var ifream = document.createElement("iframe"); ifream.src = url; ifream.onload = function() { var images = ifream.contentWindow.document.getElementsByTagName("img"); for(i = 0; i < images.length; i++){ if(images[i].parentNode.parentNode.tagName == "SPAN"){ outimages.push(images[i].parentNode.parentNode.cloneNode(true)); } } done = true; ifream.parentNode.removeChild(ifream); } document.body.appendChild(ifream); while(done == false){ await sleep(100); } return {pid : url.split('&pid=')[1], images : outimages}; } function sleep(milliseconds) { return new Promise(resolve => setTimeout(resolve, milliseconds)); } $( document ).ready(function() { if ( window.location == window.parent.location ){ main(); } });