您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Edit all comments with randomly selected words/phrases
// ==UserScript== // @name Reddit Overwrite Comments ✍️ // @author Agreasyforkuser // @namespace Reddit // @description Edit all comments with randomly selected words/phrases // @match https://old.reddit.com/user/* // @version 1.0 // @icon https://www.redditstatic.com/desktop2x/img/favicon/android-icon-192x192.png // @run-at document-end // @license MIT // ==/UserScript== // Define a list of phrases here var words = ["wow", "cool", "nice"]; var commentstabpage = /https:\/\/.*\.reddit\.com\/user.*\/comments\/.*/; if (commentstabpage.test(location.href)) { to_delete = []; num_user_comments = 0; deleted = 0; span = ''; user = ''; delete_comment = function (thing_id, from_delete_all) { try { var thing = document.querySelector("input[name='thing_id'][value='" + thing_id + "']"); var status = thing.parentNode.querySelector("div.usertext-edit > div.bottom-area > div.usertext-buttons > span.status").innerHTML; var error = false; if ((status.indexOf("error") != -1) || (status.indexOf("submitting") != -1)) { error = true; } else { deleted++; } if (from_delete_all) { if (to_delete.length != 0) { span.innerHTML = "OVERWRITING COMMENT " + (deleted + 1) + " OF " + num_user_comments; var next_thing_id = to_delete.pop(); setTimeout(overwrite_comment, 2000, next_thing_id, from_delete_all); } else { if (num_user_comments - deleted != 0) { num_user_comments = num_user_comments - deleted; UpdateDeleteAllSpan(); span.innerHTML = "<span>Failed to overwrite " + num_user_comments + " comments</span><br>" + span.innerHTML; } else span.style.display = 'none'; } } else { if (error) alert("Failure"); else num_user_comments--; UpdateDeleteAllSpan(); } return (error ? -1 : 0); } catch (er) { alert(er); if (from_delete_all) location.reload(); return -99; } } overwrite_comment = function (thing_id, from_delete_all) { try { var edit_form = document.querySelector("input[name='thing_id'][value='" + thing_id + "']").parentNode; edit_form.querySelector("div.usertext-edit > div.bottom-area > div.usertext-buttons > button.cancel").click(); var edit_btn = edit_form.parentNode.querySelector("ul > li > a.edit-usertext"); if (edit_btn) edit_btn.click(); var edit_textbox = edit_form.querySelector("div.usertext-edit > div > textarea"); var repl_str = ''; var randomIndex = Math.floor(Math.random() * words.length); edit_textbox.value = words[randomIndex]; edit_form.querySelector("div.usertext-edit > div.bottom-area > div.usertext-buttons > button.save").click(); setTimeout(delete_comment, 2000, thing_id, from_delete_all); return 0; } catch (e) { alert("Error with form: " + e); return -99; } }; delete_all = function () { try { num_user_comments = 0; deleted = 0; to_delete = []; var comments = document.querySelectorAll("a.author"); for (var i = 0; i < comments.length; i++) { if (comments[i].innerHTML != user) continue; var thing_id = comments[i].parentNode.parentNode.querySelector("form.usertext > input[name='thing_id']").value; if (to_delete.indexOf(thing_id) == -1) { to_delete.push(thing_id); num_user_comments++; } } span.innerHTML = "TRYING TO Overwrite COMMENT 1 OF " + num_user_comments; var next_thing_id = to_delete.pop(); overwrite_comment(next_thing_id, true); } catch (e) { alert("YOU ARE MOST LIKELY NOT ON THE COMMENTS TAB! /n/n Error trying to delete all your comments.\nError: " + e + " Stack:" + e.stack); location.reload() } }; function add_delete_links(ev) { user = document.querySelector("span.user > a:not(.login-required)").innerHTML; if (!user) { return; } var comments = document.querySelectorAll("a.author"); num_user_comments = 0; for (var i = 0; i < comments.length; i++) { if (comments[i].innerHTML != user) continue; try { var main_parent = comments[i].parentNode.parentNode; var thing_id = main_parent.querySelector("form > input[name='thing_id']").value; var list = main_parent.querySelector("ul.flat-list"); if (list.querySelector("li.secure_delete")) continue; num_user_comments++; var addedlink = document.createElement("li"); addedlink.setAttribute('class', 'secure_delete'); var dlink = document.createElement("a"); dlink.setAttribute('class', 'bylink secure_delete'); dlink.setAttribute('onClick', 'javascript:var ret = overwrite_comment("' + thing_id + '", false);'); dlink.setAttribute('href', 'javascript:void(0)'); addedlink.appendChild(dlink); main_parent.querySelector("ul.flat-list").appendChild(addedlink); } catch (e) { } } span = document.createElement("span"); span.setAttribute('class', 'secure_delete_all'); UpdateDeleteAllSpan(); } deleteConfirm = function () { if (confirm('Are you sure you want to overwrite all comments with "' + words + '" ?')) { delete_all(); } } function UpdateDeleteAllSpan() { if (num_user_comments) { var dlink = document.createElement("a"); dlink.setAttribute('class', 'bylink'); dlink.setAttribute('onClick', 'javascript:return deleteConfirm()'); dlink.setAttribute('href', 'javascript:void(0)'); dlink.appendChild(document.createTextNode('OVERWRITE ALL visible comments on this page with "' + words + '"')); dlink.style.border = 'none'; dlink.style.fontWeight = 'bold'; dlink.style.color = 'white'; span.appendChild(dlink); span.style.backgroundColor = 'red'; span.style.borderRadius = '20px'; span.style.padding = '5px'; span.style.display = 'inline-table'; var menuarea = document.querySelector("div.menuarea"); var firstChild = menuarea.firstChild; menuarea.insertBefore(span, firstChild.nextSibling); } else if (span != null) { span.style.display = 'none'; } } add_delete_links(); document.addEventListener("DOMContentLoaded", add_delete_links, false); } else { // Place a reminder var alink = document.createElement('a'); var overviewURL = location.href; var commentstabURL = overviewURL + 'comments/'; alink.href = commentstabURL; alink.textContent = 'go to comments-tab to overwrite✍️'; alink.style.color = 'white'; alink.style.backgroundColor = 'black'; alink.style.padding = '5px'; alink.style.fontWeight = 'bold'; alink.style.borderRadius = '20px'; alink.style.display = 'inline-table'; document.querySelector('.menuarea').appendChild(alink); }