NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Pikabu Magic Wand userscript edition
// @namespace http://tampermonkey.net/
// @icon https://shitcopikabu.strangled.net/icon.png
// @version 0.0.2
// @description Разудаление комментариев
// @author Melhov Anton
// @updateURL https://openuserjs.org/install/shitcopikabu/Pikabu_Magic_wand_userscript_edition.user.js
// @homepage https://vk.com/id59967447
// @homepage https://vk.com/shitcopikabu
// @homepage https://vk.com/klubnikapikabu
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/jquery.initialize@1.2.0/jquery.initialize.min.js
// @include http://pikabu.ru/*
// @include https://pikabu.ru/*
// @include https://old.pikabu.ru/*
// @connect https://shitcopikabu.strangled.net
// @license MIT
// @grant none
// ==/UserScript==
// ==OpenUserJS==
// @author shitcopikabu
// @collaborator AHTOH874
// ==/OpenUserJS==
(function () {
'use strict';
function MagicWand() {
///////////////////////////////
/// CONFIG ///
///////////////////////////////
this.backendLocation = "https://shitcopikabu.strangled.net/ajax/";
this.root = "https://shitcopikabu.strangled.net";
this.debug = false;
this.sparklesEmojii = '✨';
this.deleteMark = `<span style="color: #888888;">`;
this.notFoundLabel = `<span style="color: #A88888;">not found</span>`;
this.tooLateLabel = `<span style="color: #A88888;">too late</span>`;
}
MagicWand.prototype = {
Ajax: function (method, data, success, failure) {
const self = this;
if (self.debug) {
console.log("->", data);
}
return $.ajax({
url: `${self.backendLocation}${method}`,
type: "POST",
data: JSON.stringify(data),
dataType: "json",
contentType: "application/json",
headers: {
"X-Csrf-Token": "not-needed"
},
timeout: 300000,
error: failure,
success: function (res) {
if (self.debug) {
console.log("<-", res);
}
success(res);
},
});
},
init: function () {
const self = this;
$.initialize('.b-comment__body,.comment__body', function () {
let el = $(this);
let tools = el.find('.b-comment__tools,.comment__tools');
let content = el.find('.b-comment__content,.comment__content');
let content_html = "" + content.html();
if (!content_html.includes(self.deleteMark)) {
// console.log("not found deletion mark; exiting;");
return;
}
let comment_id = el.parent().attr('data-id');
let insert = $(`<a ` +
`style="text-decoration: none;" ` +
`class="b-comment__tool b-comment__tool-undelete comment__tool" ` +
`title="Undelete comment" ` +
`>` +
`${self.sparklesEmojii}` +
`</a>`);
insert.click(function () {
self.Ajax('undelete', {
CommentID: parseInt(comment_id),
}, function (data) {
const comments = data.comments;
if (!comments || comments.length != 1) {
content.html(self.notFoundLabel);
return;
}
let html = comments[0].content_html;
if (html.includes(self.deleteMark)) {
content.html(self.tooLateLabel);
return;
}
content.html(html);
}, function (data, stat, error) {
const failureLabel = `<span style="color: #A88888;">failure: status=${stat} error=${error}</span>`;
content.html(failureLabel);
});
});
tools.append(insert);
});
}
};
$(document).ready(function () {
const magicWand = new MagicWand();
magicWand.init();
});
})();