mogultv/content/youtube/inject.js

17 lines
12 KiB
JavaScript

import { e } from '../../index-6137f488.js';
import { e as e$2 } from '../../background.injected-af36b849.js';
import { n, e as e$4 } from '../../get_stream_details-b6177000.js';
import { d as dt, t } from '../../parse_token.util-ed270559.js';
import { e as e$3 } from '../../fetch_youtube-71c76849.js';
import { s } from '../../router.interface-6cdbc015.js';
import { e as e$1 } from '../../style-inject.es-a0e1a0ba.js';
function u(t){if(!t)return 0;t=t.toLowerCase();const e=/\((.+)\)/.exec(t);if(!e)return 1;const n=e[1].split(/\s/),i=parseInt(n[0]);return isNaN(i)?0:n[1].startsWith("year")?12*parseInt(n[0]):parseInt(n[0])}function d(t,e){const n=e;for(let e=0;e<n.length;e++)if(n[e][0]>t)return n[e-1][1];return n[n.length-1][1]}function l(t,e,n,i){const a=e(t.authorExternalChannelId);!function(t,e){(null==e?void 0:e.a)&&(t.authorName={simpleText:e.a});}(t,a),function(t,e){var n,i;t.authorBadges||(t.authorBadges=[]);for(const a of t.authorBadges){const t=a.liveChatAuthorBadgeRenderer;(null===(n=t.icon)||void 0===n?void 0:n.iconType)?t._mtvType=null===(i=t.icon)||void 0===i?void 0:i.iconType.toLowerCase():t.customThumbnail&&(t._mtvType="member"),"moderator"===t._mtvType&&(delete t.icon,t._mtvType="moderator",t.customThumbnail={thumbnails:[{url:e,width:18,height:18}]});}}(t,i),function(t,e,n){if((null==n?void 0:n.b)&&!(n.b<=0))for(const i of t.authorBadges){const t=i.liveChatAuthorBadgeRenderer;if("member"!==t._mtvType)continue;const a=u(t.tooltip);if(0===a)continue;const o=a+n.b,r=`Member (${o} months)`,s=d(o,e);t.customThumbnail=s,delete t.icon,t.tooltip=r,t.accessibility.accessibilityData.label=r;}}(t,n,a);}const h=/[\s.,?!]/;function f(t){const e=[];let n=0;for(let i=0;i<t.length-1;i++)h.test(t[i])!==h.test(t[i+1])&&(e.push(t.substring(n,i+1)),n=i+1);return e.push(t.substring(n)),e}function m(t$1){let e;if(t$1.provider===t.Twitch)e=`https://static-cdn.jtvnw.net/emoticons/v2/${t$1.id}/static/dark/1.0`;else if(t$1.provider===t.FFZ)e=`https://cdn.frankerfacez.com/emote/${t$1.id}/1`;else {if(t$1.provider!==t.BTTV)return;e=`https://cdn.betterttv.net/emote/${t$1.id}/1x`;}return {emojiId:"mogultv-"+t$1.name+"-"+t$1.id,image:{thumbnails:[{url:e}],accessibility:{accessibilityData:{label:t$1.name}}},isCustomEmoji:!0,searchTerms:[t$1.name],shortcuts:[":"+t$1.name+":",t$1.name]}}const g=["#ff0000","#009000","#b22222","#ff7f50","#9acd32","#ff4500","#2e8b57","#daa520","#d2691e","#5f9ea0","#1e90ff","#ff69b4","#00ff7f","#a244f9"];
/*!
* cookie
* Copyright(c) 2012-2014 Roman Shtylman
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
var v=function(t,e){if("string"!=typeof t)throw new TypeError("argument str must be a string");for(var n={},i=e||{},a=t.split(p),o=i.decode||y,r=0;r<a.length;r++){var s=a[r],c=s.indexOf("=");if(!(c<0)){var u=s.substr(0,c).trim(),d=s.substr(++c,s.length).trim();'"'==d[0]&&(d=d.slice(1,-1)),null==n[u]&&(n[u]=w(d,o));}}return n},y=decodeURIComponent,p=/; */;function w(t,e){try{return e(t)}catch(e){return t}}var b;class A{constructor(t){this.gatewayService=t;}addAliasesToMessage(t){l(t,(t=>this.gatewayService.getUserInfo(t)),this.gatewayService.badgeList,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAABg2lDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV/TiiIVBzuIOGRonSyIijpqFYpQIdQKrTqYXPoFTRqSFBdHwbXg4Mdi1cHFWVcHV0EQ/ABxc3NSdJES/5cUWsR4cNyPd/ced+8AoVFhmhUaAzTdNtPJhJjNrYrdrwgjBGAaMZlZxpwkpeA7vu4R4OtdnGf5n/tz9Kl5iwEBkXiWGaZNvEE8tWkbnPeJI6wkq8TnxKMmXZD4keuKx2+ciy4LPDNiZtLzxBFisdjBSgezkqkRTxJHVU2nfCHrscp5i7NWqbHWPfkLw3l9ZZnrNIeRxCKWIEGEghrKqMBGnFadFAtp2k/4+Idcv0QuhVxlMHIsoAoNsusH/4Pf3VqFiXEvKZwAul4c5yMGdO8CzbrjfB87TvMECD4DV3rbX20AM5+k19ta9Ajo3wYurtuasgdc7gCDT4Zsyq4UpCkUCsD7GX1TDhi4BXrXvN5a+zh9ADLUVeoGODgERoqUve7z7p7O3v490+rvB3pIcqqJKL5aAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QwEARQDdqq2HwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAGkSURBVDjLpdSxS5tBGMfx7+V9JamLGbSQNNAQdBBJhZKWLPkHxKmQEgd9xUFwCRQKHe1cKHSztCCmLyQlkriULu2kSyBQkCCCg0bQCJrhTSUxoW+8DuLRNPqq8aa7hx8f7nk4TpDXDCQfAC+9rTKCt4KctgcEnZKJ/pcYoRmG+oewz21Wdlb4+PvzvxFLvwlJD5vEx+Lomg5A6ahE/nTt/5hXd0Le+98x9WRKnUtHJSYKkxzLalfW5djSaKILOZCHqvZQDLIwMO8MPdOf4h/wq3Or3epAAuIRP6M/MEYMZyjY1zm6SCBC8XlBId+j3wj7wuiui+lcO6PVszxNu4lH93RiFHBrbsK+MAAnjRNnKBVaxq25u+qRQETt7bZNavfL9a2lQstMj08jhHB8idmtLF8b2atvdBUipaTVbqk2K7UKme0MrytvVEa/DWJumhi7c8QfvKD8p0zR/tV1O0FOk7dBblougE+Pl+6FKGijukGtWesZUZBZT5NcT2KdWT0hl8O2AK9ZT8M6xAZjzO8v3PFLkmVBTpsFuQgi2Nu/Ji3QXv0FPBynaffELJkAAAAASUVORK5CYII=");}}class T{constructor(t){this.gatewayService=t;}addTwitchEmotesToMessage(t){return function(t,e){const n=[];for(const i of t.runs)if("string"==typeof i.text){const{text:t}=i;let a=0,o=0;const r=f(t);let s=!1;for(const i of r){const r=e("🌝"===i?"Kappa":i);r&&(s=!0,a>0&&n.push({text:t.substring(o,a)}),n.push({emoji:r}),o=a+i.length),a+=i.length;}s?n.push({text:t.substring(o,a)}):n.push(i);}else if("🌝"===i.emoji.emojiId){const t=e("Kappa");t&&n.push({emoji:t});}else n.push(i);return t.runs=n,t}(t,(t=>this.gatewayService.getEmote(t)))}}class x extends e.exports.EventEmitter{constructor(t){super(),this.backgroundService=t,this.badgeList=[],this.emoteCache=new Map,t.getLiveStorageValue("auth.token",dt).then((t=>this.myUserInfo=t)),this.fetchUserInfo(),this.fetchEmotes(),this.fetchBadges(),setInterval((()=>{this.fetchUserInfo(),this.fetchEmotes(),this.fetchBadges();}),3e5);}async fetchBadges(){const t=await this.backgroundService.fetch("/gateway/badges");if(!s(t))return;const e=t.body.sort(((t,e)=>t.months-e.months));this.badgeList=e.map((t=>[t.months,{thumbnails:[{url:t.url,width:16,height:16}]}])),this.emit("badges",this.badgeList);}async fetchEmotes(){const t=await this.backgroundService.fetch("/gateway/emotes");if(s(t)){this.emoteCache.clear();for(const e of t.body){const t=m(e);t&&this.emoteCache.set(e.name,t);}this.emit("emotes",this.emoteCache);}}async fetchUserInfo(){const t=await this.backgroundService.fetch("/gateway/users");s(t)&&(this.infoCache=new Map(t.body),this.emit("users",this.infoCache));}getSerializedMetadata(t){const e=t.links.find((e=>e.prv===t.prv)),n={a:null==e?void 0:e.name,b:t.meta.sub,c:t.meta.col};return Object.values(n).filter((t=>void 0!==t)).length>0?n:void 0}getUserInfo(t){var e,n,i;if((null===(n=null===(e=this.myUserInfo)||void 0===e?void 0:e.value)||void 0===n?void 0:n.sub)===t){const t=this.getSerializedMetadata(this.myUserInfo.value);if(t)return t}return null===(i=this.infoCache)||void 0===i?void 0:i.get(t)}getEmote(t){var e;return null===(e=this.emoteCache)||void 0===e?void 0:e.get(t)}}async function I(t,n){await customElements.whenDefined(t);const i=customElements.get(t);if(!i)return void console.warn(`Polymer: ${t} not found`);const a=i.prototype[n.functionName];i.prototype[n.functionName]=function(...t){if(n.ludwigOnly&&!e$4())return a.apply(this,t);if(n.type===b.OverrideFunction)try{return n.function.apply(this,t)}catch(t){console.error(JSON.stringify(n)),console.error(t);}if(n.type===b.RunBefore)try{n.function.apply(this,t);}catch(t){console.error(t);}let i=a.apply(this,t);if(n.type===b.RunAfter)try{i=n.function.apply(this,[i]);}catch(t){console.error(t);}return i};}!function(t){t[t.OverrideFunction=0]="OverrideFunction",t[t.RunBefore=1]="RunBefore",t[t.RunAfter=2]="RunAfter";}(b||(b={}));const B=(t,e,{LudwigOnly:n})=>({functionName:t,function:e,ludwigOnly:n||!1,type:b.OverrideFunction}),E=(t,e,{LudwigOnly:n})=>({functionName:t,function:e,ludwigOnly:n||!1,type:b.RunBefore});function C(t,n,i){I("yt-live-chat-item-list-renderer",E("handleAddChatItemAction_",(function(e){e.item.liveChatTextMessageRenderer&&(t.addTwitchEmotesToMessage(e.item.liveChatTextMessageRenderer.message),n.addAliasesToMessage(e.item.liveChatTextMessageRenderer));}),{LudwigOnly:true})),I("yt-live-chat-text-input-field-renderer",((t,e,{LudwigOnly:n})=>({functionName:t,function:e,ludwigOnly:n||!1,type:b.RunAfter}))("calculateLiveChatRichMessageInput_",(function(t){var e;if(!(null==t?void 0:t.textSegments))return t;for(const n of t.textSegments)if(null===(e=n.emojiId)||void 0===e?void 0:e.startsWith("mogultv")){const[,t]=n.emojiId.split("-");delete n.emojiId,n.text=t;}return t}),{LudwigOnly:true})),i.on("emotes",(t=>{if(!e$4())return;const n=document.querySelector("yt-live-chat-item-list-renderer");if(null==n?void 0:n.emojiManager){if(n.emojiManager._mogulTvLoaded)return;n.emojiManager._mogulTvLoaded=!0,n.emojiManager.load([...t.values()]);}else console.warn("Cannot find chat list");}));}function S(t){return t?t._mtvType?t._mtvType:t.icon?t.icon.iconType.toLowerCase():t.customThumbnail?"member":"":""}async function M(t){I("yt-live-chat-author-badge-renderer",B("computeType_",(t=>S(t.liveChatAuthorBadgeRenderer)),{LudwigOnly:true})),I("yt-live-chat-author-chip",B("computeAuthorType_",(function(e){var n,i;const a=this.$["author-name"];if(a){let e;const o=null===(n=this.parentElement)||void 0===n?void 0:n.parentElement,r=null===(i=null==o?void 0:o.data)||void 0===i?void 0:i.authorExternalChannelId;if(r){const n=t.getUserInfo(r);(null==n?void 0:n.c)&&(e=n.c);}e||(e=function(t){const e=function(t){let e=0;if(0===t.length)return 0;for(let n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n),e|=0;return e}(t);return g[(e%g.length+g.length)%g.length]}(this.authorName.simpleText)),a.style.color=e;}return function(t){if(!t)return "";for(const e of t){if(!e.liveChatAuthorBadgeRenderer)continue;const t=S(e.liveChatAuthorBadgeRenderer);if("verified"!==t)return t}return ""}(e)}),{LudwigOnly:true}));}e$1("\n/* Make the masthead transparent unless we are hovering it */\nbody[data-mogul-theater-mode] #masthead-container {\n opacity: 0.1;\n transition: opacity .2s ease;\n}\n\nbody[data-mogul-theater-mode] #masthead-container:hover {\n opacity: 1;\n}\n\n\n@media screen and (min-width: 1014px) {\n /* Make chat fill screen vertically */\n body[data-mogul-theater-mode] #chat.ytd-watch-flexy {\n height: calc(100vh - 56px) !important;\n width: var(--ytd-watch-flexy-sidebar-width);\n position: absolute;\n top: 56px;\n right: 0;\n }\n\n body[data-mogul-theater-mode] #player-theater-container.ytd-watch-flexy {\n width: calc(100vw - var(--ytd-watch-flexy-sidebar-width) - var(--ytd-watch-flexy-scrollbar-width)) !important;\n max-width: calc(100vw - var(--ytd-watch-flexy-sidebar-width) - var(--ytd-watch-flexy-scrollbar-width)) !important;\n height: calc(100vh - 56px) !important;\n max-height: calc(100vh - 56px) !important;\n }\n}");const R=null!==document.querySelector("yt-live-chat-app"),j=new e$2;if(R){const t=new x(j),e=new T(t),n=new A(t);L=j,C(e,n,O=t),async function(t){const e=await t.getLiveStorageValue("settings.chatBatching");I("yt-timed-continuation",E("dataChanged_",(function(){e.value&&(this.data.timeoutMs/=3*Math.random()+2);}),{LudwigOnly:!0})),I("yt-live-chat-renderer",E("preprocessActions_",(function(t){const n=Object.getPrototypeOf(this.smoothedQueue_);for(const t in n)if(t.includes("emitSmoothedMessages")){n[t]=function(){if(this.nextUpdateId_=null,this.messageQueue_.length){let i=1e4;this.estimatedUpdateInterval_&&(i=this.estimatedUpdateInterval_-Date.now()+this.lastUpdateTime_);const a=this.messageQueue_.length<i/80?1:Math.ceil(this.messageQueue_.length/(i/80)),o=this.messageQueue_.splice(0,a);if(this.callback&&this.callback(o[0]),this.messageQueue_.length){let o=1;e.value||(1===a?(o=i/this.messageQueue_.length,o*=Math.random()+.5,o=Math.min(1e3,o),o=Math.max(80,o)):o=80),this.nextUpdateId_=window.setTimeout(n[t].bind(this),o);}}};break}return t}),{LudwigOnly:!0}));}(L),M(O);}else !async function(t){async function n(){const n=document.querySelector("ytd-watch-flexy"),i=(null==n?void 0:n.hasAttribute("theater"))||!1,a=(null==n?void 0:n.hasAttribute("fullscreen"))||!1,o=await t.getStorage("settings.theaterMode"),r=e$4(!1);return i&&!a&&o&&r}let i=await n();setInterval((async()=>{await n()?(document.body.setAttribute("data-mogul-theater-mode",""),i||window.dispatchEvent(new Event("resize")),i=!0):(i=!1,document.body.removeAttribute("data-mogul-theater-mode"));}),250);}(j),async function(t){if(!window.ytcfg)return;const e={key:window.ytcfg.get("INNERTUBE_API_KEY"),authUser:window.ytcfg.get("SESSION_INDEX"),pageId:window.ytcfg.get("DELEGATED_SESSION_ID"),href:window.location.href,context:window.ytcfg.get("INNERTUBE_CONTEXT")};n=await e$3(Object.assign(Object.assign({},e),{cookies:v(document.cookie)})),i=await t.fetch("/auth/@me"),(!n.success||!i.meta.isSuccess||n.data.id!==(null===(a=i.body)||void 0===a?void 0:a.sub))&&await t.fetch("/auth/login",e);var n,i,a;}(j),setInterval((()=>{const t=document.querySelector("ytd-live-chat-frame iframe");if(t&&!t.src.includes("QXZRwEzaeHNfDqtD")){const e=n();t.src+=`#QXZRwEzaeHNfDqtD=${encodeURIComponent(JSON.stringify(e))}`;}}),1e3);var L,O;