您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Filter out specific comments from JSON response
// ==UserScript== // @name ニコニコ動画(Re:仮)コメントフィルター(仮) // @namespace http://tampermonkey.net/ // @version 0.11 // @description Filter out specific comments from JSON response // @author Velgail // @match https://www.nicovideo.jp/watch_tmp/* // @grant none // @license The Unlicense // ==/UserScript== (function() { 'use strict'; // List of NG comments const ngComments = [ "んん~まかァァウッッ!!!!🤏😎", "にょ、にょまれ~~✋🐮🤚💦", // ここに他のNGコメントを追加 ]; // Intercept the fetch function const originalFetch = window.fetch; window.fetch = function(url, options) { if (url.startsWith('https://nvapi.nicovideo.jp/v1/tmp/comments/')) { return originalFetch(url, options).then(response => { return response.json().then(data => { // Filter the comments here if (data.data && data.data.comments) { data.data.comments = data.data.comments.filter(comment => !ngComments.includes(comment.message)); } // Create a new Response object with the modified data const modifiedResponse = new Response(JSON.stringify(data), { status: response.status, statusText: response.statusText, headers: response.headers }); return modifiedResponse; }); }); } return originalFetch(url, options); }; // Intercept the XMLHttpRequest const originalOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url) { this._url = url; return originalOpen.apply(this, arguments); }; const originalSend = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function() { this.addEventListener('readystatechange', function() { if (this.readyState === 4 && this._url.startsWith('https://nvapi.nicovideo.jp/v1/tmp/comments/')) { try { const jsonResponse = JSON.parse(this.responseText); // Filter the comments here if (jsonResponse.data && jsonResponse.data.comments) { jsonResponse.data.comments = jsonResponse.data.comments.filter(comment => !ngComments.includes(comment.message)); } // Override the responseText property Object.defineProperty(this, 'responseText', { value: JSON.stringify(jsonResponse) }); } catch (e) { console.error('Failed to modify JSON response', e); } } }); return originalSend.apply(this, arguments); }; })();