您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
View more replies and remove shit from twitter
当前为
- // ==UserScript==
- // @name Twitter: view more replies and remove shit
- // @description View more replies and remove shit from twitter
- // @author MK
- // @namespace max44
- // @homepage https://gf.qytechs.cn/en/users/309172-max44
- // @include https://twitter.com/*
- // @include https://mobile.twitter.com/*
- // @version 1.2.4
- // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
- // @grant none
- // @run-at document-idle
- // ==/UserScript==
- (function () {
- 'use strict';
- function findAndClick(selector, observer) {
- const elem = document.querySelector(selector);
- if (elem != null) {
- elem.click();
- observer.disconnect();
- }
- }
- function isLink(element) {
- return element.getAttribute("role") === "link";
- }
- function isParentLink(element, parentN) {
- if (isLink(element)) {
- return true;
- }
- for (let i = 0; i <= parentN; i++) {
- element = element.parentElement;
- if (isLink(element)) {
- return true;
- }
- }
- return false;
- }
- const config = {childList: true, subtree: true};
- // Replies list
- const repliesSelector = "[aria-labelledby^='accessible-list'][role='region'][class='css-1dbjc4n']";
- // "View more replies" button on preview tweets
- const viewMoreSelector = "[href*='i/status/']" +
- "[role='link']" +
- "[data-focusable='true']" +
- "[class^='css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-1ny4l3l'][class$='r-o7ynqc r-6416eg'] " +
- "div span";
- // "Show additional replies, including those that may contain offensive content" button
- const offensiveSelector = "div[role='button']" +
- "[tabindex='0']" +
- "[class^='css-18t94o4 css-1dbjc4n r-1niwhzg r-42olwf r-sdzlij r-1phboty r-rs99b7'][class$='r-o7ynqc r-6416eg r-lrvibr'] " +
- "div > span > span";
- // "Show replies" and "Show more replies" buttons
- const moreRepliesSelector = "div[role='button']" +
- "[tabindex='0']" +
- "[class='css-18t94o4 css-1dbjc4n r-1777fci r-1pl7oy7 r-1ny4l3l r-o7ynqc r-6416eg r-13qz1uu'] " +
- "div > div > span";
- //"div[class='css-1dbjc4n r-16y2uox r-1wbh5a2 r-1777fci'] " +
- //"div[class^='css-901oao'][class$='r-qvutc0'][dir='auto'] " +
- //"span[class^='css-901oao css-16my406'][class$='r-bcqeeo r-qvutc0']";
- setTimeout(function () {
- // For preview tweets, tweets that are opened from external sources may has a special format where only a few replies are shown and the rest are replaced
- // by a "More Tweets" section that contains popular tweets from random accounts that may or may not be related to the previewed tweet
- const previewSelector = "[data-testid='primaryColumn'] " +
- "[class='css-1dbjc4n r-yfoy6g r-18bvks7 r-1ljd8xs r-13l2t4g r-1phboty r-1jgb5lz r-11wrixw r-61z16t r-1ye8kvj r-13qz1uu r-184en5c']";
- const preview = document.querySelector(previewSelector);
- if (preview != null) {
- const viewMore = document.querySelector(viewMoreSelector);
- if (viewMore != null) {
- viewMore.click();
- }
- }
- }, 3000);
- const rootCallback = function (mutationsList, observer) {
- //Remove shit
- $( "span:contains('Who to follow')" ).parent().parent().parent().parent().parent().hide().next().hide().next().hide().next().hide().next().hide().next().hide();
- $( "span:contains('Topics to follow')" ).parent().parent().parent().parent().parent().hide().next().hide().next().hide().next().hide();
- //$( "span:contains('Who to follow')" ).parent().parent().parent().parent().parent().remove();
- //$( "span:contains('Topics to follow')" ).parent().parent().parent().parent().parent().parent().remove();
- //destroys content on mobile browser: $( "section[aria-labelledby='accessible-list-0'][role='region']" ).parent().parent().remove();
- $( "article span:contains('Promoted')" ).parent().parent().parent().parent().parent().hide().next().hide().next().hide().next().hide();
- $( "span:contains('Promoted by')" ).parent().parent().parent().parent().hide().next().hide().next().hide().next().hide();
- $( "span:contains('Promoted Tweet')" ).parent().parent().parent().parent().remove();
- $( "span:contains('Promoted')" ).parent().parent().parent().parent().parent().remove();
- $( "span:contains('Trends for you')" ).parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().remove();
- $( "span:contains('Expand your timeline with Topics')" ).parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().remove();
- $( "span:contains('Discover new Lists')" ).parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().remove();
- //-----$( "div[aria-label='Set as not interested']" ).parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().remove();
- $( "div[aria-label='Set as not interested']" ).parent().parent().parent().parent().parent().parent().parent().parent().remove();
- $( "span:contains('Open app')" ).parent().parent().parent().remove();
- const repliesNode = document.querySelector(repliesSelector);
- if (repliesNode != null) {
- const offensiveObserver = new MutationObserver(offensiveCallback);
- const moreRepliesObserver = new MutationObserver(moreRepliesCallback);
- offensiveObserver.observe(repliesNode, config);
- moreRepliesObserver.observe(repliesNode, config);
- }
- };
- const offensiveCallback = function (mutationsList, observer) {
- findAndClick(offensiveSelector, observer);
- };
- const moreRepliesCallback = function (mutationsList, observer) {
- findAndClick(moreRepliesSelector, observer);
- /*const moreRepliesNodes = document.querySelectorAll(moreRepliesSelector);
- for (let elem of moreRepliesNodes) {
- if (isParentLink(elem, 4)) {
- continue;
- }
- elem.click();
- }*/
- };
- const rootNode = document.querySelector("#react-root");
- if (rootNode != null) {
- const rootObserver = new MutationObserver(rootCallback);
- rootObserver.observe(rootNode, config);
- }
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址