You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1 lines
1.1 KiB

(()=>{"use strict";document.addEventListener("asbplayer-get-synced-data",(async()=>{const e={error:"",basename:"",subtitles:[]};try{const t=await fetch(window.location.href).then((e=>{if(!e.ok)throw new Error(`YT Context Retrieval failed with Status ${e.status}/${e.statusText}...`);return e.text()})).then((e=>(new window.DOMParser).parseFromString(e,"text/html"))).then((e=>{const t=e.body.querySelectorAll("script");let n;for(let e=0;e<t.length;++e){const r=t[e];if(r.textContent?.includes("ytInitialPlayerResponse")){n=r;break}}if(!n)throw new Error("YT Player Context not found...");return new Function(`${n.textContent}; return ytInitialPlayerResponse;`)()}));if(!t)throw new Error("YT Player Context not found...");e.basename=t.videoDetails?.title||document.title,e.subtitles=(t?.captions?.playerCaptionsTracklistRenderer?.captionTracks||[]).map((e=>({label:`${e.languageCode} - ${e.name?.simpleText}`,language:e.languageCode.toLowerCase(),url:e.baseUrl,extension:"ytxml"})))}catch(t){t instanceof Error?e.error=t.message:e.error=String(t)}finally{document.dispatchEvent(new CustomEvent("asbplayer-synced-data",{detail:e}))}}),!1)})();