您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
hide articles of specific users on the front page
当前为
// ==UserScript== // @name MyFigureCollection Article Blocker // @namespace http://tampermonkey.net/ // @version 0.1 // @description hide articles of specific users on the front page // @author IxianNavigator // @match https://myfigurecollection.net/ // @grant none // ==/UserScript== (function() { 'use strict'; const blockedUsers = localStorage.blockedUsers ? JSON.parse(localStorage.blockedUsers) : []; Array.from(document.querySelectorAll('.stamp-anchor > a[href*="myfigurecollection.net/blog/"')).forEach((aElem) => { const url = aElem.getAttribute('href'); if (!url.match(/myfigurecollection\.net\/blog\/\d+$/)) { return; } const blogPostListItem = aElem.closest("li.listing-item"); if (!blogPostListItem) { return; } fetch(url).then((response) => response.text()).then((responseText) => { const regex = /<a class="anchor user\-anchor user-access-rank-(\d+) user-honorific-rank-(\d+)" href="https:\/\/myfigurecollection\.net\/profile\/(\S+)">/; const match = responseText.match(regex); if (!match) { console.log('no-match', url); return; } const userName = match[3]; console.log('match', userName); if (blockedUsers.includes(userName)) { blogPostListItem.setAttribute("style", "display: none;"); return; } const userSpan = document.createElement('span'); userSpan.innerHTML = userName; const blockButton = document.createElement('span'); blockButton.innerHTML = "×"; blockButton.setAttribute("title", "block user"); blockButton.setAttribute("role", "button"); blockButton.setAttribute("style", "cursor: pointer;"); blockButton.classList.add("block-user-button"); blockButton.addEventListener("click", function() { blockedUsers.push(userName); localStorage.blockedUsers = JSON.stringify(blockedUsers); blogPostListItem.setAttribute("style", "display: none;"); addBlockedUsersList(); }); const metaContainer = blogPostListItem.querySelector(".stamp-meta"); metaContainer.appendChild(document.createTextNode(" • ")); metaContainer.appendChild(userSpan); metaContainer.appendChild(document.createTextNode(" • ")); metaContainer.appendChild(blockButton); }); }); function addBlockedUsersList() { const existingBlockedUsersList = document.querySelector(".blocked-users-list"); if (existingBlockedUsersList) { existingBlockedUsersList.remove(); } const blockedUsersList = document.createElement("div"); blockedUsersList.classList.add("blocked-users-list"); document.querySelector(".copyright").after(blockedUsersList); blockedUsers.forEach((userName, i) => { const userSpan = document.createElement("span"); userSpan.setAttribute("role", "button"); userSpan.setAttribute("style", "cursor: pointer;"); userSpan.innerHTML = userName; userSpan.addEventListener("click", function() { const index = blockedUsers.indexOf(userName); if (index > -1) { blockedUsers.splice(index, 1); } localStorage.blockedUsers = JSON.stringify(blockedUsers); addBlockedUsersList(); }); blockedUsersList.appendChild(userSpan); if (i < blockedUsers.length - 1) { blockedUsersList.appendChild(document.createTextNode(" • ")); } }); } addBlockedUsersList(); })();