您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hide bullshit articles on xda-dev home page.
- // ==UserScript==
- //
- // @name Better XDA
- // @version 1.0
- // @run-at document-end
- // @license LGPLv3
- // @homepage localhost
- // @description Hide bullshit articles on xda-dev home page.
- // @match https://www.xda-developers.com/*
- // @icon https://www.xda-developers.com/public/build/images/favicon-48x48.8f822f21.png
- // @author Bahha
- // @namespace https://greasyfork.org/users/186498
- // ==/UserScript==
- //wait for page to load
- const delay = ms => new Promise(res => setTimeout(res, ms));
- // specify authors to remove
- var removedAuthors = ["Mahmoud Itani", "Adam Conway", "Timi Cantisano", "Rich Woods","João Carrasqueira"]; //add your authors here
- // get list of authors.
- const waitAndGetData = async () => {
- //trigger infinitescroll, because it doesn't work when aritcles are removed the first time. taken from xda js file.
- (r = document.getElementById("home-waypoint")) &&
- null != window.infiniteScrollUrl &&
- null != window.infiniteScrollMax &&
- null != window.infiniteScrollArticlesRequested &&
- (console.log("home infinite scroll"),
- new LatestBrowseClip({
- ajaxUrl: window.infiniteScrollUrl,
- waypointElement: r,
- divSection: document.getElementsByClassName(
- window.infiniteScrollDivSectionClass
- )[0],
- totalNumClips: window.infiniteScrollMax,
- numClipsRequested: window.infiniteScrollArticlesRequested,
- animLoadinId: "infinite-loader",
- archivePath: window.infiniteScrollArchivePathUrl,
- excludedIds: window.infiniteScrollExcludedIds,
- divClassName: window.infiniteScrollListingClass,
- showMoreButton: !0,
- }).wayPointTrigger());
- //wait 2 sec for page to load
- await delay(2000);
- // get athors
- var authors = document.getElementsByClassName("bc-author");
- // counter for removed articles
- var removed = 0 ;
- // cycle through authors and remove matched ones or rather hide them, you can use remove() instead of display:none
- for(var i = 0 ; i < authors.length ; i++){
- // check for an author match
- if(removedAuthors.includes(authors[i].text)){
- //console.log(authors[i].text);
- // hide articles
- authors[i].closest("article").style.display = "none";
- console.log(authors[i].text + " " +i + " removed");
- removed++;
- }
- }
- console.log("removed " + removed);
- };
- // throtlle sroll event for performance
- var throttleTimer;
- const throttle = (callback, time) => {
- if (throttleTimer) return;
- throttleTimer = true;
- setTimeout(() => {
- callback();
- throttleTimer = false;
- }, time);
- };
- // re-run code on scroll
- const handleInfiniteScroll = () => {
- throttle(() => {
- console.log("you scrolled")
- waitAndGetData();
- // wait for 6 seconds. change it to your preference.
- },6000);
- };
- //call function when page loads the first time
- waitAndGetData();
- // call function on scroll event detection.
- window.addEventListener("scroll", handleInfiniteScroll);