您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Make Lewding Easier
// ==UserScript== // @name Hentai in New Tabs by One Click // @namespace https://github.com/CinnamonJui // @version 0.2.3 // @description Make Lewding Easier // @author CinnamonJui // @match https://exhentai.org/g/* // @match https://e-hentai.org/g/* // @icon https://www.google.com/s2/favicons?sz=64&domain=e-hentai.org // @grant none // @license MIT // ==/UserScript== /* jshint esversion:6 */ function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } function getImagePageLinks() { const gallery = document.getElementById('gdt'); const imgs = Array(...gallery.children).filter( e => e.className === 'gdtl'); const links = imgs.map(e => e.children[0].href); return links; } function openLinkInNewTab(l) { window.open(l, '_blank') } (function() { 'use strict'; addGlobalStyle('#gdo2 { width: 350px !important; }'); const newTabBtn = document.createElement('div'); newTabBtn.textContent = 'New Tab'; newTabBtn.className = 'tha nosel'; let isLewding = false; let NUM_LINK_PROCESSED = 0; let NUM_TOTAL_LINK = 0; function fetchImageLinkInImagePage(l) { const ret = fetch(l) .then(res => res.arrayBuffer()) .then(u8arr => new TextDecoder().decode(u8arr)) .then(body => new DOMParser().parseFromString(body, 'text/html')) .then(dom => dom.getElementById('img').src) .finally(_ => { NUM_LINK_PROCESSED += 1; newTabBtn.textContent = `${NUM_LINK_PROCESSED}/${NUM_TOTAL_LINK}`; }); return ret; } newTabBtn.onclick = e => { e.preventDefault(); if (isLewding) { console.log('Already opening image sources. Patience makes you a better person at lewding. 🍆'); return; } isLewding = true; const pageLinks = getImagePageLinks(); NUM_TOTAL_LINK = pageLinks.length; NUM_LINK_PROCESSED = 0; const imageLinks = pageLinks.map(fetchImageLinkInImagePage); Promise.all(imageLinks) .then(links => links.map(openLinkInNewTab)) .finally(_ => { isLewding = false; newTabBtn.textContent = 'New Tab'; }); }; const rowNumSec = document.getElementById('gd5'); rowNumSec.append(newTabBtn); })();