"use strict";
function $$(selector){
return document.querySelectorAll(selector);
}
function observe$$(selector, f){
const observer = new MutationObserver(() => $$(selector).forEach(f));
// Почему-то document.body вместо document вызывает ошибку на http://aeroexpress.wi-fi.ru/
observer.observe(document, { childList: true, subtree: true });
}
const host = document.location.host;
const hostpath = document.location.host + document.location.pathname;
if(/^2ch\.(hk|pm|life)\/[^/?#]*\/res\/[0-9]*\.html$/.exec(hostpath)){
// Фича
{
// Эта структура данных по-настоящему качественная, в отличие от всего остального скрипта
// Массив - это список разрешённых значений для имени, указанного в посте
// Если в посте указано имя, которого нет в массиве, то будет отображено то, которое указано в массиве первым
// Массив не должен быть пустым
// Элементы массива не должны быть пустыми строками и строками "Аноним"
// Указан месяц, на который трип является свежим
// Добавляю только информацию, в которой достаточно уверен. Если у разных трипов указаны разные имена, значит, я достаточно уверен, что это разные люди
// Иногда люди набирают некоторые буквы не в той раскладке, и приходится добавлять несколько вариантов
const tripCodes = {
"!RFAsmTbreo": ["Страшно-кун"], // 2019-10
"!K8VeUX39u6": ["Алкаш", "Алкaш", "Алkаш", "Алкащ"], // 2019-10
"!SHIRRRSnEo": ["Шир"], // 2019-10
"!PSEV/.UmnY": ["Псевдопонос"], // 2019-10
"!!JSbovedxYg": ["Эстр"], // 2019-10. Ж-кун
"!wOL8/VuJEE": ["Затыкан"], // 2019-10. Руслан, Русик
"!8bty8qVkeU": ["Настик"], // 2019-10
"!gwqonSTONE": ["Каста"], // 2019-10
"!qCaTKKrzss": ["BAD (использовался Светой и, возможно, Затыканом)"],
"!m9C5HL32TI": ["arien"], // 2019-10
"!cLogAndGUQ": ["Логан"], // 2019-10. Бачок
"!DquxP3teBo": ["Джиуб-кун", "Джиуб"], // 2019-10
"!!FFWpc95Flo": ["Ира"], // 2019-10
"!zWee040DmE": ["Света"], // 2019-10
"!sxMkM3Rbnc": ["ДЦП-кун"], // 2019-10
"!Poo/zwEta2": ["Света"], // 2019-10
"!03BA8gvmdc": ["Кретин с сигарой"], // 2019-10
"!E.jMev6iao": ["Нед", "ned", "pwned"], // 2019-10
"!!p3UXx4oCp2": ["Ира"], // 2019-11. Трип подтверждён: https://2ch.hk/soc/res/5300851.html#5301448
"!fRogMBPvaE": ["блонд"], // 2019-06
"!qDkIknBZVU": ["Бро"], // 2019-11
"!eokDynaTv6": ["Эстонка"], // 2020-01
"!Mzu56eO.w.": ["Затыкан"], // 2020-02
"!l45lkIoNGE": ["Затыкан"], // 2020-02
"!KASTAUnLLc": ["Каста"], // 2020-03
"!WtMWcLhPyw": ["Юлиус"], // 2020-09, скорее всего, именно он - главный мой травитель 2020-09
"!!1MEjUKozOs": ["Настик"], // 2022-05
"!jG14jPoLic": ["Тома"], // 2023-05. Тома II
"!5.qkqkj0c6": ["Ира"], // 2023-06
"!WWUKxYcCrQ": ["Затыкан"], // 2024-08
};
observe$$(".post__trip", trip => {
if(trip.innerText in tripCodes){
const name = trip.parentElement.querySelector(".post__anon");
if(name !== null){ // Почему-то на практике name иногда равен null
const trimmed = name.innerText.trim();
if(trimmed === "" || trimmed === "Аноним"){
trip.innerText = trip.innerText + " [[" + tripCodes[trip.innerText][0] + "]]";
trip.style["color"] = "#00aa00";
name.style["color"] = "#00aa00";
}else if(tripCodes[trip.innerText].includes(trimmed)){
trip.style["color"] = "#00aa00";
name.style["color"] = "#00aa00";
}else{
trip.innerText = trip.innerText + " [[" + tripCodes[trip.innerText][0] + "]]";
trip.style["color"] = "red";
name.style["color"] = "red";
}
}
}
});
}
}
{
"name": "2ch extension",
"version": "0.1",
"manifest_version": 2,
"permissions": ["<all_urls>"],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
]
}