您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
一键复制E绅士的缩略图,便于书写标签翻译项目的详细介绍。
// ==UserScript== // @name ETTHelper-Thumbnail // @name:zh-CN E绅士标签翻译辅助工具-缩略图 // @namespace EhTagTranslation // @description Help to get thumbnail for write EhTagTranslation's translation detail. // @description:zh-CN 一键复制E绅士的缩略图,便于书写标签翻译项目的详细介绍。 // @include *://exhentai.org/g/* // @include *://e-hentai.org/g/* // @include *://e-hentai.org/lofi/g/* // @include *://upl*d.e-hentai.org/managegallery* // @include *://upl*d.e-hentai.org/upl*d/managegallery* // @include *://exhentai.org/upl*d/managegallery* // @include *://upl*d.exhentai.org/upl*d/managegallery* // @resource ui-style https://github.com/EhTagTranslation/UserScripts/raw/master/Thumbnail/ETTHelper-Thumbnail.ui.css?v=3.1 // @version 3.2.0 // @grant GM_getResourceText // @grant GM_addStyle // @grant GM_setClipboard // @grant GM_notification // @author Mapaler <[email protected]> // @copyright 2017+, Mapaler <[email protected]> // @homepage https://github.com/EhTagTranslation/UserScripts // @supportURL https://github.com/EhTagTranslation/UserScripts/issues // ==/UserScript== (()=>{ const styleText = GM_getResourceText("ui-style"); GM_addStyle(styleText); const { thumbs, thumbType } = (()=>{ let thumbs, thumbType; if (/^\/g\//.test(location.pathname)) {//图像画廊 thumbs = Array.from(document.querySelectorAll('#gdt>a')); thumbType = 'gallery'; } else if (/^\/lofi\//.test(location.pathname)) {//手机版画廊 thumbs = Array.from(document.querySelectorAll('#gh>a')); thumbType = 'lofi'; } else if (/managegallery/.test(location.pathname)) {//画廊编辑 thumbs = Array.from(document.querySelectorAll('#t>.nosel>div')); thumbType = 'upload'; } return { thumbs, thumbType }; })(); if (thumbType === 'gallery' || thumbType === 'lofi') { const pageLink = thumbs[0]?.nodeName == 'A' ? thumbs[0] : thumbs[0]?.querySelector('a'); const match = pageLink.pathname.match(/\-(\d+)$/); const firstPage = parseInt(match[1],10); const styleText2 = ` body{ counter-reset: page ${firstPage-1}; } .EWHT-ul::before{ counter-increment: page; content: "P" counter(page) ": "; } `; GM_addStyle(styleText2); } const getImgId = (src) => { const url = new URL(src); if (url.searchParams.get('fileid')) { return url.searchParams.get('fileid'); }else { const RegRes = /(\w+)\-(\d+)\-(\d+)\-(\d+)\-(\w+)(?:_l|_250)\b/i.exec(src); if (RegRes) { return `${RegRes[1]}-${RegRes[2]}-${RegRes[3]}-${RegRes[4]}-${RegRes[5]}`; } else { return null; } } } function copyString(event) { event.stopPropagation(); event.preventDefault(); const type = this.dataset.type; const imgNode = this.parentNode.parentNode.parentNode.querySelector(":where(img, [title][style*=background])"); const src_original = ((node)=>{ if (node.nodeName == "IMG") return node.src; const computedStyle = window.getComputedStyle(node, false); const bgiSrc = computedStyle.backgroundImage.replace(/url\(["']?(.+?)["']?\)/gi, "$1"); return URL.canParse(bgiSrc) && bgiSrc; })(imgNode); const fileId = getImgId(src_original); if (fileId === null) { alert('错误:\n未找到符合格式的图片 ID。'); return; } const src_out = `https://ehgt.org/${fileId.substring(0,2)}/${fileId.substring(2,4)}/${fileId}_l.jpg` let outstr,typeName; switch(type) { case "图":{ outstr = ``; typeName = "MD 格式图片地址"; break; } case "隐":{ outstr = ``; typeName = "R18 MD 格式图片地址"; break; } case "限":{ outstr = ``; typeName = "R18G 限制级 MD 格式图片地址"; break; } default:{ outstr = src_out; typeName = "单纯图片地址"; break; } } GM_setClipboard(outstr); GM_notification(outstr, //显示的文本 `已复制到剪贴板 - ${typeName}`, //标题 //src_original //显示原版地址,这样可以节省加载时间 ); } const creat_li = (type) => { const li = document.createElement("li"); li.className = "EWHT-li"; const btn = li.appendChild(document.createElement("button")); btn.className = "EWHT-btn"; btn.dataset.type = type; btn.onclick = copyString; return li } const buildBtnList = () => { const list = ["纯","图","隐","限"].map(creat_li); const ul = document.createElement("ul"); ul.className = "EWHT-ul"; ul.append(...list); return ul; } thumbs.forEach(thumb=>{ // //获取到图像 // const img = thumb.querySelector(":where(img, [title][style*=background])"); // //如果图像有title // if (img.title) { // const filename = document.createElement("div"); // filename.className = "filename"; // filename.textContent = img.title; // img.parentElement.append(filename); // } thumb.appendChild(buildBtnList()); }); })();