forked from 1024--/govnokod.ru-userscripts
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathautobred.user.js
81 lines (66 loc) · 2.28 KB
/
autobred.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// ==UserScript==
// @name govnokod: autobred
// @namespace govnokod
// @description sends something strange
// @include *://govnokod.ru/*
// @include *://www.govnokod.ru/*
// @version 1.4.3
// @grant none
// ==/UserScript==
// Адаптированный код inkanus-gray
// http://govnokod.ru/16567#comment247654
function rand(n) { return Math.random() * n | 0; }
function stringToPairs(s, chlen, base) {
var pairs = {};
for (var i = 0, n = s.length - base; i < n; ++i) {
var key = s.substr(i, base);
if(!(key in pairs)) pairs[key] = [];
pairs[key].push(s.substr(i + base, chlen));
}
return pairs;
}
function getNextSym(s, pairs) {
if(!(s in pairs)) return '';
var next = pairs[s];
return next.length ? next[rand(next.length)] : '';
}
function bugurt(start, pairs, len, base) {
var result = start;
while (len > 0 && start !== '') {
start = getNextSym(result.substr(-base), pairs);
result += start;
len--;
}
return result;
}
function bred(text, start, textlen, base, chlen) {
return bugurt(start.substr(0, base), stringToPairs(text, chlen, base), textlen, base);
}
// Берём текст из комментариев и отвечаем.
function es(s){ return Array.prototype.slice.apply(document.querySelectorAll(s)); }
function e(id){ return document.getElementById(id); }
(function(){
var VOREC_TAG = '[size=10][color=white]#вореции[/color][/size]';
var VOREC_RE = /#вореции$/g;
var comments = es('.comment-text').map(function(x){
return x.textContent.replace(VOREC_RE, '');
});
var text = comments.join(' ');
var answerButtons = es('a.answer, h3>a');
if(text.length < 200 || !answerButtons.length) return;
answerButtons.forEach(function(button){
if(button.parentNode.querySelector('.bred-answer')) return;
var ans = document.createElement('a');
ans.href = '#I-should-enable-javascript';
ans.innerHTML = 'Ответить бредом';
ans.className = 'answer bred-answer';
ans.style.marginLeft = '1ex';
ans.addEventListener('click', function(event){
button.onclick();
e('formElm_text').value = bred(text,
comments[rand(comments.length)], 300, 7, 2) + VOREC_TAG;
event.preventDefault();
});
button.parentNode.appendChild(ans);
});
})();