// ==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
// @downloadURL none
// ==/UserScript==
// 使用者須先登入yahoo才可檢舉(未登入就無法檢舉留言)
// 有兩種方式檢舉, 會先優先使用第二種方式, 如無開啟使用者的所有評論歷史視窗的話, 則會使用第一種方式(關鍵字可以依據自己需要修改腳本儲存,接著重整網頁即可)
// 1.自動找關鍵字檢舉(只在該則新聞頁面找所有評論的使用者名稱是否含關鍵字, 有的話自動檢舉),
// 2.須先手動點擊某個特定評論的使用者頭像, 接著會跳出該使用者的所有評論歷史視窗, 接著點自動檢舉按鈕就會針對該使用者所有評論直接自動檢舉
// 第二種方式建議單獨開個網頁視窗在背景運行, 以免大量檢舉影響正常瀏覽網頁速度
var keywords = ["君品苑", "燒香燒金紙", "邱萍如", "身障", "家暴", "暴力", "殘疾"];
(function() {
'use strict';
var $ = window.jQuery;
$('[id^=community-bar]').first().prepend('');
$('[id^=ABU-Video-CanvassApplet]').first().prepend('');
//$("#community-bar-container").prepend('');
$("#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));
}