Khác
VOTE BAN VIEWER
24 ngày trước
REPLY NGƯỜI BẠN MUỐN BAN KHỎI WEB NÀY
🪙
lock Đăng nhập để thưởng
chat 24 phản hồi
19 ngày trước
CÒN THẰNG ĐÉO NÀO NGOÀI LOLISU KILOLI ấm dâu cắn cả server nữa
19 ngày trước
@TAKA: CÒN THẰNG ĐÉO NÀO NGOÀI LOLISU KILOLI ấm dâu cắn cả server nữa
thề trông ngứa mắt vler ấy
18 ngày trước
:D ban chủ thớt
18 ngày trước ✏ da sua
@­­­­: :D ban chủ thớt
OKE LUÔN AD:D
18 ngày trước
@­­­­: :D ban chủ thớt
MOD 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
18 ngày trước ✏ da sua
@­­­­: :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 😌
17 ngày trước
@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

tui cũng member thôi không có quyền hạn gì cả, được cái mầu đi cmt chơi
17 ngày trước
@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

tôi có thể viết 1 script giúp sư huynh chặn idol đó
17 ngày trước

// ==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é
16 ngày trước ✏ da sua
mình update bản script cho ông ad 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)
mình chỉ thắc mắc phần @namespace k biết các tên miền khác có dùng chung namespace đc k tại k gắn wildcard vào chỗ này đc
script mình đã chạy test và chạy ok, thật ra mình cũng chả buồn chạy script này đâu tại cũng k ảnh hưởng gì đến mình lắm nhưng nếu ae cần thì😌
16 ngày trước
@karryy: mình update bản script cho ông ad nhá 😌
// ==UserScript==

// @name AnimeHay15 - Chan binh luan user 923

//

atk duck infinity quantily👑
16 ngày trước
@­­­­: @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

NGOL
15 ngày trước
@karryy: mình update bản script cho ông ad nhá 😌
// ==UserScript==

// @name AnimeHay15 - Chan binh luan user 923

//

quả này mới đúng này hahaha, tôi đang định nói. quả của ông mod thiếu case mịa rồi
14 ngày trước
Sao phải khổ thế, bơ đi là được mà kaka
14 ngày trước
@TAKA: CÒN THẰNG ĐÉO NÀO NGOÀI LOLISU KILOLI ấm dâu cắn cả server nữa
chứ cái gì nữa bạn, :)) tôi muốn chan thằng đó
14 ngày trước
@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
14 ngày trước
tôi muốn chan thằng LOLISU KILOLI anh em mình cùng vote ban cm nó thằng đó đi
14 ngày trước
@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

BTW tại những thk ẩm ẩm như nó mà cứ xem hoạt hình thậm chí chỉ là animation cũng bị gọi là wibu và bị kì thị
12 ngày trước
+1 vote ban phim k hay rồi thêm mấy thằng ẩm CPU khó chịu vô cùng
4 ngày trước
@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?
1 2
lock Đăng nhập để tham gia thảo luận