Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name anti-weip
- // @name:ru Ебан Кукарекыч
- // @namespace 0chan
- // @include https://0chan.hk/*
- // @version v0.0.2.5
- // @grant GM_addStyle
- // ==/UserScript==
- // На вход подаются регулярные выражения. Не забывайте разграничивать их при помощи |
- // И это самое, скрипт **должен работать** как у лисоблядей с их Greasemonkey, так и у хромогов с Tampermonkey. Если это не соответствует действительности, пишите на 0x59f3c84d.
- let DEFAULT_EBANS = 'говну(х|льч)|Добро-кун|как(а|о)(ет|л|ю|ть)|моче(параш|фокс)|н(а|э)вэльный|олабляд|Ольгино|Педалито|пид(а|о)рах|порвалик|п(р|с){2,}|Пын(е|я)|форси(нг|ть)|чмодер|шизик|';
- DEFAULT_EBANS += 'Правила(\s|\n)+Нульчана:|';
- // Спорные выражения
- DEFAULT_EBANS += 'параш(а|у)|';
- /* Тут ещё чейнджлог заказывали.
- v0.0.2.5
- По просьбе https://0chan.hk/speak/22950#337801 запилено скрытие **КАПСБОЛДА**
- v0.0.2.4.1
- В 0.0.2.4 **вообще не работали** пользовательские выражения из-за того, что я сам забыл поставить пайп. Починено.
- v0.0.2.4
- Переписаны функции скрытия и удаления. Вместо .search использован .test. Добавлено заебатое XPath-выражение (эта штука поддерживает возможность "подниматься" по DOM).
- */
- GM_addStyle(`#kukarekDeleter:not(:hover) {opacity: .7}
- #kukarekDeleter {position: fixed; bottom:0; right:0; z-index: 42}`);
- Object.defineProperty(this, 'kukarek', {
- get: ()=>localStorage.kukarek,
- set: kukarek=>localStorage.kukarek=kukarek
- });
- if ( !kukarek ) kukarek = 'С каждым днём всё радостнее жить!';
- function main(){
- if (kukarek.length < 4) if (!confirm('Подозрительно короткий кукарек. Всё равно убрать?')) return;
- let regex = new RegExp(DEFAULT_EBANS+kukarek, 'i');
- /* Hide all with RegExp */ document.querySelectorAll('div.post').forEach(el=>{
- if ( regex.test(el.textContent) ) el.querySelector('span.post-button').click();
- });
- /* Hide **CAPSBOLD** */ Array.from(document.getElementsByTagName('b')).forEach(el=>{
- if (el.textContent.toUpperCase() != el.textContent) return;
- while ( ! el.classList.contains('post') ) el = el.parentElement;
- el.querySelector('span.post-button').click();
- });
- /* Delete hidden */ setTimeout(()=>{
- let a = document.evaluate('//div[@class="post-footer" and position() = 2]/../..', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
- for (let i=0; i<a.snapshotLength; i++) a.snapshotItem(i).remove();
- }, 1000);
- }
- function addEl(el, newEl) { return el.appendChild(document.createElement(newEl)); }
- let div = addEl(document.body, 'div'),
- inp = addEl(div, 'input'),
- btn = addEl(div, 'button');
- div.id = 'kukarekDeleter';
- inp.value = kukarek;
- inp.addEventListener('focus', ({target:el})=>{el.selectionStart = 0; el.selectionEnd = el.value.length;});
- inp.addEventListener('change', ({target:{value:v}})=>{
- if (!v) {btn.enabled = false; return;}
- kukarek = v;
- btn.enabled = true;
- });
- inp.style.display = 'none';
- btn.addEventListener('mouseover', ()=>{inp.style.display = inp.style.display ? '' : 'none';});
- btn.addEventListener('click', main);
- btn.innerText = 'Убрать кукареки';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement