Greasy Fork

Greasy Fork is available in English.

Yahoo新聞留言自動檢舉腳本

檢舉特定使用者大量垃圾留言!

目前为 2023-04-09 提交的版本,查看 最新版本

// ==UserScript==
// @name         Yahoo新聞留言自動檢舉腳本
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  檢舉特定使用者大量垃圾留言!
// @author       hugh
// @match        https://tw.news.yahoo.com/*
// @match        https://tw.tv.yahoo.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=yahoo.com
// @require      http://code.jquery.com/jquery-latest.js
// @grant        none
// @license      MIT
// ==/UserScript==

// 使用者須先登入yahoo才可檢舉(未登入就無法檢舉留言)
// 有兩種方式檢舉, 會先優先使用第二種方式, 如無開啟使用者的所有評論歷史視窗的話, 則會使用第一種方式(關鍵字可以依據自己需要修改腳本儲存,接著重整網頁即可)
// 1.自動找關鍵字檢舉(只在該則新聞頁面找所有評論的使用者名稱是否含關鍵字, 有的話自動檢舉),
// 2.須先手動點擊某個特定評論的使用者頭像, 接著會跳出該使用者的所有評論歷史視窗, 接著點自動檢舉按鈕就會針對該使用者所有評論直接自動檢舉
// 第二種方式建議單獨開個網頁視窗在背景運行, 以免大量檢舉影響正常瀏覽網頁速度

var keywords = ["君品苑", "燒香燒金紙", "邱萍如", "身障", "家暴", "暴力", "殘疾"];

(function() {
    'use strict';
    var $ = window.jQuery;
    $('[id^=community-bar]').first().prepend('<input type="button" value="自動檢舉" id="auto_report">');
    $('[id^=ABU-Video-CanvassApplet]').first().prepend('<input type="button" value="自動檢舉" id="auto_report">');
    //$("#community-bar-container").prepend('<input type="button" value="自動檢舉" id="auto_report">');
    $("#auto_report").click(function() {
        var iframe = $('[id^=community-bar][id$=iframe]')[0];
        var btns = iframe.contentWindow.document.getElementsByTagName("BUTTON");
        var found = null;
        for (var i = 0; i < btns.length; i++) {
            if (btns[i].textContent.includes("檢視留言")) {
                found = btns[i];
                break;
            }
        }
        if (found != null) {
            found.click();
            sleep(2000).then(showmore);
        }
        else {
            sleep(2000).then(showmore);
        }
    });
})();

function showmore() {
    var $ = window.jQuery;
    var iframe = $('[id^=community-bar][id$=iframe]')[0];
    var btns = iframe.contentWindow.document.getElementsByTagName("BUTTON");
    var uc_exist = iframe.contentWindow.document.getElementsByClassName("user-comments");
    var found = null;
    var idx = 0;
    for (idx = 0; idx < btns.length; idx++) {
        if (btns[idx].textContent.includes("顯示較多內容")) {
            found = btns[idx];
            break;
        }
    }

    if (found != null) {
        if (uc_exist.length == 0) {
            autoreport_keywords();
        }
        else {
            autoreport_uc();
        }
        found.click();
        sleep(3000).then(showmore);
    }
    else {
        if (uc_exist.length == 0) {
            autoreport_keywords();
        }
        else {
            autoreport_uc();
        }
    }
}

function autoreport_keywords() {
    var $ = window.jQuery;
    var iframe = $('[id^=community-bar][id$=iframe]')[0];
    var comments = iframe.contentWindow.document.getElementsByTagName("LI");
    var idx = 0;
    var idx_k = 0;
    for (idx = 0; idx < comments.length; idx++) {
        var comment = comments[idx];
        if (comment.className.includes("comment")) {
            var username = comment.innerText.split(/\n/)[0];
            for (idx_k = 0; idx_k < keywords.length; idx_k++) {
                if (username.includes(keywords[idx_k])) {
                    //console.log(comment.innerText);
                    var ob = comment.getElementsByClassName("overflow-button")[0];
                    ob.click();
                    var fbf = comment.getElementsByClassName("flyout-button-flag")[0];
                    fbf.click();
                    var inputs = comment.getElementsByTagName("input");
                    for (var i = 0; i < inputs.length; i++) {
                        if (inputs[i].defaultValue.includes("疑似垃圾內容")) {
                            inputs[i].click();
                            var btns = comment.getElementsByTagName("BUTTON");
                            for (var b = 0; b < btns.length; b++) {
                                if (btns[b].textContent == "完成") {
                                    btns[b].click();
                                    break;
                                }
                            }
                        }
                    }
                    break;
                }
            }
        }
    }
}

function autoreport_uc() {
    var $ = window.jQuery;
    var iframe = $('[id^=community-bar][id$=iframe]')[0];
    var comments = iframe.contentWindow.document.getElementsByTagName("LI");
    var idx = 0;
    for (idx = 0; idx < comments.length; idx++) {
        var comment = comments[idx];
        if (comment.className.includes("comment")) {
            // 如果是user-comments的子節點的話, 直接檢舉
            if (comment.closest("div.user-comments") != null) {
                // 有可能是剛點完檢舉的comment, ob會找不到
                var ob = comment.getElementsByClassName("overflow-button")[0];
                if (ob != null) {
                    ob.click();
                    var fbf = comment.getElementsByClassName("flyout-button-flag")[0];
                    fbf.click();
                    var inputs = comment.getElementsByTagName("input");
                    for (var i = 0; i < inputs.length; i++) {
                        if (inputs[i].defaultValue.includes("疑似垃圾內容")) {
                            inputs[i].click();
                            var btns = comment.getElementsByTagName("BUTTON");
                            for (var b = 0; b < btns.length; b++) {
                                if (btns[b].textContent == "完成") {
                                    btns[b].click();
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

function sleep(time) {
    return new Promise(resolve => setTimeout(resolve, time));
}