您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Kick.com Unique Chatter Counter - Detect whos viewbotting
- // ==UserScript==
- // @name Kick.com Unique Chatter Counter
- // @version 0.4
- // @description Kick.com Unique Chatter Counter - Detect whos viewbotting
- // @author Rishi Sunak
- // @match https://kick.com/*
- // @grant none
- // @namespace https://greasyfork.org/users/1235079
- // ==/UserScript==
- (function() {
- 'use strict';
- let uniqueUserIds = {};
- let currentStreamSrc = null;
- function countUniqueUserIds() {
- const userIdElements = document.querySelectorAll('[data-chat-entry-user-id]');
- userIdElements.forEach(element => {
- const userId = element.getAttribute('data-chat-entry-user-id');
- uniqueUserIds[userId] = true;
- });
- const uniqueUserCount = Object.keys(uniqueUserIds).length;
- console.log(`Unique User IDs: ${uniqueUserCount}`);
- const chatHeaderElement = document.querySelector('.flex.flex-row.items-center.text-center .text-base.font-bold');
- if (chatHeaderElement) {
- chatHeaderElement.textContent = `Unique Chatters: ${uniqueUserCount}`;
- }
- }
- function checkStreamChange() {
- const videoElement = document.querySelector('video.vjs-tech');
- if (videoElement) {
- const newStreamSrc = videoElement.getAttribute('src');
- if (newStreamSrc !== currentStreamSrc) {
- uniqueUserIds = {};
- currentStreamSrc = newStreamSrc;
- }
- }
- }
- countUniqueUserIds();
- checkStreamChange();
- const observer = new MutationObserver(() => {
- countUniqueUserIds();
- checkStreamChange();
- });
- const targetNode = document.body;
- const config = { childList: true, subtree: true };
- observer.observe(targetNode, config);
- })();