🎉 欢迎访问GreasyFork.Org 镜像站!本镜像站由公众号【爱吃馍】搭建,用于分享脚本。联系邮箱📮

Greasy fork 爱吃馍镜像

Reddit Secure Delete

Securely delete your reddit posts.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

// ==UserScript==
// @name        Reddit Secure Delete
// @namespace   Reddit
// @include     https://*.reddit.com/*
// @include     http://*.reddit.com/*
// @version     1
// @description Securely delete your reddit posts.
// ==/UserScript==

unsafeWindow.to_delete = [];
unsafeWindow.num_user_comments = 0;
unsafeWindow.deleted = 0;
unsafeWindow.span = '';
unsafeWindow.user = '';


unsafeWindow.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 {
		var del_form = thing.parentNode.parentNode.querySelector("ul.buttons > li > form.del-button");
		unsafeWindow.toggle(del_form.querySelector("span.main > a"));
		del_form.querySelector("span.error > a.yes").click();
		unsafeWindow.deleted++;
	}

	if (from_delete_all){
		if (unsafeWindow.to_delete.length != 0)
		{
			unsafeWindow.span.innerHTML = "TRYING TO DELETE COMMENT " + (unsafeWindow.deleted + 1) + " OF " + unsafeWindow.num_user_comments;
			var next_thing_id = unsafeWindow.to_delete.pop();
			unsafeWindow.setTimeout(unsafeWindow.overwrite_comment, 2000, next_thing_id, from_delete_all);
		}
		else
		{
			if (unsafeWindow.num_user_comments - unsafeWindow.deleted != 0){
				unsafeWindow.num_user_comments = unsafeWindow.num_user_comments - unsafeWindow.deleted;
				UpdateDeleteAllSpan();
				unsafeWindow.span.innerHTML = "<span>Failed to delete " + unsafeWindow.num_user_comments + " comments</span><br>" + unsafeWindow.span.innerHTML;
			} else
				unsafeWindow.span.style.display = 'none';

		}
	} else {
		if (error)
			alert("Failed to overwrite your comment. Delete aborted.");
		else
			unsafeWindow.num_user_comments--;
		UpdateDeleteAllSpan();
	}
	return (error ? -1 : 0);
 }catch(er){
	alert(er);
	if (from_delete_all) unsafeWindow.location.reload();
	return -99;
 }
}

unsafeWindow.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 chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz><.-,+!@#$%^&*();:[]~";
	for(var x = 0; x < edit_textbox.value.length; x++){
		if (edit_textbox.value.substr(x,1) == '\n'){
			repl_str += '\n';
		}else{
			var rnum = Math.floor(Math.random() * chars.length);
			repl_str += chars.charAt(rnum, 1);
		}
	}
	edit_textbox.value = repl_str;
	edit_form.querySelector("div.usertext-edit > div.bottom-area > div.usertext-buttons > button.save").click();
	unsafeWindow.setTimeout(unsafeWindow.delete_comment, 2000, thing_id, from_delete_all);
	return 0;
 }catch(e){
	alert("Error interacting with overwrite form: " + e); 
	return -99;
 }
};


unsafeWindow.delete_all = function()
{
 try{
	unsafeWindow.num_user_comments = 0;
	unsafeWindow.deleted = 0;
	unsafeWindow.to_delete = [];
	var comments = document.querySelectorAll("a.author");
	for (var i = 0; i < comments.length; i++)
	{
		if (comments[i].innerHTML != unsafeWindow.user) continue;
		var thing_id = comments[i].parentNode.parentNode.querySelector("form.usertext > input[name='thing_id']").value;
		if (unsafeWindow.to_delete.indexOf(thing_id) == -1){
			unsafeWindow.to_delete.push(thing_id);
			unsafeWindow.num_user_comments++;
		}
	}
	unsafeWindow.span.innerHTML = "TRYING TO DELETE COMMENT 1 OF " + unsafeWindow.num_user_comments;
	var next_thing_id = unsafeWindow.to_delete.pop();
	unsafeWindow.overwrite_comment(next_thing_id, true);
 } catch(e){
	alert("Error trying to delete all your comments.\nError: " + e); 
	unsafeWindow.location.reload()
 }
};

function add_delete_links(ev)
{
	unsafeWindow.user = document.querySelector("span.user > a:not(.login-required)").innerHTML;
	if (!unsafeWindow.user){return;}
	var comments = document.querySelectorAll("a.author");
	unsafeWindow.num_user_comments = 0;
	for (var i = 0; i < comments.length; i++)
	{
		if (comments[i].innerHTML != unsafeWindow.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;
		unsafeWindow.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)');
		dlink.appendChild(document.createTextNode('SECURE DELETE'));
		addedlink.appendChild(dlink);
		main_parent.querySelector("ul.flat-list").appendChild(addedlink);
	 }catch(e){}
	}

	unsafeWindow.span = document.createElement("span");
	unsafeWindow.span.setAttribute('class', 'nextprev secure_delete_all');
	UpdateDeleteAllSpan();
	
}

function UpdateDeleteAllSpan()
{
	if (unsafeWindow.num_user_comments){
		unsafeWindow.span.innerHTML = "";
		var dlink = document.createElement("a");
		dlink.setAttribute('class','bylink');
		dlink.setAttribute('onClick','javascript:return delete_all()');
		dlink.setAttribute('href', 'javascript:void(0)');
		dlink.appendChild(document.createTextNode('SECURE DELETE ' + unsafeWindow.num_user_comments + ' visible comment(s) on this page.'));
		unsafeWindow.span.appendChild(dlink);
		document.querySelector("div.content").insertBefore(unsafeWindow.span,document.querySelector("div.content").firstChild);
	} else if (unsafeWindow.span != null) {
		unsafeWindow.span.style.display = 'none';
	}
}

window.addEventListener("DOMContentLoaded",add_delete_links, false);