创建一个从YouTube中删除某些评论的用户脚本

时间:2018-05-04 18:56:05

标签: javascript youtube comments userscripts

当人们评论YouTube视频他们正在观看2018年的视频或现在的任何一年时,或者问其他人也这样做时,我觉得非常恼火。这样的评论通常得到很多喜欢,因此保持在顶部附近。所以我开始制作一个删除所有这些评论的脚本。我制作了必要的代码并使用Chrome控制台成功进行了测试。

问题是,我不知道如何使其保持运行/活动,因此无论何时加载新评论或刷新页面,此类评论都会自动过滤掉。我使用了 window.setTimeout ,但它只在已加载注释时运行。不适用于新加载的评论。

感谢任何帮助。以下是我的剧本:

// ==UserScript==
// @name         YouTube Comment Cleaner
// @namespace    iamMG
// @include      *://www.youtube.com/*
// @description  Remove keywords from YouTube comments.
// @author       iamMG
// @license      MIT
// @version      1.0
// ==/UserScript==

//Some code to detect when the element with id 'watch-discussion' becomes available.
//It is the parent element which contains all the comments.
window.setTimeout(function() {
    var expr = /20(15|16|17|18|19|20)/; //The text I want to detect in comments
    var commentText = document.getElementsByClassName('comment-renderer-text-content'); //The text element within each comment
    for (var i =0; i<commentText.length; i++) {
        if (expr.test(commentText[i].innerText)) {      //tests for the substring inside the comment text.
            var elem = commentText[i].parentNode.parentNode.parentNode.parentNode;  //elem is the actual comment element.
            console.log('removed '+ (i+1) + 'th comment');
            elem.parentNode.removeChild(elem);
            i--;
        }
    }
}, 4000)

1 个答案:

答案 0 :(得分:0)

最好将其作为扩展名编写。您可以使用chrome.alarms来安排代码。如果使用websockets添加新注释,还要检测DOM更改以确定是否添加了新注释。