您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
尝试还原萌娘百科部分一方通行所屏蔽的内容
- // ==UserScript==
- // @name NotSoSharp
- // @namespace https://github.com/gui-ying233/NotSoSharp
- // @version 1.5.1
- // @description 尝试还原萌娘百科部分一方通行所屏蔽的内容
- // @author 鬼影233
- // @license MIT
- // @match zh.moegirl.org.cn/*
- // @match mzh.moegirl.org.cn/*
- // @match mobile.moegirl.org.cn/*
- // @match commons.moegirl.org.cn/*
- // @icon https://img.moegirl.org.cn/common/b/b7/%E5%A4%A7%E8%90%8C%E5%AD%97.svg
- // @supportURL https://github.com/gui-ying233/NotSoSharp/issues
- // ==/UserScript==
- (async () => {
- "use strict";
- if (
- new URLSearchParams(window.location.search).get("safemode") ||
- document.currentScript ||
- !document.documentElement.innerText.includes("\u266F")
- )
- return;
- let pageName = "";
- await new Promise(resolve => {
- const intervId = setInterval(() => {
- window.onload = (() => {
- if ([typeof mw, typeof wgULS].includes("undefined")) return;
- clearInterval(intervId);
- resolve();
- })();
- }, 50);
- });
- switch (mw.config.get("wgNamespaceNumber")) {
- case 2:
- case 3:
- pageName = wgULS("用户", "用戶");
- break;
- case 10:
- case 11:
- pageName = "模板";
- break;
- case 14:
- case 15:
- pageName = wgULS("分类", "分類");
- break;
- default:
- break;
- }
- switch (mw.config.get("wgNamespaceNumber")) {
- case 1:
- case 3:
- case 5:
- case 9:
- case 11:
- case 13:
- case 15:
- pageName += wgULS("讨论", "討論");
- break;
- default:
- break;
- }
- pageName += `${pageName ? ":" : ""}${mw.config.get("wgTitle")}`;
- const r = (a, b, c = pageName) => {
- if (a[b].includes("\u266F") && a[b] !== "幻影异闻录♯FE") a[b] = c;
- };
- r(document.getElementById("firstHeading"), "innerText");
- r(document, "title", `${pageName} - 萌娘百科_万物皆可萌的百科全书`);
- switch (mw.config.get("skin")) {
- case "vector":
- document.body
- .querySelectorAll(".toctext")
- .forEach(e =>
- r(e, "innerText", decodeURI(e.parentElement.hash.slice(1)))
- );
- break;
- case "moeskin":
- default:
- document.body
- .querySelectorAll(".moe-toc-tree.root a.anchor-link")
- .forEach(e =>
- r(e, "title", decodeURI(e.hash.replaceAll(".", "%")))
- );
- document.body
- .querySelectorAll(".moe-toc-tree.root a.anchor-link > .text")
- .forEach(e =>
- r(
- e,
- "innerText",
- decodeURI(
- e.parentElement.hash.replaceAll(".", "%")
- ).slice(1)
- )
- );
- break;
- }
- document.body
- .querySelectorAll(".mw-headline")
- .forEach(e => r(e, "innerText", decodeURI(e.id)));
- document.body.querySelectorAll("a:not(#catlinks a)").forEach(e => {
- if (
- e.innerText.includes("\u266F") &&
- (new Set(e.innerHTML).size === 1 ||
- e.classList.contains("mw-changeslist-title") ||
- e.classList.contains("mw-userlink"))
- )
- e.innerText =
- new URL(e).searchParams.get("title") ||
- e.getAttribute("data-username") ||
- decodeURI(e.pathname).slice(1);
- });
- document.body.querySelectorAll(".mw-selflink").forEach(e => {
- switch (e.innerHTML.length) {
- case pageName.length:
- r(e, "innerText");
- break;
- case mw.config.get("wgPageName").length:
- r(e, "innerText", mw.config.get("wgPageName"));
- break;
- }
- });
- document.body.querySelectorAll("#catlinks a").forEach(e => {
- if (e.innerText.includes("\u266F") && new Set(e.innerHTML).size === 1)
- e.innerText = decodeURI(e.pathname).slice(10);
- });
- document.body.getElementsByTagName("a").forEach(e => {
- if (!e.innerHTML.includes("\u266F") || e.innerHTML !== e.innerText)
- return;
- let url;
- switch (e.className) {
- case "new":
- url = new URL(e).searchParams.get("title");
- break;
- case "external":
- case "external free":
- case "external text":
- url = e.href;
- break;
- default:
- url = e.pathname.slice(1);
- break;
- }
- url = decodeURI(url);
- if (e.classList.contains("external")) url = url.replace(/\/$/, "");
- if (url.length !== e.innerText.length) return;
- const regexp = `${e.innerText
- .replaceAll(".", "\\.")
- .replaceAll("\u266F", ".")}`;
- if (url.match(regexp)) e.innerText = url.match(regexp)[0];
- });
- })();