🏠 Home 

Greasy Fork is available in English.

自研 - Pixiv(予素) - 排行榜移除非首次登场作品

按下菜单中得选项后,自动加载排行榜所有作品并移除非首次登场作品。

// ==UserScript==
// @name               自研 - Pixiv(予素) - 排行榜移除非首次登场作品
// @name:en_US         Self-made - Pixiv - Ranking remove non-debut artworks
// @description        按下菜单中得选项后,自动加载排行榜所有作品并移除非首次登场作品。
// @description:en_US  After selecting option from the menu, automatically load all works from the leaderboard and remove those that are not debut appearances.
// @version            1.0.2
// @author             CPlayerCHN
// @license            MulanPSL-2.0
// @namespace          https://www.gitlink.org.cn/CPlayerCHN
// @match              https://www.pixiv.net/ranking.php
// @icon               https://pixiv.net/favicon.ico
// @grant              GM_registerMenuCommand
// @grant              GM_unregisterMenuCommand
// @run-at             document-idle
// @noframes
// ==/UserScript==
(function() {
'use strict';
// 定义「等待元素」「前往页尾」「移除」函数。
function waitForElm(selector) {
// https://stackoverflow.com/questions/5525071/how-to-wait-until-an-element-exists
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
observer.disconnect();
resolve(document.querySelector(selector));
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
};
function toEnd(slowly = false) {
// 如果第五百名作品被加载,就停止
if(document.querySelector('[href="#500"]')) { return };
// 定义「移动」非立即初始化读写变量;如果「慢速移动」参数启用,就移动 100 像素,否则就直接到底
let move = document.documentElement.scrollHeight;
if(slowly) { move = 100 };
console.log(move)
// 滚动到页尾
document.documentElement.scrollTop += move;
// 每 0.1 秒循环一次本函数
setTimeout(() => {
toEnd(slowly);
}, 100);
}
function remove() {
// 卸载所有菜单命令
GM_unregisterMenuCommand(menu_fastRemove);
GM_unregisterMenuCommand(menu_remove);
// 等待第 500 名作品被加载
waitForElm('[href="#500"]').then((elm) => {
// 移除所有非首次登场作品并移动至页首
document.querySelectorAll('.rank p:nth-child(2) a').forEach((elm) => {
elm.parentElement.parentElement.parentElement.remove();
});
document.documentElement.scrollTop = 0;
});
}
// 定义「快速获取所有作品基础信息并隐藏非首次登场作品」「加载所有作品并隐藏非首次登场作品。」菜单命令
let menu_fastRemove = GM_registerMenuCommand("快速获取所有作品基础信息并隐藏非首次登场作品。", () => {
// 执行「前往页尾」「移除」函数
toEnd();
remove();
}),
menu_remove = GM_registerMenuCommand("加载所有作品并隐藏非首次登场作品。", () => {
// 执行「前往页尾」「移除」函数
toEnd(true);
remove();
});
})();