您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Highlight code in YouTube comments
当前为
// ==UserScript== // @name YouTube Code Highlighter // @namespace https://gf.zukizuki.org/ru/users/901750-gooseob // @version 1.0.2 // @description Highlight code in YouTube comments // @author GooseOb // @license MIT // @require https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js // @match https://www.youtube.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com // ==/UserScript== (function(){// index.ts var until = (getItem, check, msToWait = 1e4, msReqTimeout = 20) => new Promise((res, rej) => { const reqLimit = msToWait / msReqTimeout; let i = 0; const interval = setInterval(() => { if (i++ > reqLimit) exit(rej); const item = getItem(); if (!check(item)) return; exit(() => res(item)); }, msReqTimeout); const exit = (cb) => { clearInterval(interval); cb(); }; }); var untilAppear = (getItem, msToWait) => until(getItem, Boolean, msToWait); untilAppear(() => document.getElementById("comments")).then((comments) => { let isCSSLoaded = false; const visitedComments = new Set; const loadCSS = () => { fetch("https://cdn.jsdelivr.net/npm/highlight.js/styles/atom-one-dark.css").then((r) => r.text()).then((cssText) => { document.head.appendChild(document.createElement("style")).innerHTML = cssText; }); }; const _highlighter = { createHTML: (code) => code.replace(/```(\S+)\n(.+?)```/gs, (_$0, $1, $2) => `<code>\`\`\`${$1}\n${hljs.highlight($2, { language: $1 }).value}\`\`\`</code>`) }; const highlighter = window.trustedTypes && window.trustedTypes.createPolicy ? window.trustedTypes.createPolicy("highlightedCode", _highlighter) : _highlighter; setInterval(() => { for (const comment of comments.querySelectorAll("ytd-comment-view-model #content .yt-core-attributed-string")) { let lang; if (!visitedComments.has(comment) && (lang = /```(\S+)\n/.exec(comment.textContent)?.[1])) { visitedComments.add(comment); if (!isCSSLoaded) { loadCSS(); isCSSLoaded = true; } comment.innerHTML = highlighter.createHTML(comment.textContent); } } }, 3000); }); })()