返回首頁 

Return YouTube Comment Username

This script replaces the "handle" in the YouTube comments section to user name


Install this script?
// ==UserScript==// @match https://www.youtube.com/*// @version 0.6.0// @run-at document-start// @name Return YouTube Comment Username// @name:ja YouTubeコメント欄の名前を元に戻す// @description This script replaces the "handle" in the YouTube comments section to user name// @description:ja YouTubeのコメント欄の名前をハンドル(@...)からユーザー名に書き換えます。// @name:zh-CN 恢復 YouTube 评论用户名// @name:zh-TW 恢復 YouTube 評論名稱// @description:zh-TW 此腳本將 YouTube 評論部分中的“handle”替換為用戶名// @description:zh-CN 此脚本将 YouTube 评论部分中的“handle”替换为用户名// @author yakisova41// @namespace https://yt-returnname-api.pages.dev/extension/// @grant unsafeWindow// @license MIT// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAWJAAAFiQFtaJ36AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAABI5JREFUaIHVml1ok1cYx39v4pT6Ebdo0baoWCd+VsEPNqfthigOi0IZnRc1XgxFELwQBGE474eIV1UoOqsw9MILSzsv1G4wRQe1zG9RWdGWVBgSMGldrab/XTy2Sc2bj2aZSf5wyMk5zzn5P5/nzUkcSYzAcT4GAsDXwGpgHIWBIaAT+AU4idQ/MiPJGnwpeC5Qgbeg4LNh3vHkXxUAuUzbP4L1knAEfuARMD0/0ZE1eoElHmA3xUceoBz4zgN8k28m/wGbHUEfMCnfTLLE344gCnjyzSRLyEOhkV+2DM6dg5s34exZqKpKLV8AJTHWNm2SBgY0CgMD0saNydYMOQIl1a6iAmpqYOZMCIehsxNu3cqxyd9h3Djo6oJZsxLnnj2DefMgGn1/Ru4eqKyULlyQhoaUgBs3pMWLc2/95csTPyseVVWuHkhUYMUK6cULW9TWJgUCUk2NtGWLdOqUFI1KoZC0cGFuFVi6NLUC7kZ7TwGfT+ruNpINDZLjSAsWSFOmxGR27LANr13LjNj69bZPOjmPR3ryxJ38o0c2n1aBgwdtwZEj0rRpRlIyj1y/bv1AQLp6NZVbR7eWFqm11YyTTnbdOikSGU0+HJbWrk2axKMVuH/f4r6iQjp50jZ48EA6fTq2YXW1dPiw9XftSk+qtdVk79yR5s5NL19ZKR07Jl2+LDU2plszFHveHz8eFi2C7m4IBqG+3sa3b4fbt6GhAbxeePoUXr60uUnvDvCSEvD73atLSYm9VlVBRwds2wbt7cmrUTgM589DeTn09kIkkrp6jWjj95ul7t6VJk6MWdznk5Yssf7goOT1Ss3N9r6uztYGAqkTMB5v3kgHDiRas7zc9nU7B5qbpbIyVw/EzgHHgYEB6OuD0lLTfsYMOHMGVq0y70SjsHcvHD1qsnPmmMWmTnWv3wCzZ8PkySYfDMbG792D16+tv3o1tLRAWVlyS/f2wtatdhbF23+URu3tpvWGDVZtBgft/aVL0r59MauEQlJtbW7KZ2mpFAxm5r2eHmn69BRJXFdngl1dVj79fmn+/Nj8ypVSfb1VqFyQB6mpKfPwk6Tjx5OE0DAaG2HPHnN5W5u5Gix###+GpiY4dCh1YmUKn89CY9IYnuYjEUvwvj6XEBpuO3dKDx8mav/4sbR7d+6sX109NusPY80alzIajxMnrFVUWHL291sChkI5MfwIvF64cmXs6yZMGO6leRotfLwqrC8zY0ePB7v1KlbcdQRvAW++mWSJWkcwCHyUbyZZ4A/gCw/FmcR/Ad8iqRgVuAh8jtQDdn2eiQIXgf60UrnHZOziLQTcA35Duh8vkMn9/+9Itf8DuZwgXRkVsP8DcckK6XLgZ6SOD0UmGziCCBZr8RBWXhcgPfvwtDJHMg84wJFCJw/mgZeAL25MwAvgU6RwfmhlDrckdoAfioE8mAdCwCdxYw+BZUhv88RpTHDzwP5iIQ+JP278inQxL0yyRHwVGqLADy03xIfQT0h/5pNMNnAEz4EpwHyk5/kmNFYM58CPxUgezAMdwFfE/wOkiOABvi9W8gD/AtVVmDkJXLSNAAAAAElFTkSuQmCC// ==/UserScript==// src/index.tsfunction c3JjL2luZGV4LnRz() {"use strict";(() => {// node_modules/crx-monkey/dist/client/main.jsfunction getRunningRuntime() {if (typeof window.__CRX_CONTENT_BUILD_ID === "undefined") {return "Userscript";} else {return "Extension";}}async function bypassSendMessage(message, options, callback) {const actionId = crypto.randomUUID();window.postMessage({type: "send-message",crxContentBuildId: window.__CRX_CONTENT_BUILD_ID,detail: { message, options },actionId,},"*",);const data = await waitR###ltOnce("send-message", actionId);if (callback !== void 0) {callback(data.response);}}async function waitR###ltOnce(type, actionId) {return new Promise((resolve) => {const onR###lt = (e) => {if (e.detail.type === type && e.detail.actionId === actionId) {window.removeEventListener("crx-isolate-connector-r###lt",onR###lt,);resolve(e.detail.data);}};window.addEventListener("crx-isolate-connector-r###lt", onR###lt);});}// src/utils/isCommentRenderer.tsfunction isCommentRenderer(continuationItems) {if (continuationItems.length > 0) {if ("commentThreadRenderer" in continuationItems[0]) {return false;}if ("commentRenderer" in continuationItems[0]) {return true;}}return false;}function isCommentRendererV2(continuationItems) {if (continuationItems.length > 0) {if ("commentThreadRenderer" in continuationItems[0]) {return false;}if ("commentViewModel" in continuationItems[0]) {return true;}}return false;}// package.jsonvar package_default = {name: "return-youtube-comment-username",version: "0.6.0",devDependencies: {"@types/chrome": "^0.0.263","@types/encoding-japanese": "^2.0.5","@types/markdown-it": "^13.0.8",eslint: "^8.57.0",prettier: "^3.3.1","ts-extension-builder": "^0.2.8",},license: "MIT",scripts: {"esbuild-register": "node --require esbuild-register",build: "npx crx-monkey build",dev: "npx crx-monkey dev",lint: "npx eslint --fix src/**/*.ts",},type: "module",dependencies: {"@mdit-vue/plugin-title": "^2.1.3","@typescript-eslint/eslint-plugin": "^6.21.0","@typescript-eslint/parser": "^6.21.0","crx-monkey": "0.11.2","encoding-japanese": "^2.2.0","eslint-config-prettier": "^9.1.0","markdown-it": "^14.1.0",typescript: "^5.4.5",},};// src/utils/debugLog.tsfunction debugLog(message, value = "") {if (getRunningRuntime() === "Extension") {bypassSendMessage({type: "log",value: [`[rycu] ${message} %c${value}`, "color:cyan;"],});} else {console.log(`[rycu] ${message} %c${value}`, "color:cyan;");}}function debugErr(message) {console.error(`[rycu] ${message}`);if (getRunningRuntime() === "Extension") {bypassSendMessage({type: "err",value: [`[rycu] ${message}`],});}}function outputDebugInfo() {const logs = [""];const ytConf = window.yt.config_;if (ytConf !== void 0) {logs.push("PAGE_BUILD_LABEL: " +(ytConf.PAGE_BUILD_LABEL !== void 0? ytConf.PAGE_BUILD_LABEL: " undefined"),);logs.push("INNERTUBE_CLIENT_VERSION: " +(ytConf.INNERTUBE_CLIENT_VERSION !== void 0? ytConf.INNERTUBE_CLIENT_VERSION: " undefined"),);logs.push("INNERTUBE_CONTEXT_CLIENT_VERSION: " +(ytConf.INNERTUBE_CONTEXT_CLIENT_VERSION !== void 0? ytConf.INNERTUBE_CONTEXT_CLIENT_VERSION: " undefined"),);logs.push("INNERTUBE_CONTEXT_GL: " +(ytConf.INNERTUBE_CONTEXT_GL !== void 0? ytConf.INNERTUBE_CONTEXT_GL: " undefined"),);logs.push("Browser: " +(ytConf.INNERTUBE_CONTEXT.client.browserName !== void 0? ytConf.INNERTUBE_CONTEXT.client.browserName: " undefined"),);logs.push("Is login: " +(ytConf.LOGGED_IN !== void 0? `${ytConf.LOGGED_IN}`: " undefined"),);}logs.push(`Href: ${location.href}`);debugLog(`Return Youtube comment Username v${package_default.version}`,logs.join("\n"),);}// src/utils/findElementByTrackingParams.tsfunction findElementByTrackingParams(trackingParams, elementSelector) {let returnElement = null;let errorAlerted = false;const elems = document.querySelectorAll(elementSelector);for (let i = 0; i < elems.length; i++) {if (elems[i]?.trackedParams === void 0 &&elems[i]?.polymerController?.trackedParams === void 0) {debugErr(new Error("TrackedParams not found in element property."));}if (elems[i].trackedParams === trackingParams) {returnElement = elems[i];break;} else if (elems[i]?.polymerController?.trackedParams === trackingParams) {returnElement = elems[i];break;} else {if (!errorAlerted) {void searchTrackedParamsByObject(trackingParams, elems[i]);errorAlerted = true;}}}return returnElement;}async function reSearchElement(trackingParams, selector) {return await new Promise((resolve) => {let isFinding = true;const search = () => {const el = findElementByTrackingParams(trackingParams, selector);if (el !== null) {resolve(el);isFinding = false;}if (isFinding) {setTimeout(() => {search();}, 100);}};search();});}function findElementAllByCommentId(commnetId, elementSelector) {const returnElements = [];const elems = document.querySelectorAll(elementSelector);for (let i = 0; i < elems.length; i++) {if (elems[i] !== void 0) {if (elems[i]?.__data?.data?.commentId === void 0 &&elems[i]?.polymerController?.__data?.data?.commentId === void 0) {debugErr(new Error("Reply CommentId not found."));} else if (elems[i]?.__data?.data?.commentId !== void 0 &&elems[i].__data.data.commentId === commnetId) {returnElements.push(elems[i]);} else if (elems[i]?.polymerController?.__data?.data?.commentId !== void 0 &&elems[i].polymerController.__data.data.commentId === commnetId) {returnElements.push(elems[i]);}}}return returnElements;}async function reSearchElementAllByCommentId(commnetId, selector) {return await new Promise((resolve) => {let isFinding = true;const search = () => {const el = findElementAllByCommentId(commnetId, selector);if (el !== null) {resolve(el);isFinding = false;}if (isFinding) {setTimeout(() => {search();}, 100);}};search();});}async function searchTrackedParamsByObject(param, elem) {const elemObj = Object(elem);const search = (obj, history) => {Object.keys(obj).forEach((k) => {if (typeof obj[k] === "object") {search(obj[k], [...history, k]);} else if (obj[k] === param) {history.push(k);throw debugErr(new Error(`Unknown Object format!"${history.join(" > ")}"`),);}});};search(elemObj, []);}// src/types/AppendContinuationItemsAction.tsfunction isReplyContinuationItemsV1(obj) {return Object.hasOwn(obj[0], "commentRenderer");}function isReplyContinuationItemsV2(obj) {return Object.hasOwn(obj[0], "commentViewModel");}function isConfinuationItemV2(obj) {return Object.hasOwn(obj, "commentViewModel");}function isConfinuationItemV1(obj) {return Object.hasOwn(obj, "comment");}// src/utils/escapeString.tsfunction escapeString(text) {return text.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, `&quot;`).replace(/'/g, `&#39;`).replace(/&/g, `&amp;`);}function decodeString(text) {return text.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, `"`).replace(/&#39;/g, `'`).replace(/&amp;/g, `&`);}// src/utils/getUserName.tsvar isUseFeed = true;async function getUserName(id) {return new Promise((resolve) => {if (isUseFeed) {fetchFeed(id).then((name) => {resolve(name);}).catch(() => {isUseFeed = false;debugErr(new Error("Catch Feed API Error, so change to Browse mode."),);fetchBrowse(id).then((name) => {resolve(name);});});} else {fetchBrowse(id).then((name) => {resolve(name);});}});}async function fetchFeed(id) {return await fetch(`https://www.youtube.com/feeds/videos.xml?channel_id=${id}`,{method: "GET",cache: "default",keepalive: true,},).then(async (res) => {if (res.status !== 200)throw debugErr(new Error(`Feed API Errorstatus: ${res.status}`),);return await res.text();}).then((text) => {const match = text.match("<title>([^<].*)</title>");if (match !== null) {return decodeString(match[1]);} else {debugErr("XML title not found");return "";}});}async function fetchBrowse(id) {return await fetch(`https://www.youtube.com/youtubei/v1/browse?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8&prettyPrint=false`,{method: "POST",headers: {cache: "default",accept: "*/*","accept-encoding": "gzip, deflate, br","accept-language": "en","content-type": "application/json",dnt: "1",referer: `https://www.youtube.com/channel/${id}`,},body: JSON.stringify({context: {client: {hl: window.yt.config_.HL,gl: window.yt.config_.GL,clientName: "WEB",clientVersion: "2.20230628.01.00",platform: "DESKTOP",acceptHeader:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",},user: { lockedSafetyMode: false },request: {useSsl: true,},},browseId: id,params: "EgVhYm91dPIGBAoCEgA%3D",}),},).then(async (res) => {if (res.status !== 200)throw debugErr(new Error(`Browse API Errorstatus: ${res.status}`),);return await res.json();}).then((text) => {const name = text.header.c4TabbedHeaderRenderer.title;return decodeString(name);});}// src/rewrites/rewriteOfCommentRenderer/nameRewriteOfCommentRenderer.tsfunction nameRewriteOfCommentRenderer(commentRenderer,isNameContainerRender,userId,) {const commentRendererBody =commentRenderer.__shady_native_children.namedItem("body");if (commentRendererBody === null) {throw debugErr(new Error("Comment renderer body is null."));}let nameElem = commentRendererBody.querySelector("#main > #header > #header-author > h3 > a > yt-formatted-string",);if (isNameContainerRender) {const containerMain =commentRendererBody.__shady_native_children.namedItem("main");if (containerMain !== null) {nameElem = containerMain.querySelector("#header > #header-author > #author-comment-badge > ytd-author-comment-badge-renderer > a > #channel-name > #container > #text-container > yt-formatted-string",);}}void getUserName(userId).then((name) => {if (nameElem !== null) {if (nameElem.getAttribute("is-empty") !== null) {nameElem.removeAttribute("is-empty");}if (isNameContainerRender) {nameElem.textContent = escapeString(name);} else {nameElem.textContent = name;}} else {debugErr(new Error("Name element is null"));}}).catch((e) => {debugErr(e);});}// src/rewrites/rewriteOfCommentRenderer/mentionRewriteOfCommentRenderer.tsfunction mentionRewriteOfCommentRenderer(commentRenderer) {const commentRendererBody =commentRenderer.__shady_native_children.namedItem("body");const main2 = commentRendererBody?.querySelector("#main");if (main2 !== void 0 && main2 !== null) {const aTags = main2.querySelectorAll("#comment-content > ytd-expander > #content > #content-text > a",);for (let i = 0; i < aTags.length; i++) {if (aTags[i].getAttribute("href")?.match("/channel/.*") !== null) {const href = aTags[i].getAttribute("href");if (href !== null) {void getUserName(href.split("/")[2]).then((name) => {aTags[i].textContent = `@${name} `;}).catch((e) => {debugErr(e);});} else {debugErr(new Error("Mention Atag has not Href attr."));}}}}}// src/rewrites/rewriteOfCommentRenderer/nameRewriteOfCommentViewModel.tsfunction nameRewriteOfCommentViewModel(commentViewModel) {const commentViewModelBody =commentViewModel.__shady_native_children.namedItem("body");if (commentViewModelBody === null) {throw debugErr(new Error("Comment view model body is null."));}if (!commentViewModelBodyGuard(commentViewModelBody)) {throw debugErr(new Error("The object format of comment view model is invalid."),);}const isNameContainerRender =commentViewModelBody.__shady.ea.__shady.ea.host.authorCommentBadge !==null;let nameElem = commentViewModelBody.querySelector("#main > #header > #header-author > h3 > a > span",);const userId =commentViewModelBody.__shady.ea.__shady.ea.host.authorNameEndpoint.browseEndpoint.browseId;const userHandle =commentViewModelBody.__shady.ea.__shady.ea.host.authorNameEndpoint.browseEndpoint.canonicalBaseUrl.substring(1,);if (isNameContainerRender) {const containerMain =commentViewModelBody.__shady_native_children.namedItem("main");if (containerMain !== null) {nameElem = containerMain.querySelector("#header > #header-author > #author-comment-badge > ytd-author-comment-badge-renderer > a > #channel-name > #container > #text-container > yt-formatted-string",);}}void getUserName(userId).then((name) => {if (nameElem !== null) {if (nameElem.getAttribute("is-empty") !== null) {nameElem.removeAttribute("is-empty");}let innerText = name;if (window.__rycu.settings.isShowNameToHandle) {innerText = decodeURI(userHandle) + `  ( ${name} )`;}if (window.__rycu.settings.isShowHandleToName) {innerText = name + `  ( ${decodeURI(userHandle)} )`;}if (isNameContainerRender) {nameElem.textContent = escapeString(innerText);} else {nameElem.textContent = innerText;}} else {debugErr(new Error("Name element is null"));}}).catch((e) => {debugErr(e);});}function commentViewModelBodyGuard(elem) {return Object.hasOwn(elem, "__shady");}// src/rewrites/rewriteOfCommentRenderer/mentionRewriteOfCommentRendererV2.tsfunction mentionRewriteOfCommentRendererV2(commentRenderer) {const commentRendererBody =commentRenderer.__shady_native_children.namedItem("body");const main2 = commentRendererBody?.querySelector("#main");if (main2 !== void 0 && main2 !== null) {const aTags = main2.querySelectorAll("#expander > #content > #content-text > span > span > a",);for (let i = 0; i < aTags.length; i++) {if (aTags[i].getAttribute("href")?.match("/channel/.*") !== null) {const href = aTags[i].getAttribute("href");if (href !== null) {void getUserName(href.split("/")[2]).then((name) => {aTags[i].textContent = `@${name} `;}).catch((e) => {debugErr(e);});} else {debugErr(new Error("Mention Atag has not Href attr."));}}}}}// src/rewrites/reply.tsfunction rewriteReplytNameFromContinuationItems(continuationItems) {debugLog("Rewrite Reply.");if (isReplyContinuationItemsV1(continuationItems)) {debugLog("Rewrite reply of continuationItems.");for (let i = 0; i < continuationItems.length; i++) {const { commentRenderer } = continuationItems[i];if (commentRenderer !== void 0) {void getReplyElem(commentRenderer.trackingParams, "V1").then((replyElem) => {reWriteReplyElem(replyElem, commentRenderer);},);}}}if (isReplyContinuationItemsV2(continuationItems)) {debugLog("Rewrite reply of comment view model.");for (let i = 0; i < continuationItems.length; i++) {const { commentViewModel } = continuationItems[i];if (commentViewModel !== void 0) {void getReplyElem(commentViewModel.rendererContext.loggingContext.loggingDirectives.trackingParams,"V2",).then((replyElem) => {reWriteReplyElemV2(replyElem);});}}}}function reWriteReplyElem(replyElem, rendererData) {let isContainer = rendererData.authorIsChannelOwner;if (rendererData.authorCommentBadge !== void 0) {isContainer = true;}nameRewriteOfCommentRenderer(replyElem,isContainer,rendererData.authorEndpoint.browseEndpoint.browseId,);mentionRewriteOfCommentRenderer(replyElem);replyInputRewrite(replyElem);}function reWriteReplyElemV2(replyElem) {nameRewriteOfCommentViewModel(replyElem);mentionRewriteOfCommentRendererV2(replyElem);replyInputRewrite(replyElem);}async function getReplyElem(trackedParams, version) {return await new Promise((resolve) => {const selector ="#replies > ytd-comment-replies-renderer > #expander > #expander-contents > #contents > " +(version === "V1"? "ytd-comment-renderer": "ytd-comment-view-model");const commentRenderer = findElementByTrackingParams(trackedParams,selector,);if (commentRenderer !== null) {resolve(commentRenderer);} else {void reSearchElement(trackedParams, selector).then((commentRenderer2) => {resolve(commentRenderer2);},);}});}function rewriteTeaserReplytNameFromContinuationItems(continuationItems) {debugLog("Rewrite teaser Reply.");for (let i = 0; i < continuationItems.length; i++) {if (isReplyContinuationItemsV1(continuationItems)) {debugLog("Teaser reply of continuationItems.");const { commentRenderer } = continuationItems[i];if (commentRenderer !== void 0) {void reSearchElementAllByCommentId(commentRenderer.commentId,"ytd-comment-replies-renderer > #teaser-replies > ytd-comment-renderer",).then((replyElems) => {replyElems.forEach((replyElem) => {reWriteReplyElem(replyElem, commentRenderer);});});void reSearchElementAllByCommentId(commentRenderer.commentId,"ytd-comment-replies-renderer > #expander > #expander-contents > #contents > ytd-comment-renderer",).then((replyElems) => {replyElems.forEach((replyElem) => {reWriteReplyElem(replyElem, commentRenderer);});});}}if (isReplyContinuationItemsV2(continuationItems)) {debugLog("Teaser reply of comment view model.");const { commentViewModel } = continuationItems[i];if (commentViewModel !== void 0) {const elem = findElementByTrackingParams(commentViewModel.rendererContext.loggingContext.loggingDirectives.trackingParams,"#teaser-replies > ytd-comment-view-model",);if (elem === null) {throw debugErr(new Error("Can not found Teaser Reply in V2 Elem."),);}reWriteReplyElemV2(elem);}}}}function replyInputRewrite(replyElem) {const replyToReplyBtn = replyElem.querySelector("#reply-button-end > ytd-button-renderer",);const replyToReplyHander = () => {const replyLink = replyElem.querySelector("#contenteditable-root > a");const href = replyLink?.getAttribute("href");const channelId = href?.split("/")[2];if (channelId !== void 0 && replyLink !== null) {void getUserName(channelId).then((name) => {replyLink.textContent = ` @${name}`;});}replyToReplyBtn?.removeEventListener("click", replyToReplyHander);};replyToReplyBtn?.addEventListener("click", replyToReplyHander);document.addEventListener("rycu-pagechange", () => {replyToReplyBtn?.removeEventListener("click", replyToReplyHander);});}// src/rewrites/comment.tsfunction rewriteCommentNameFromContinuationItems(continuationItems) {debugLog("Rewrite Comment.");for (let i = 0; i < continuationItems.length; i++) {if (continuationItems[i].commentThreadRenderer !== void 0) {void getCommentElem(continuationItems[i].commentThreadRenderer.trackingParams,).then((commentElem) => {reWriteCommentElem(commentElem,continuationItems[i].commentThreadRenderer,);});const teaserContents =continuationItems[i].commentThreadRenderer.replies?.commentRepliesRenderer.teaserContents;if (teaserContents !== void 0) {rewriteTeaserReplytNameFromContinuationItems(teaserContents);}}}}function reWriteCommentElem(commentElem, commentThreadRenderer) {const commentRenderer =commentElem.__shady_native_children.namedItem("comment");if (commentRenderer !== null && commentRenderer !== void 0) {if (isConfinuationItemV1(commentThreadRenderer)) {debugLog("Rewrite of Comment Renderer.");let isContainer =commentThreadRenderer.comment.commentRenderer.authorIsChannelOwner;if (commentThreadRenderer.comment.commentRenderer.authorCommentBadge !==void 0) {isContainer = true;}nameRewriteOfCommentRenderer(commentRenderer,isContainer,commentThreadRenderer.comment.commentRenderer.authorEndpoint.browseEndpoint.browseId,);}if (isConfinuationItemV2(commentThreadRenderer)) {debugLog("Rewrite of Comment view model.");nameRewriteOfCommentViewModel(commentRenderer);}}}async function getCommentElem(trackingParams) {return await new Promise((resolve) => {const commentElem = findElementByTrackingParams(trackingParams,"#comments > #sections > #contents > ytd-comment-thread-renderer",);if (commentElem !== null) {resolve(commentElem);} else {void reSearchElement(trackingParams, "ytd-comment-thread-renderer").then((commentElem2) => {resolve(commentElem2);}).catch((e) => {debugErr(e);});}});}// src/handlers/handleYtAppendContinuationItemsAction.tsfunction handleYtAppendContinuationItemsAction(detail) {const continuationItems =detail.args[0].appendContinuationItemsAction.continuationItems;if (isCommentRenderer(continuationItems) ||isCommentRendererV2(continuationItems)) {const replyDetail = detail;setTimeout(() => {rewriteReplytNameFromContinuationItems(replyDetail.args[0].appendContinuationItemsAction.continuationItems,);}, 100);} else {const commentDetail = detail;setTimeout(() => {rewriteCommentNameFromContinuationItems(commentDetail.args[0].appendContinuationItemsAction.continuationItems,);}, 400);}}// src/handlers/handleYtCreateCommentAction.tsfunction handleYtCreateCommentAction(detail) {const createCommentDetail = detail;const continuationItems = [{commentThreadRenderer:createCommentDetail.args[0].createCommentAction.contents.commentThreadRenderer,},];setTimeout(() => {rewriteCommentNameFromContinuationItems(continuationItems);}, 100);}// src/handlers/handleYtCreateCommentReplyAction.tsfunction handleYtCreateCommentReplyAction(detail) {const createReplyDetail = detail;const continuationItems = [{commentRenderer:createReplyDetail.args[0].createCommentReplyAction.contents.commentRenderer,},];setTimeout(() => {rewriteTeaserReplytNameFromContinuationItems(continuationItems);}, 100);}// src/rewrites/highlightedReply.tsfunction rewriteHighlightedReply(trackedParams) {getReplyElem2(trackedParams, "V1").then((replyElem) => {reWriteReplyElemV2(replyElem);});}function rewriteHighlightedReplyV2(trackedParams) {getReplyElem2(trackedParams, "V2").then((replyElem) => {reWriteReplyElemV2(replyElem);});}async function getReplyElem2(trackedParams, version) {return await new Promise((resolve) => {const selector ="ytd-comment-replies-renderer > #teaser-replies > " +(version === "V1"? "ytd-comment-renderer": "ytd-comment-view-model");const commentRenderer = findElementByTrackingParams(trackedParams,selector,);if (commentRenderer !== null) {resolve(commentRenderer);} else {void reSearchElement(trackedParams, selector).then((commentRenderer2) => {resolve(commentRenderer2);},);}});}// src/handlers/handleYtGetMultiPageMenuAction.tsfunction handleYtGetMultiPageMenuAction(detail) {debugLog("handleYtGetMultiPageMenuAction");const getMultiPageMenuDetail = detail;const continuationItems =getMultiPageMenuDetail.args[0].getMultiPageMenuAction.menu.multiPageMenuRenderer.sections[1].itemSectionRenderer?.contents;const highLightedTeaserContents =getMultiPageMenuDetail.args[0]?.getMultiPageMenuAction?.menu?.multiPageMenuRenderer.sections[1].itemSectionRenderer?.contents[0]?.commentThreadRenderer.replies?.commentRepliesRenderer?.teaserContents;if (continuationItems !== void 0) {setTimeout(() => {rewriteCommentNameFromContinuationItems(continuationItems);if (highLightedTeaserContents !== void 0) {debugLog("HighLighted Teaser Reply found.");if (isReplyContinuationItemsV1(highLightedTeaserContents)) {debugLog("highLighted Teaser Reply V1");const highLightedReplyRenderer =highLightedTeaserContents[0]?.commentRenderer;rewriteHighlightedReply(highLightedReplyRenderer.trackingParams);} else {debugLog("highLighted Teaser Reply V2");const commentViewModel =highLightedTeaserContents[0]?.commentViewModel;const trackingParams =commentViewModel.rendererContext.loggingContext.loggingDirectives.trackingParams;rewriteHighlightedReplyV2(trackingParams);}}}, 100);}}// src/handlers/handleYtHistory.tsfunction handleYtHistory(detail) {const historyDetail = detail;const continuationItems =historyDetail.args[1].historyEntry?.rootData.response.contents.twoColumnWatchNextR###lts?.r###lts?.r###lts?.contents[3]?.itemSectionRenderer?.contents;if (continuationItems !== void 0) {setTimeout(() => {rewriteCommentNameFromContinuationItems(continuationItems);}, 100);}}// src/handlers/handleYtReloadContinuationItemsCommand.tsfunction handleYtReloadContinuationItemsCommand(detail) {const reloadDetail = detail;const { slot } = reloadDetail.args[0].reloadContinuationItemsCommand;if (slot === "RELOAD_CONTINUATION_SLOT_BODY") {const continuationItems =reloadDetail.args[0].reloadContinuationItemsCommand.continuationItems;if (continuationItems !== void 0) {setTimeout(() => {rewriteCommentNameFromContinuationItems(continuationItems);}, 100);}}}// src/index.tsfunction main() {const settings = {isShowHandleToName: false,isShowNameToHandle: false,};window.__rycu = {settings,};if (getRunningRuntime() === "Extension") {bypassSendMessage({type: "getShowHandleToName",value: null,},{},(isShowHandleToName) => {window.__rycu.settings.isShowHandleToName = isShowHandleToName;},);bypassSendMessage({type: "getShowNameToHandle",value: null,},{},(isShowNameToHandle) => {window.__rycu.settings.isShowNameToHandle = isShowNameToHandle;},);}const handleYtAction = (e) => {switch (e.detail.actionName) {case "yt-append-continuation-items-action":handleYtAppendContinuationItemsAction(e.detail);break;case "yt-reload-continuation-items-command":handleYtReloadContinuationItemsCommand(e.detail);break;case "yt-history-load":handleYtHistory(e.detail);break;case "yt-get-multi-page-menu-action":handleYtGetMultiPageMenuAction(e.detail);break;case "yt-create-comment-action":handleYtCreateCommentAction(e.detail);break;case "yt-create-comment-reply-action":handleYtCreateCommentReplyAction(e.detail);break;}};document.addEventListener("yt-action", handleYtAction);document.addEventListener("yt-navigate-finish", () => {document.dispatchEvent(new Event("rycu-pagechange"));outputDebugInfo();});}main();})();}if (location.href.match("https://www.youtube.com/*") !== null) {document.addEventListener("DOMContentLoaded", () => {const script = document.createElement("script");if (unsafeWindow.trustedTypes !== undefined) {const policy = unsafeWindow.trustedTypes.createPolicy("crx-monkey-trusted-inject-policy",{ createScript: (input) => input },);script.text = policy.createScript(script.text + `(${c3JjL2luZGV4LnRz.toString()})();`,);} else {script.innerHTML =script.innerHTML + `(${c3JjL2luZGV4LnRz.toString()})();`;}unsafeWindow.document.body.appendChild(script);});}