@TAKA: CÒN THẰNG ĐÉO NÀO NGOÀI LOLISU KILOLI ấm dâu cắn cả server nữathề trông ngứa mắt vler ấy
@: :D ban chủ thớtOKE LUÔN AD:D
@: :D ban chủ thớtMOD thêm tính năng chặn user dc ko chứ tôi thấy khó chịu lolisu quá cmt đại đại cũng bị nó cắn nữa
@: :D ban chủ thớtít khi chửi ai bao h nhưng gặp cái lí lẽ của idol đó thật sự tức ko nhịn nổi ko chửi dc ko dc. chắc ko phải mình tôi thấy thế đâu 😌
@TAKA: @: :D ban chủ thớtít khi chửi ai bao h nhưng gặp cái lí lẽ của idol đó thật sự tức ko nhịn nổi ko chửi dc ko dc. ch
@TAKA: @: :D ban chủ thớtít khi chửi ai bao h nhưng gặp cái lí lẽ của idol đó thật sự tức ko nhịn nổi ko chửi dc ko dc. ch
// ==UserScript==
// @name AnimeHay15 - Chan binh luan user 923
// @namespace local.animehay15.commentfilter
// @version 1.0.0
// @description An binh luan cua LOLISU❤KILOLI theo ID tai khoan
// @match https://animehay15.site/*
// @match https://www.animehay15.site/*
// @run-at document-start
// @grant none
// ==/UserScript==
(function () {
'use strict';
// Cau hinh tai khoan can chan
const BLOCKED_USER_IDS = new Set(['923']);
const BLOCKED_NICKNAMES = new Set(['LOLISU❤KILOLI']);
// Them style de tranh binh luan bi nhap nhay truoc khi an
const style = document.createElement('style');
style.textContent =
.cmt-card[data-ah-blocked="1"] {
display: none !important;
}
;
(document.head || document.documentElement).appendChild(style);
function isBlockedComment(card) {
if (!card || !card.matches('.cmt-card')) return false;
// Cach chinh xac nhat: ID trong link /wall/923
const profileLinks = card.querySelectorAll(
'a[href*="/wall/"]'
);
for (const link of profileLinks) {
try {
const url = new URL(link.getAttribute('href'), location.origin);
const match = url.pathname.match(/^\/wall\/(\d+)\/?$/);
if (match && BLOCKED_USER_IDS.has(match[1])) {
return true;
}
} catch (_) {}
}
// Du phong: so sanh nickname neu HTML thay doi
const nicknameElements = card.querySelectorAll(
'.cmt-card__nickname, .cmt-card__avatar[title], .cmt-card__avatar img[alt]'
);
for (const el of nicknameElements) {
const nickname = (
el.textContent ||
el.getAttribute('title') ||
el.getAttribute('alt') ||
''
).replace(/\s+/g, ' ').trim();
if (BLOCKED_NICKNAMES.has(nickname)) {
return true;
}
}
return false;
}
function hideBlockedComments(root = document) {
if (!root) return;
if (root.nodeType === Node.ELEMENT_NODE &&
root.matches('.cmt-card')) {
if (isBlockedComment(root)) {
root.dataset.ahBlocked = '1';
}
}
if (root.querySelectorAll) {
root.querySelectorAll('.cmt-card').forEach(card => {
if (isBlockedComment(card)) {
card.dataset.ahBlocked = '1';
}
});
}
}
// An ngay khi DOM co the truy cap
hideBlockedComments();
// Theo doi comment moi do AJAX / tai them / refresh
const observer = new MutationObserver(mutations => {
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
if (node.nodeType === Node.ELEMENT_NODE) {
hideBlockedComments(node);
}
}
// Phong truong hop website cap nhat lai noi dung
if (mutation.type === 'attributes' ||
mutation.type === 'characterData') {
const target = mutation.target.nodeType === Node.ELEMENT_NODE
? mutation.target
: mutation.target.parentElement;
const card = target && target.closest
? target.closest('.cmt-card')
: null;
if (card && isBlockedComment(card)) {
card.dataset.ahBlocked = '1';
}
}
}
});
function startObserver() {
if (!document.documentElement) {
requestAnimationFrame(startObserver);
return;
}
observer.observe(document.documentElement, {
childList: true,
subtree: true,
characterData: true,
attributes: true,
attributeFilter: ['href', 'title', 'alt']
});
hideBlockedComments();
}
startObserver();
})();
Đây là code chặn LOLISU KILOLI , các bạn lên google hướng dẫn sử dụng tampermonkey add script này vào là được nhé // ==UserScript==
// @name AnimeHay15 - Chan binh luan user 923
// @namespace local.animehay15.commentfilter
// @version 1.0.1
// @description An binh luan cua LOLISU❤KILOLI theo ID tai khoan
// @include /^https?:\/\/(www\.)?animehay\d{2}\.site\/.*$/
// @run-at document-start
// @grant none
// ==/UserScript==
(function () {
'use strict';
const BLOCKED_USER_IDS = new Set(['923']);
const BLOCKED_NICKNAMES = new Set(['LOLISU❤KILOLI']);
let hiddenCount = 0;
const THRESHOLD = 5;
let autoLoadCount = 0;
const MAX_AUTO_LOADS = 5;
const style = document.createElement('style');
style.textContent = '.cmt-card[data-ah-blocked="1"] { display: none !important; }';
(document.head || document.documentElement).appendChild(style);
function blockedCommentCounter(){
hiddenCount++;
if (hiddenCount >= THRESHOLD && autoLoadCount < MAX_AUTO_LOADS) {
hiddenCount = 0;
autoLoadCount++;
setTimeout(() => {
const loadMoreBtn = document.querySelector('.load-more');
if (loadMoreBtn) {
loadMoreBtn.click();
}
}, 300);
}
}
function checkAndHide(card) {
if (!card || !card.matches('.cmt-card')) return;
if (card.dataset.ahBlocked === '1') return;
if (isBlockedComment(card)) {
card.dataset.ahBlocked = '1';
blockedCommentCounter();
if (card.id) {
const idMatch = card.id.match(/^comment_(\d+)$/);
if (idMatch) {
const commentId = idMatch[1];
const feedbackElement = document.getElementById('feedback_'+commentId);
if (feedbackElement) {
feedbackElement.style.setProperty('display', 'none', 'important');
}
}
}
}
}
function isBlockedComment(card) {
if (!card || !card.matches('.cmt-card')) return false;
const profileLinks = card.querySelectorAll('a[href*="/wall/"]');
for (const link of profileLinks) {
try {
const url = new URL(link.getAttribute('href'), location.origin);
const match = url.pathname.match(/^\/wall\/(\d+)\/?$/);
if (match && BLOCKED_USER_IDS.has(match[1])) {
return true;
}
} catch (_) {}
}
const nicknameElements = card.querySelectorAll(
'.cmt-card__nickname, .cmt-card__avatar[title], .cmt-card__avatar img[alt]'
);
for (const el of nicknameElements) {
const nickname = (
el.textContent ||
el.getAttribute('title') ||
el.getAttribute('alt') ||
''
).replace(/\s+/g, ' ').trim();
if (BLOCKED_NICKNAMES.has(nickname)) {
return true;
}
}
return false;
}
function hideBlockedComments(root = document) {
if (!root) return;
let isCounting = false;
if (root.nodeType === Node.ELEMENT_NODE &&
root.matches('.cmt-card')) {
checkAndHide(root);
}
if (root.querySelectorAll) {
root.querySelectorAll('.cmt-card').forEach(card => {
checkAndHide(card);
});
}
}
hideBlockedComments();
const observer = new MutationObserver(mutations => {
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
if (node.nodeType === Node.ELEMENT_NODE) {
hideBlockedComments(node);
}
}
if (mutation.type === 'attributes' ||
mutation.type === 'characterData') {
const target = mutation.target.nodeType === Node.ELEMENT_NODE? mutation.target: mutation.target.parentElement;
const card = target && target.closest ? target.closest('.cmt-card'): null;
if (card && isBlockedComment(card)) {
checkAndHide(card);
}
}
}
});
function startObserver() {
if (!document.documentElement) {
requestAnimationFrame(startObserver);
return;
}
observer.observe(document.documentElement, {
childList: true,
subtree: true,
characterData: true,
attributes: true,
attributeFilter: ['href', 'title', 'alt']
});
hideBlockedComments();
}
startObserver();
})();
đoạn style.textContent ông kia dùng backquote cho multiline string nhưng web tưởng là ghi format chữ gì đấy nên copy code oog kia là k chạy đâu nhá (sửa đoạn đó thì vẫn chạy bt th), mình chỉnh thành inline string r. mình cũng update thêm tính năng nếu comment chính bị ẩn thì các reply bên dưới comment đó cũng bị ẩn theo, tránh trường hợp cmt chính ẩn r mà vẫn hiện reply gây nhiễu. mình cũng thêm chức năng nếu tất cả cmt trong 1 lần load thêm comment đều bị ẩn thì nó sẽ auto load thêm comment mới nhá, tránh trường hợp lúc init phần cmt k có gì, và nhấn load cmt mãi mà k thấy cmt nào (giới hạn 5 lần auto load th, ae thích thì vào script chỉnh tay đc)@karryy: mình update bản script cho ông ad nhá 😌// ==UserScript==
@: @TAKA: @: :D ban chủ thớtít khi chửi ai bao h nhưng gặp cái lí lẽ của idol đó thật sự tức ko nhịn nổi ko chửi dc ko
@karryy: mình update bản script cho ông ad nhá 😌// ==UserScript==
@TAKA: CÒN THẰNG ĐÉO NÀO NGOÀI LOLISU KILOLI ấm dâu cắn cả server nữachứ cái gì nữa bạn, :)) tôi muốn chan thằng đó
@Cơn Gió Lạnh: Sao phải khổ thế, bơ đi là được mà kakaý là nó spam á bạn, muốn đọc cmt của mọi ng nhưng phải kéo xuống 2,3 trang, rất khó chịu, mà nó cmt toàn thứ vớ vẩn như mấy thằng wubi rác rưởi ấy, khó chịu vl
@Kin Jake: @Cơn Gió Lạnh: Sao phải khổ thế, bơ đi là được mà kakaý là nó spam á bạn, muốn đọc cmt của mọi ng nhưng phải kéo xuống
@TAKA: CÒN THẰNG ĐÉO NÀO NGOÀI LOLISU KILOLI ấm dâu cắn cả server nữađi đâu cũng thấy tên đó comment :)) mà ấm dâu thiệt hả? vụ gì? trong anime nào?