Greasy Fork

来自缓存

Greasy Fork is available in English.

二次元图片网站增强

增强二次元图片网站的体验

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         二次元图片网站增强
// @namespace    https://github.com/LU-JIEJIE/UserScript/tree/main/packages/anime-site-evolved
// @version      1.0.0
// @author       lu-jiejie
// @description  增强二次元图片网站的体验
// @license      MIT
// @icon         https://yande.re/favicon.ico
// @homepage     https://github.com/LU-JIEJIE/UserScript/tree/main/packages/anime-site-evolved
// @match        *://yande.re/*
// @grant        GM_addStyle
// ==/UserScript==

(function () {
  'use strict';

  var _GM_addStyle = /* @__PURE__ */ (() => typeof GM_addStyle != "undefined" ? GM_addStyle : void 0)();
  const generalTagsTableUrl = "https://cdn.jsdelivr.net/gh/LU-JIEJIE/UserScript@main/packages/anime-site-evolved/src/data/yande_tags_general.json";
  const copyrightTagsTableUrl = "https://cdn.jsdelivr.net/gh/LU-JIEJIE/UserScript@main/packages/anime-site-evolved/src/data/yande_tags_copyright.json";
  const showImageSize = () => {
    _GM_addStyle(`
  #post-list-posts li a.directlink span.directlink-info {
    display:none;
  }
  #post-list-posts li a.directlink span.directlink-res{
    display:inline;
  }
  `);
  };
  const bindClickToLoadRawImage = () => {
    const img = document.querySelector("#image");
    const loadRawImageButton = document.querySelector("#highres-show");
    const downloadPngButton = document.querySelector("#png");
    if (!img || !loadRawImageButton)
      return;
    if (downloadPngButton)
      loadRawImageButton.setAttribute("href", downloadPngButton.getAttribute("href"));
    img.addEventListener("click", () => {
      loadRawImageButton.click();
    });
  };
  const showImageHidden = () => {
    const hideImageButton = document.querySelector("#blacklisted-sidebar");
    hideImageButton == null ? void 0 : hideImageButton.remove();
    const hiddenImages = document.querySelectorAll(".javascript-hide");
    hiddenImages.forEach((hiddenImage) => {
      hiddenImage.classList.remove("javascript-hide");
    });
  };
  const addTagTypeHeader = () => {
    const tagDefault = document.querySelector("div.sidebar > div:nth-child(3) > h5");
    tagDefault == null ? void 0 : tagDefault.remove();
    const tagTypes = {
      general: "一般",
      artist: "画师",
      copyright: "版权",
      character: "角色",
      circle: "社团",
      faults: "缺陷"
    };
    for (const tagType in tagTypes) {
      const firstTagByType = document.querySelector(`#tag-sidebar li.tag-type-${tagType}`);
      if (!firstTagByType)
        continue;
      const tagTypeHeader = document.createElement("h5");
      tagTypeHeader.style.marginTop = "0.5em";
      tagTypeHeader.textContent = tagTypes[tagType];
      firstTagByType.before(tagTypeHeader);
    }
  };
  const translateTag = (tagLi, tagsTable) => {
    const tagA = tagLi.children[1];
    const tag = tagA.textContent;
    const tagFormatted = tag.replaceAll(" ", "_");
    if (tagsTable[tagFormatted] && tagsTable[tagFormatted] !== "UNTRANSLATED")
      tagA.textContent = `[${tagsTable[tagFormatted]}] ${tag}`;
  };
  const translateTags = async () => {
    const generalTagsTable = await (await fetch(generalTagsTableUrl)).json();
    const copyrightTagsTable = await (await fetch(copyrightTagsTableUrl)).json();
    const tagLis = document.querySelectorAll("#tag-sidebar li");
    tagLis.forEach((tagLi) => {
      var _a;
      const tagType = (_a = tagLi.className.match(/tag-type-(\w+)/)) == null ? void 0 : _a[1];
      switch (tagType) {
        case "general":
          translateTag(tagLi, generalTagsTable);
          break;
        case "copyright":
          translateTag(tagLi, copyrightTagsTable);
          break;
      }
    });
  };
  const yande = {
    regexp: /yande.re/,
    handler: async () => {
      showImageSize();
      bindClickToLoadRawImage();
      showImageHidden();
      addTagTypeHeader();
      translateTags();
    }
  };
  const websites = [
    yande
  ];
  websites.some((website) => {
    if (website.regexp.test(window.location.href)) {
      website.handler();
      return true;
    }
    return false;
  });

})();