initial commit

This commit is contained in:
POCCOMAXA 2024-07-13 00:58:05 +03:00
commit 22c711a027
4 changed files with 230 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.local

9
readme.md Normal file
View File

@ -0,0 +1,9 @@
# ІПСО проти mangalib
## Скріпти
[Головна](scripts/ml-main.user.js)
[Новини](scripts/ml-news.user.js)
## Інструкція по встановленню

79
scripts/ml-main.user.js Normal file
View File

@ -0,0 +1,79 @@
// ==UserScript==
// @name ML main
// @version 1
// @author POCCOMAXA
// @match https://mangalib.me/
// @grant none
// ==/UserScript==
/**
*
* @param {string} title
* @param {string} textLines
* @param {string} user
* @returns {HTMLElement}
*/
function makeMainAd(title, textLines, user) {
let ad = document.createElement("section");
ad.classList.add("h-lists__section", "section", "paper");
let body = document.createElement("div");
body.classList.add("section__body");
ad.appendChild(body);
let h2 = document.createElement("h2");
h2.classList.add("page__title");
h2.textContent = title;
body.appendChild(h2);
let items = document.createElement("div");
items.classList.add("h-list-items");
body.appendChild(items);
let item = document.createElement("div");
item.classList.add("h-list-item");
items.appendChild(item);
textLines.split("\n").forEach((text) => {
let itemTitle = document.createElement("div");
itemTitle.classList.add("h-list-item__title");
itemTitle.textContent = text;
item.appendChild(itemTitle);
});
let itemInfo = document.createElement("div");
itemInfo.classList.add("h-list-item__info");
item.appendChild(itemInfo);
let userSpan = document.createElement("span");
userSpan.classList.add("h-list-item__user");
itemInfo.appendChild(userSpan);
let userIcon = document.createElement("i");
userIcon.classList.add("fa", "fa-fw", "fa-user");
userSpan.appendChild(userIcon);
let userText = document.createTextNode(user);
userSpan.appendChild(userText);
let dateSpan = document.createElement("span");
dateSpan.classList.add("h-list-item__date");
dateSpan.textContent = "1 месяц назад";
itemInfo.appendChild(dateSpan);
return ad;
}
/**
* @type {HTMLElement}
*/
let parent = document.querySelector(".h-lists");
let mainAd = makeMainAd(
"Срочное уведомление 📣",
`Мы от лица команды мангалиба просим помочь родным нашей коллеги по совместительству разработчику с нашей команды собрать деньги для её отца который обороняет Белгород в такие плохие времена. Нам нужно собрать на глушитель AFTactical S44A, 7.62мм.
Карта сбер банка: 427901123765234`,
"LSTR-512",
);
parent.insertBefore(mainAd, parent.firstChild);

141
scripts/ml-news.user.js Normal file
View File

@ -0,0 +1,141 @@
// ==UserScript==
// @name ML news
// @version 1
// @author POCCOMAXA
// @match https://mangalib.me/news/texniceskie-raboty-na-servere-6-dekabria
// @match https://mangalib.me/news/pereezd-yaoiliba-na-novyi-domen
// @match https://mangalib.me/news
// @grant none
// ==/UserScript==
/**
*
* @param {string} title
* @param {string} user
* @param {string} date
* @returns {HTMLElement}
*/
function makeNewsItem(title, user, date) {
let item = document.createElement("div");
item.classList.add("news-feed-item");
let info = document.createElement("div");
info.classList.add("news-feed-item__info");
item.appendChild(info);
let dateSpan = document.createElement("span");
dateSpan.classList.add("news-feed-item__date");
dateSpan.textContent = date;
info.appendChild(dateSpan);
let bulletSpan = document.createElement("span");
bulletSpan.classList.add("news-feed-item__bullet");
bulletSpan.textContent = " • ";
info.appendChild(bulletSpan);
let userSpan = document.createElement("span");
userSpan.classList.add("news-feed-item__user");
userSpan.textContent = user;
info.appendChild(userSpan);
let h2 = document.createElement("h2");
h2.classList.add("news-feed-item__title");
item.appendChild(h2);
let a = document.createElement("a");
a.classList.add("link-default");
a.href = "https://mangalib.me/news/texniceskie-raboty-na-servere-6-dekabria";
a.textContent = title;
h2.appendChild(a);
return item;
}
function overwriteContent(element, content) {
element && (element.textContent = content);
}
/**
*
* @param {HTMLElement} element
* @param {HTMLElement[]} children
* @returns
*/
function overwriteChildren(element, children) {
if (!element) return;
element.innerHTML = "";
element.append(...children);
}
function overwriteDates() {
let els = document.querySelectorAll(".comment__date-time");
if (els.length === 0) {
setTimeout(overwriteDates, 100);
} else {
els.forEach((a) => (a.textContent = "1 месяц назад"));
}
}
/**
*
* @param {string} title
* @param {string} textLines
* @param {string} date
*/
function overwriteNewsItem(title, textLines, date) {
overwriteContent(document.querySelector(".news__title"), title);
overwriteContent(document.querySelectorAll(".news__author span")[1], date);
overwriteChildren(
document.querySelector(".news__content"),
textLines.split("\n").map((text) => {
let p = document.createElement("p");
p.textContent = text;
return p;
}),
);
}
function overwriteItem() {
overwriteNewsItem(
"Переезд яойлиба на новый домен!",
`В связи с ужесточением политики в сторону лгбт сообщества мы вынуждены отделить эти работы от других, так как это не отвечает требованиям которые были выдвинуты нам от вышестоящих людей. Если нам не удастся прийти согласия нам прийдется удалить зеркало яойлиба и все работы которые там есть.
Простите за беспокойство.
Надеемся на ваше понимание!`,
"1 месяц назад",
);
history.pushState({}, null, "/news/pereezd-yaoiliba-na-novyi-domen");
overwriteDates();
}
function restoreOriginalURL() {
location.replace("https://mangalib.me/news/texniceskie-raboty-na-servere-6-dekabria");
}
function addListItem() {
/**
* @type {HTMLElement}
*/
let parent = document.querySelector(".container.container_md");
parent.insertBefore(
makeNewsItem("Переезд яойлиба на новый домен!", "LSTR-512", "01.06.2024"),
parent.children[1],
);
}
function main() {
switch (location.pathname) {
case "/news/pereezd-yaoiliba-na-novyi-domen":
restoreOriginalURL();
break;
case "/news/texniceskie-raboty-na-servere-6-dekabria":
overwriteItem();
break;
case "/news":
addListItem();
break;
}
}
main();