Guest User

Untitled

a guest
Oct 22nd, 2025
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.58 KB | None | 0 0
  1. {"YOUTUBE-h-q-p":{"useimg":1,"link":"^(?:(?:(?:(?:\\w+\\.)?[yY][oO][uU][tT][uU][bB][eE](?:-nocookie|kids)?\\.com|youtube\\.googleapis\\.com)/(?:.*?\\#/)?(?:(?:(?:v|embed|(?:liv)?e|shorts)/(?!videoseries|live_stream))|(?:(?:(?:watch|movie)(?:_popup)?(?:\\.php)?/?)?(?:\\?|\\#!?)(?:.*?[&;])??v=)))|youtu\\.be/)([0-9A-Za-z_-]{11})(?:\\?(thumb\\b))?(?:[?&](?:star)?t=(\\d+(?:\\.\\d+)?)s?)?(?:&end=(\\d+(?:\\.\\d+)?)s?)?.*$","url":": (()=>{var disable_on_thumbs = false , disable_on_links = false , disable_on_iframe = false ; const n=this.node; if(disable_on_iframe&&n.IMGS_TRG?.localName==='iframe'||disable_on_links&&!n.IMGS_TRG||disable_on_thumbs&&(/\\/embed\\/[\\w-]{11}\\?thumb\\?/.test(n.href)||n.id===\"thumbnail\")||(n.nodeName===\"YTD-BADGE-SUPPORTED-RENDERER\"||n.id!==undefined&&n.id!=='title'&&n.id!=='video-title'&&/^(?:yt-simple-endpoint style-scope ytd-compact-movie-renderer|movie-metadata style-scope ytd-compact-movie-renderer|badge badge-style-type-ypc style-scope ytd-badge-supported-renderer style-scope ytd-badge-supported-renderer|ytp-impression-link(?:-[a-z]+)?|badge badge-style-type-live-now-alternate style-scope ytd-badge-supported-renderer style-scope ytd-badge-supported-renderer|ytp-youtube-button ytp-button yt-uix-sessionlink|ytp-title-link yt-uix-sessionlink|style-scope ytd-thumbnail-overlay-hover-text-renderer|progress|style-scope ytd-thumbnail-overlay-toggle-button-renderer|playlist-drag-handle style-scope ytd-playlist-panel-video-renderer|style-scope ytd-thumbnail(?:-overlay-time-status-renderer)?|style-scope ytd-playlist-panel-video-renderer|editable style-scope ytd-playlist-panel-video-renderer style-scope ytd-playlist-panel-video-renderer|yt-simple-endpoint style-scope ytd-structured-description-playlist-lockup-renderer|style-scope ytd-macro-markers-list-item-renderer|style-scope ytd-structured-description-playlist-lockup-renderer|yt-simple-endpoint style-scope ytd-structured-description-video-lockup-renderer|style-scope ytd-structured-description-video-lockup-renderer|style-scope ytd-badge-supported-renderer|badge badge-style-type-simple style-scope ytd-badge-supported-renderer style-scope ytd-badge-supported-renderer|yt-simple-endpoint style-scope ytd-compact-video-renderer|badges style-scope ytd-compact-video-renderer|style-scope ytd-video-meta-block|yt-simple-endpoint style-scope ytd-comment-view-model)$/.test(n.className)))throw '';return 'https://www.youtube.com/embed/'+$[1]+'?'+$[2]+'&'+$[3]+'&'+$[4]})()","res":":\n// config options\nvar config = {\n// change the display order of the image/videos by using 1, 2, 3, or 4. disable with 0\n order: {\n \"thumb\": 1,\n \"native (360p)\": 2,\n \"hls (1080p/4K)\": 3,\n \"embed (360p-1080p)\": 4\n },\n returnDislikes: true, // get dislikes and rating from ReturnYouTubeDislike.com\n useSidebar: true, // show description at the left of the thumbnail (Requires either thumbVideoInfo, nativeVideoInfo, or both to be set to true)\n useSmallerThumbnail: false, // use lower resolution thumbnail\n thumbVideoInfo: true, // display sidebar or detailed caption on thumbnail\n nativeVideoInfo: false, // display sidebar or detailed caption on native player\n showVerticalThumbnail: true, // true shows vertical thumbnails on vertical videos\n removeReferrer: false // if embed player is giving an error, true may fix it. Removing referrer may cause problems on YouTube when logged in.\n}\n\nfallback = (error) => {\n this.TRG.IMGS_ext_data = [['', `<imagus-extension type=\"iframe\" url=\"https://youtube.com/embed/${$[1]}?${timeParam}\"></imagus-extension>${error}`]]\n return { loop: 'imagus://extension' }\n}\n\nif(config.removeReferrer&&location.href.startsWith('https://www.youtube.com/')&&config.order['embed (360p-1080p)']){\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n\tmeta = document.createElement('meta');\n\tmeta.name = 'referrer';\n\tmeta.content = 'no-referrer';\n\tdocument.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n\tmeta.attributes.content.value = 'no-referrer';\n}\n}\n\nif(config.order['embed (360p-1080p)']&&!config.order.thumb&&!config.order['native (360p)']&&!config.order['hls (1080p/4K)'])return fallback()\n\nvar fL, fH, f = {}, g = false, cipher, decsig, o, mfr, ps, basejs, hls, player_param, visit_id = $._.match(/\"VISITOR_DATA\":\"([^\"]+)/)?.[1]\nvar x = new XMLHttpRequest\nwindow.imagusCache = window.imagusCache || {}\n\nvar timeParam = ($[3] ? 't=' + $[3] + ($[4] ? ',' + $[4] : '') + '&' : '')\nvar baseJsUrl = 'https://www.youtube.com' + JSON.parse($._.match(/\\\"[^\\\"]+player_[^\\\"]+\\/base.js\\\"/)[0].replace(/(\\/s\\/player\\/)([^\\/]+)/,'$127422632'))\nif (window.imagusCache[baseJsUrl]) {\n basejs = window.imagusCache[baseJsUrl]\n} else {\n try {\n x.open('GET', baseJsUrl, false)\n x.send()\n basejs = x.responseText\n window.imagusCache[baseJsUrl] = basejs\n } catch (e) {\n return fallback(this)\n }\n}\n\nconst escapeRegExp = s => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\nconst parseunthrottle = data => {\n const helper = [/'use strict';(var [A-Za-z0-9_$]+=[\"'][^\\n]+?[\"']\\.split\\([\"'][^\\n]+?[\"']\\)),/.exec(data)?.[1]||/'use strict';(var [A-Za-z0-9_$]+=\\[.+?\\]),[A-Za-z0-9_$]{1,3}[;,]/s.exec(data)?.[1], /[\\n;,]((?:var [A-Za-z0-9_$]{1,3}=function.+?;\\n\\n?){5,})[A-Za-z0-9_$]{1,3}=function/s.exec(data)?.[1]].filter(Boolean).join('\\n')\n const fnnameresult = /[A-Za-z0-9_$]=[A-Za-z0-9_$]\\[[A-Za-z0-9_$]\\[\\d+\\]\\]\\[[A-Za-z0-9_$]\\[\\d+\\]\\]\\|\\|null\\)&&\\([A-Za-z]=([^(]+?)(?:\\[(\\d+)\\])?\\([a-zA-Z0-9]\\)/.exec(data)\n var fnname = fnnameresult[1]\n if (fnnameresult[2]) fnname = new RegExp('var ' + escapeRegExp(fnname) + '\\\\s*=\\\\s*\\\\[(.+?)\\\\][,;]').exec(data)[1].split(',')[parseInt(fnnameresult[2])]\n const _argnamefnbodyresult = new RegExp(escapeRegExp(fnname) + '=function\\\\(([^\\\\)]+)\\\\){(.+?return \\\\w(?:\\\\.join\\\\([^\\\\)]+|\\\\[[A-Za-z0-9_$]\\\\[\\\\d+\\\\]\\\\]\\\\([A-Za-z0-9_$]\\\\[\\\\d+\\\\])\\\\))};', 's').exec(data)\n const [_, argname, fnbody] = _argnamefnbodyresult\n return new Function([argname], helper + '\\n' + fnbody.replace(/if\\(typeof [a-zA-Z0-9\\$_]+===[^\\),;]+\\)return \\w;/,''))\n}\ntry {\n var unthrottle = nsg => {var t=[\"url\",\",\",\"youtube.player.web_20251015_22_RC00\",\"\",\"length\",\"X\",\"rr\",\"set\",\"j\",\"join\",\"cmo=pf\",\"call\",\"1\",\"---\",\"path\",\"W\",\"=\",\"get\",\"indexOf\",\"\\\"(;),\",\"N\",\"undefined\",\"/\",\"r\",\"&\",\"cmo\",\"split\",\"push\",\"startsWith\",\"n\",\"scheme\",\"\\\\.a1\\\\.googlevideo\\\\.com$\",\"local\",\"wC\",\"sp\",\"splice\",\"reverse\",\"clone\",\"1969-12-31T17:15:42.000-06:45\",\"cmo=\",\"prototype\",\"slice\",\"/videoplayback\",\"1970-01-01T03:45:06.000+03:45\",\"toString\",\"mn\",\"fromCharCode\",\"fallback_count\",\"1970-01-01T04:01:02.000+04:00\",\":\",\"file\",\"1970-01-01T01:30:02.000+01:30\",\"match\",\"qiF64\",\"s\",\"1969-12-31T22:45:34.000-01:15\",\"//\",\"playerfallback\",\"forEach\",\"://\",\"\\\\.googlevideo\\\\.com$\",\"/api/manifest\",\"https://local\",\"replace\",\"signatureCipher\",\"jK5yWHyDHqsmJ8B5-D-_w8_\",\"Untrusted URL\",\"ej\",\"a1.googlevideo.com\",\"finally\",\"U\",\"assign\",\"([]({\",\"%3D\",\"pop\",\"index.m3u8\",\"RL\",\"/initplayback\",\"unshift\",\"pow\",\"/file/index.m3u8\",\"1970-01-01T02:15:00.000+02:15\",\"1970-01-01T02:16:08.000+02:15\",\"wc\",\"cmo=td\",\"?\",\"Li\",\"1970-01-01T09:00:38.000+09:00\",\"http://local\",\"Uc\",\"1970-01-01T11:15:22.000+11:15\",\"fvip\",\"redirector.googlevideo.com\",\"www.youtube.com\",\"rr?[1-9].*\\\\.c\\\\.youtube\\\\.com$\"],h1=1888677666,h2=function(a,b,c,d,e,f){return Rg[t[11]](this,5,a,b,c,d,e,f)},h3=function(a,b){return ch[t[11]](this,32,a,b)},h4=function(){return i3[t[11]](this,41)},h5=function(a,b,c,e,h,i,j,f,k,l,d){return gt[t[11]](this,16,a,b,c,e,h,i,j,f,k,l,d)},h6=function(){return Rg[t[11]](this,51)},h7=function(){return XN[t[11]](this,35)},h8=function(){return XN[t[11]](this,69)},h9=function(a,b){return i3[t[11]](this,1,a,b)},ha=function(a,b,c,d,e,h,i,f){return Ig[t[11]](this,2,a,b,c,d,e,h,i,f)},hb=function(a,b){return D6[t[11]](this,8,a,b)},hc=function(a,b){return D6[t[11]](this,16,a,b)},hd=function(a,b){return D6[t[11]](this,49,a,b)},he=function(a,b){return i3[t[11]](this,16,a,b)},hf=function(a){return Do[t[11]](this,12,a)},hg=function(a){return XN[t[11]](this,23,a)},ch=function(a,b,c,e){if(!((18^a)>>3)){var h=b[c],i=h[t[18]](t[16]);0<i?Do(57,e,h[t[41]](0,i),h[t[41]](i+1)):h&&(e[h]=t[3]);var j=[b,c,e]}if(7&a<<1||0==c[t[4]]||(b=(b%c[t[4]]+c[t[4]])%c[t[4]],c[t[35]](0,1,c[t[35]](b,1,c[0])[0])),1==(9|a)>>3)if(c=void 0!==c&&c,eA(50,b),b[t[14]]!==t[42])h=b[t[37]](),h[t[7]](t[57],t[12]),j=h;else{i=b[t[67]](),h=new g.FS(i);var k=b[t[17]](t[91]),l=decodeURIComponent(b[t[17]](t[45])||t[3])[t[26]](t[1]);if(k&&l&&1<l[t[4]]&&l[1]){i=h[t[8]];var n=i[t[63]](/^[^.]*/,t[3]);g.Ld(h,(0===i[t[18]](t[6])?t[6]:t[23])+k+t[13]+l[1]+n),h=new g.va(h[t[44]]()),h[t[7]](t[47],t[12]),j=h}else c?(h=b[t[37]](),h[t[7]](t[47],t[12]),j=h):(k=h[t[8]][t[52]](t[31]),h[t[8]][t[52]](t[60])?(g.Ld(h,t[92]),i=h[t[44]]()):h[t[8]][t[52]](t[94])?(g.Ld(h,t[93]),i=h[t[44]]()):(h=Y2p(i),pE(h)&&(i=h)),h=new g.va(i),h[t[7]](t[10],t[12]),k&&h[t[7]](t[84],t[68]),j=h)}return 8>(16&a>>2)&&12<=(15&(4|a))&&(eA(48,b),j=g.LL(b[t[8]],xNR)),j};gt=function(b,c,i,j,h,k,l,f,m,n,d,o){if(!(b+7>>4)){for(var e=c[t[26]](t[24]),p={},q=0;q<e[t[4]];q++)p=ch(17,e,q,p),e=p[0],q=p[1],p=p[2];var r=p}return 2<=b-5>>4&&3>(54^b)>>4&&(q=g.P(c,kes)||c[t[64]],e={Uc:!1,wc:t[3],RL:t[3],s:t[3]},q?(q=nZ(q),e[t[89]]=!0,e[t[83]]=q[t[0]],e[t[76]]=q[t[34]],e[t[54]]=q[t[54]],r=e):r=e),(14|b-4)<b&&b-1<<1>=b&&(r=j(l,f,m,n,d,o)),12>b-3&&2<=b+7>>3&&(r=null!==c),r},XN=function(a,b,c){if((6^a-7)<a&&(47&a+6)>=a){for(var d=64,e=[];++d-e[t[4]]-32;)switch(d){case 58:d=96;continue;case 91:d=44;break;case 65:d=47;continue;case 46:d=153;case 123:d-=58;default:e[t[27]](String[t[46]](d));}var f=e}if(2<=(68^a)&&5>(14&a<<1)&&(b=(b%c[t[4]]+c[t[4]])%c[t[4]],d=c[0],c[0]=c[b],c[b]=d,f=[b,c]),(16|a)==a)for(d=b[t[4]];d;)b[t[27]](b[t[35]](--d,1)[0]);if(18>a-5&&4<=(9|a)&&(d=b[t[26]](t[3]),Y5[t[33]](d,49),Y5[t[86]](d,1),Y5[t[33]](d,49),Y5[t[33]](d,23),f=d[t[9]](t[3])),2>(94^a)>>4&&4<=(15&a-1)){for(d=64,e=[];++d-e[t[4]]-32;){switch(d){case 58:d-=14;case 91:case 92:case 93:continue;case 123:d=47;case 94:case 95:case 96:continue;case 46:d=95;}e[t[27]](String[t[46]](d))}f=e}return f};var hf=function(a){return Do[t[11]](this,12,a)};Ig=function(a,b,c,i,h,j,k,f,l){if((49&a)==a){eA(48,b);var m=b[t[30]]+(b[t[30]]?t[59]:t[56])+b[t[20]]+b[t[14]];if(ch(26,b)){var n=[];g.hI(b[t[8]],function(a,b){null!==a&&n[t[27]](b+t[16]+a)}),m+=t[85]+n[t[9]](t[24])}var o=m}return(64|a)==a&&((0,b[54])(b[35],b[72]),(((0,b[48])((0,b[33])(),b[67],b[57]),(0,b[64])(b[67]),b[82])((0,b[48])((0,b[9])(),b[35],b[57]),b[54],b[15],b[21]),b[7])(b[1]),(0,b[54])(b[41],b[80]),o=[b]),(102&a)==a&&(o=c(i,h,j,k,f,l)),(15&a+6)<a&&(66&a+8)>=a&&(o=c(i,h,j)),o},Rg=function(a,b,c,i,h,j,k,f,l){if(1==(13&a+2)){-9!=b[24]&&(10!==b[6]&&((0,b[82])((0,b[2])(b[4],b[77]),b[59],b[29],b[77]),1)||(0,b[82])((0,b[48])((0,b[18])(),b[35],b[11]),b[62],b[23],b[67])),-7!=b[78]&&((0,b[65])(b[77],b[6]),1)||(0,b[75])((0,b[60])(),b[8],b[84]),-7===b[12]?(((((0,b[23])((0,b[85])(b[34],b[8]),b[75],(0,b[54])(),b[62],b[84]),b[27])(b[8]),b[75])((0,b[60])(),b[62],b[84]),b[81])(b[42],b[37]),b[75])((0,b[54])(),b[62],b[38]):(((0,b[23])((((0,b[85])(b[61],b[42]),b[29])(b[30],b[18]),b[81])(b[42],b[49]),b[29],b[17],b[68]),b[5])(b[62]),b[65])(b[new c(t[38])/1E3],b[39]),-8<b[17]&&(0,b[new c(t[90])/1E3])((0,b[85])(b[63],b[68]),b[16],(0,b[16])(b[36],b[25]),b[9],b[45]),2>b[41]&&(-6===b[46]?(0,b[29])(((0,b[36])(b[69],b[8]),((0,b[new c(t[82])/1E3])(b[83]),(0,b[30])((0,b[9])(),b[49],b[39]),b[30])((0,b[77])(),b[83],b[79]),(0,b[40])(b[43],b[23]),b[68])(b[49]),b[64],(0,b[36])(b[49],b[new c(t[81])/1E3]),b[36],b[23],b[52]):(0,b[66])(((0,b[33])((0,b[3])(),b[20],b[42]),b[50])(b[new c(t[48])/1E3],b[4]),b[70],(0,b[48])(b[40],(0,b[20])(b[23],b[57]),(0,b[20])(b[49],b[10]),(0,b[36])(b[17],b[81]),(0,b[47])(b[17],b[51]),b[new c(t[55])/1E3],b[49]),b[2],b[17])),(0>=b[80]||((((0,b[70])(b[19],b[49]),b[63])((0,b[70])(b[new c(t[87])/1E3],b[49]),b[70],((0,b[44])(b[27],b[69]),(0,b[20])(b[23],b[53]),b[70])(b[41],b[23]),b[31],b[23]),b[70])(b[25],b[23]),0))&&((((0,b[47])(b[17],b[26]),b[36])(b[23],b[13]),(0,b[47])(b[83],b[55]),b[45])(b[23],b[37]),(0,b[36])(b[69],b[32]),b[64])((0,b[44])(b[6],b[59]),b[36],b[49],b[76]),4>b[61]&&(4<=b[2]&&(((0,b[30])((0,b[77])(),b[17],b[79]),b[40])(b[22],b[59]),/,\\//)||(0,b[64])((0,b[40])(b[56],b[23]),b[63],b[1],b[29]));var m=[b,c]}if(4==(14&(1|a))&&(m=c(h,j,k)),15&(12^a)||(m=b[t[5]]?b[t[5]][t[28]](t[32]):b[t[30]]===t[32]),(48|a)==a){for(var n=64,o=[];++n-o[t[4]]-32;){switch(n){case 91:n=44;continue;case 123:n=65;break;case 65:n-=18;continue;case 58:n=96;continue;case 46:n=95;}o[t[27]](String[t[46]](n))}m=o}return 9&(50^a)||(m=b(k,f,l)),m},i3=function(a,b,c){if(1>(21^a)>>4&&23<=(35^a)&&0!=c[t[4]]&&(b=(b%c[t[4]]+c[t[4]])%c[t[4]],c[t[35]](0,1,c[t[35]](b,1,c[0])[0])),27>a>>2&&20<=a>>1){for(var d=64,e=[];++d-e[t[4]]-32;)switch(d){case 46:d=95;default:e[t[27]](String[t[46]](d));case 94:case 95:case 96:break;case 123:d-=76;case 92:case 93:continue;case 58:d=44;case 91:}var f=e}return(27|a-1)>=a&&(20^a-9)<a&&0!=b[t[4]]&&(d=XN(42,c,b),c=d[0],b=d[1]),f};var wFs=function(a,b,c,d,e,h,i,f){return Rg[t[11]](this,2,a,b,c,d,e,h,i,f)},QZL=function(a,b,c,d,e){return Ig[t[11]](this,56,a,b,c,d,e)};Do=function(a,b,c,d){if(13<=(15&(3|a))&&4>(16&a>>1)&&b[t[36]](),(56|a)==a){if(c===t[25]){var e;0<=(e=d[t[18]](t[16]))?(c=t[39]+d[t[41]](0,e),d=d[t[41]](e+1)):0<=(e=d[t[18]](t[73]))&&(c=t[39]+d[t[41]](0,e),d=d[t[41]](e+3))}b[c]=d}if(1<=a-6>>3&&1>a-2>>5){e=b[t[18]](t[22],12);var i=b[t[18]](t[22],e+1);0<e&&0<i?(c[t[14]]=b[t[41]](0,i),b=b[t[41]](i+1)):(c[t[14]]=b,b=t[3]);var j=[b,c]}return(7^a-6)>=a&&a+8>>2<a&&(this[t[5]]=b,this[t[15]]=void 0!==c&&c,this[t[20]]=this[t[14]]=this[t[30]]=t[3],this[t[8]]={},this[t[0]]=t[3]),j},D6=function(a,b,c){if((88|a)==a){if(!(pE(b[t[5]])||b[t[5]][t[28]](t[32])||b[t[5]][t[28]](t[62])||b[t[5]][t[28]](t[88])))throw new g.EB(t[66],b[t[5]]);var d=g.uF(b[t[5]]);b[t[30]]=d[t[70]],b[t[20]]=d[t[8]]+(null==d[t[20]]?t[3]:t[49]+d[t[20]]);var e=d[t[5]];if(e[t[28]](t[42]))b[t[14]]=t[42],e=e[t[41]](14);else if(e[t[28]](t[77]))b[t[14]]=t[77],e=e[t[41]](13);else if(e[t[28]](t[61])){var i=Do(16,e,b);e=i[0],b=i[1]}else b[t[14]]=e,e=t[3];i=b[t[8]],b[t[8]]=HF(4,e),Object[t[71]](b[t[8]],gt(1,d[t[15]][t[44]]())),Object[t[71]](b[t[8]],i),b[t[8]][t[50]]===t[75]&&(delete b[t[8]][t[50]],b[t[14]]+=t[80]),b[t[5]]=t[3],b[t[0]]=t[3],b[t[15]]&&(d=HF(49,b),b=d[0]);var j=[b]}if(1<=(15&a-8)&&1>(6|a)>>5)for(b=(b%c[t[4]]+c[t[4]])%c[t[4]];b--;)c[t[78]](c[t[74]]());if((59&a+6)<a&&(25^a-3)>=a){try{10!==b[0]&&(5===b[1]?(0,b[50])((0,b[35])(),b[69],b[13]):(0,b[66])(b[37]))}catch(a){(0,b[50])((0,b[35])(),b[69],b[13])}try{-7>b[28]&&(0,b[19])((0,b[60])(b[25],b[96%Math[t[79]](3,new Date(t[51])/1E3)+11]),(0,b[84])((0,b[2])((0,b[67])(b[17],b[32]),b[60],(0,b[50])((0,b[11])(),b[69],b[13]),b[1],b[37]),b[40],b[37],b[70]),b[84],(0,b[84])((0,b[56])(b[17],b[55]),b[60],b[81],b[69]),((0,b[40])(b[79],b[48]),b[60])(b[7],b[3]),(0,b[28])(b[31],b[new Date(t[43])/1E3]),b[48],b[32],b[67])}catch(a){(0,b[64])(b[35])}try{var k=Rg(1,b,Date);b=k[0],Date=k[1]}catch(a){k=Ig(65,b),b=k[0]}j=[b]}return(47&a)==a&&(c=(c%b[t[4]]+b[t[4]])%b[t[4]],b[t[35]](c,1)),4==(15&a<<2)&&c[t[35]](c[t[4]],0,b),j};var nsg_fix=function(a,b){if((44&a+7)<a&&(47&a+4)>=a){nsg_fix(55,b);var c=b[t[20]]}if(2<=(7&a+4)&&9>(54^a)&&b[t[5]]){var d=D6(88,b);b=d[0]}if((24|a)==a)a:{d=b[t[26]](t[3]);var e=[-2044037833,-19487984,h2,null,h3,57276729,675982131,-977736907,-45498273,-1695274354,50051010,h4,-2001112242,t[69],2051034183,-1935767679,1846288351,d,-1160685540,h5,h6,1564214609,-2140773782,-745871879,814878508,-1306646552,-188224226,t[19],-1709534709,h7,-1855786533,-1052870559,-1229143520,749803101,-745871879,h8,1998139197,d,2065486183,-933469389,h9,t[72],-181497758,null,-477457485,-456490707,457182039,1185216539,2130505135,ha,function(a,b,c){var f=a[t[4]];b[t[58]](function(b,c,d){this[t[27]](d[c]=a[(a[t[18]](b)-a[t[18]](this[c])+c+f--)%a[t[4]]])},c[t[26]](t[3]))},107711494,35609374,661440217,-557337738,-197956537,hb,-137345433,-1864803853,t[53],hc,hd,1904861518,1256295103,he,-1261844680,hf,function(a,b){b=(b%a[t[4]]+a[t[4]])%a[t[4]],a[t[35]](-b)[t[36]]()[t[58]](function(b){a[t[78]](b)})},wFs,d,-2067887682,-1401990507,1514300263,-1828268119,1267211243,837217772,-1894156432,-1156822852,573719083,null,-1575353112,-1261844680,-1376143298,hg,QZL];if(e[3]=e,e[43]=e,e[79]=e,typeof h1===t[21])c=b;else{try{var f=D6(67,e);e=f[0]}catch(a){c=t[65]+b;break a}c=d[t[9]](t[3])}}return c};\nreturn nsg_fix(24,nsg)};\n window.imagusCache[baseJsUrl + '_unthrottle'] = unthrottle\n} catch(e) {\n console.error('Imagus: cannot parse unthrottle function. Error:', e)\n}\n\nfunction nt(s) {\n var u = new URL(s)\n var p = u.searchParams\n var n = p.get('n')\n if (!n) return s\n p.set('n', unthrottle ? unthrottle(n) : '')\n u.search = p.toString()\n return u.toString()\n}\n\nconst getParam = (u='') => {\n try {\n x.open('GET', 'https://www.youtube.com/'+u+'#youtube_pp', false)\n x.send()\n var param = x.responseText.match(/\"playerParams\":\"([^\"]+)\",\"playerExtra/)?.[1]\n this._yt_player_param_ = param\n return param\n } catch (e) {\n console.error('Failed to get player param',e)\n return null\n }\n}\nplayer_param = this._yt_player_param_\n\nconst api_key = 'AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8'\nconst client_ver = '2.20211221.00.00'\nconst sigtime = Number(basejs.match(/signatureTimestamp\\s*:\\s*(\\d+)/)[1])\nconst vid = $[1]\nfunction player_response(embed) {\n x.open('POST', 'https://www.youtube.com/youtubei/v1/%70%6C%61%79%65%72?imagus&key=' + api_key, false)\n x.setRequestHeader('Content-Type', 'application/json')\n if (player_param) x.setRequestHeader('X-Goog-Visitor-Id', visit_id)\n var data = {\n context: {\n client: {\n clientName: 'WEB',\n clientVersion: client_ver\n }\n },\n videoId: vid,\n playbackContext: {\n contentPlaybackContext: {\n signatureTimestamp: sigtime,\n html5Preference: 'HTML5_PREF_WANTS'\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n if (embed === 'agegate') data.context.client.clientScreen = 'EMBED'\n if (embed === 'embed') data.context.client = { clientName: 'TVHTML5_SIMPLY_EMBEDDED_PLAYER', clientVersion: '2.0' }\n if (embed) data.context.thirdParty = { embedUrl: 'https://www.youtube.com/' }\n if (player_param) data.params = player_param\n x.send(JSON.stringify(data))\n o = JSON.parse(x.responseText)\n mfr = o.microformat || mfr\n ps = o.playabilityStatus\n return ps.status === 'OK'\n}\n\nfunction getDislikes(id) {\n try {\n x.open('GET', `https://returnyoutubedislikeapi.com/Votes?videoId=${id}`, false)\n x.send()\n return JSON.parse(x.responseText)\n } catch (e) { }\n}\n\nconst prepResult = (res, content) => {\n // hls\n if(hls)res.push(['', `<imagus-extension type=\"videojs\" url=\"${hls}\"></imagus-extension>${title}`])\n // embeded player\n res.push(['', `<imagus-extension type=\"videojs\" url=\"https://youtube.com/embed/${$[1]}?${timeParam}\"></imagus-extension>`])\n\n if (config.useSmallerThumbnail) res[0][0] = res[0][0].replace('maxresdefault', '0')\n\n if (config.useSidebar) {\n content = content.replace(/https?:\\/\\/[\\w\\.\\/?=&+@#\\-]+/g, '<a href=\"$&\" target=\"_blank\">$&</a>')\n if(config.nativeVideoInfo&&fL?.length)res.find(i=>/\\.googlevideo\\.com\\/videoplayback\\?/.test(i[0]))[1] = `<imagus-extension type=\"sidebar\">${content}</imagus-extension>`\n if(config.thumbVideoInfo)res.find(i=>/\\.ytimg\\.com\\//.test(i[0]))[1] = `<imagus-extension type=\"sidebar\">${content}</imagus-extension>`\n } else {\n content = content.replace(/https?:\\/\\/[\\w\\.\\/?=&+@#\\-]+/g, '')\n content = content.replace(/[\\s\\n]*\\n[\\s\\n]*/g, ' | ')\n if(config.nativeVideoInfo&&fL?.length)res.find(i=>/\\.googlevideo\\.com\\/videoplayback\\?/.test(i[0]))[1] = content\n if(config.thumbVideoInfo)res.find(i=>/\\.ytimg\\.com\\//.test(i[0]))[1] = content\n }\n var orderSort = Object.entries(config.order).filter(i=>i[1]>0).sort((a,b)=>a[1]-b[1]).map(i=>i[0])\n var ordered = orderSort.map(type => {\n switch (type) {\n case 'thumb': return res[0]\n case 'native (360p)': return res[1] || res[2]\n case 'hls (1080p/4K)': return res[2] || res[1]\n case 'embed (360p-1080p)': return res[3] || res[2] || res[1]\n }\n })\n ordered.length = res.length\n ordered = ordered.filter(Boolean)\n this.TRG.IMGS_ext_data = ordered\n return { loop: 'imagus://extension' }\n}\n\nif (!player_param) {\n for (let i of [null, 'embed', 'agegate']) if (player_response(i)) break\n if (['ERROR', 'LOGIN_REQUIRED'].indexOf(ps.status) != -1) player_param = getParam()||getParam('results?search_query=z')\n}\n\nif (player_param) for (let i of [null, 'embed', 'agegate']) if (player_response(i)) break\n\nif (['ERROR', 'LOGIN_REQUIRED'].indexOf(ps.status) != -1) return fallback('Failed to get thumbnail and video. Error: [' + ps.status + ', ' + ps.reason + ']. Using embed player as backup')\n// [ps.errorScreen.playerErrorMessageRenderer.thumbnail.thumbnails[0].url, '[' + ps.status + ', ' + ps.reason + ']']\nvar q = o.videoDetails, r = mfr.playerMicroformatRenderer\nvar title = q.title, lenSec = parseInt(q.lengthSeconds), sText = r.title.simpleText, thumbnail = r.thumbnail.thumbnails[0].url+'?noloop'\nvar ss = lenSec % 60, mm = (lenSec - ss) / 60 % 60, hh = (lenSec - ss - mm * 60) / 3600\nvar lenStr = (hh === 0 ? '' : hh + ':') + ('0' + mm).slice(-2) + ':' + ('0' + ss).slice(-2)\nvar rt = Number(q.averageRating)\nvar dl = config.returnDislikes ? getDislikes(q.videoId) : undefined\nif (dl?.rating) {\n var colorShift = Math.round(120 * Math.max(0, dl.rating - 3) / 2) // rates from 0 to 3 will be red; from 3 to 5: scale from red to green\n var rateStyle = `background-color: hsl(${colorShift} 100% 31%); padding: 0 3px 0 1px; border-radius: 2px; color: white; line-height: 18px; display: inline-block`\n dl.rating = `<span style=\"${rateStyle}\">&#11088;${Math.round(dl.rating * 20 * 10) / 10}%</span>`\n}\nvar descr = [\n `<h3>${title}</h3>`,\n title !== sText && sText,\n 'Author:\\t<a href=\"//www.youtube.com/channel/' + q.channelId + '\" target=\"_blank\" style=\"color:white\">' + q.author + '</a>',\n 'Date:\\t' + (r.publishDate ? new Date(Date.parse(r.publishDate)).toLocaleString() : ''),\n 'Length:\\t' + lenStr,\n 'Views:\\t' + (q.viewCount | 0).toLocaleString(),\n dl ? `Rating:\\t${dl.rating} | &#128077;&#127995;${dl.likes?.toLocaleString()} | &#128078;&#127995;${dl.dislikes?.toLocaleString()} <br>(by returnyoutubedislike.com)` : '',\n '\\n' + q.shortDescription\n].filter(Boolean).join('\\n')\n\nif (ps.status !== 'OK') return prepResult([[thumbnail, '']], `<h3>${ps.status} - ${ps.reason}</h3><br>` + descr)\n\nvar fs = o.streamingData.formats\n\nif (config.showVerticalThumbnail&&fs?.[0]?.height > fs?.[0]?.width) {\n try {\n var oar_thumbnail\n for (let i of ['default', '2']) {\n oar_thumbnail = thumbnail.replace(/\\/maxres[^.]+(\\.[^?]+).*/, '/oar' + i + '$1')\n x.open('HEAD', oar_thumbnail, false)\n x.send()\n if (x.status == 200) {\n thumbnail = oar_thumbnail\n break\n }\n }\n } catch (e) {}\n}\n\nif(Number(config.order['hls (1080p/4K)']) > 0 && visit_id){\n x.open('POST', 'https://www.youtube.com/youtubei/v1/%70%6C%61%79%65%72?imagus&key=' + api_key, false)\n x.setRequestHeader('Content-Type', 'application/json')\n x.setRequestHeader('X-Goog-Visitor-Id', visit_id)\n var hls_data = {\n context: {\n client: {\n clientName: 'IOS',\n clientVersion: '20.10.4',\n deviceModel: 'iPhone16,2',\n 'userAgent': 'com.google.ios.youtube/20.10.4 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)',\n }\n },\n videoId: vid,\n playbackContext: {\n contentPlaybackContext: {\n signatureTimestamp: sigtime,\n html5Preference: 'HTML5_PREF_WANTS'\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n x.send(JSON.stringify(hls_data))\n hls = JSON.parse(x.responseText).streamingData?.hlsManifestUrl\n }\nif (!fs) return prepResult([[thumbnail, '']], '<h3>No suitable formats to download, probably livestreaming</h3><br>' + descr)\nfs.forEach(function (format) {\n if (format.url) { f[format.itag] = nt(format.url); return; }\n cipher = new URLSearchParams(format.signatureCipher)\n if (cipher.get('sig')) { f[format.itag] = `${cipher.get('url')}&signature=${cipher.get('sig')}`; return; }\n g = true\n})\nif (g) {\n try {\n descr = '*' + descr\n const parseDecsig = data => {\n if (data.startsWith('var script')) {\n // they inject the script via script tag\n const obj = {}\n const document = {\n createElement: () => obj,\n head: { appendChild: () => { } }\n }\n eval(data)\n data = obj.innerHTML\n }\n const fnnameresult = /=([a-zA-Z0-9\\$_]+?)\\(decodeURIComponent/.exec(data)\n const fnname = fnnameresult[1]\n const _argnamefnbodyresult = new RegExp(escapeRegExp(fnname) + '=function\\\\((.+?)\\\\){(.+?)}').exec(data)\n const [_, argname, fnbody] = _argnamefnbodyresult\n const helpernameresult = /;(.+?)\\..+?\\(/.exec(fnbody)||/;([A-Za-z0-9_$]+)/.exec(fnbody)\n const helpername = helpernameresult[1]\n const helperresult = new RegExp('var ' + escapeRegExp(helpername) + '={[\\\\s\\\\S]+?};').exec(data)\n const helper = helperresult[0]\n const helper2 = /'use strict';(var [A-Za-z0-9_$]+=[\"'][^\\n]+?[\"']\\.split\\([\"'][^\\n]+?[\"']\\)),/.exec(data)?.[1]||/'use strict';(var [A-Za-z0-9_$]+=\\[.+?\\]),[A-Za-z0-9_$]{1,3}[;,]/s.exec(data)?.[1]||''\n return new Function([argname], helper + '\\n' + helper2 + '\\n' + fnbody)\n }\n decsig = parseDecsig(basejs)\n } catch (ex) {\n console.error(ex)\n }\n fs.forEach(function (format) {\n if (f[format.itag]) return\n cipher = new URLSearchParams(format.signatureCipher)\n f[format.itag] = nt(`${cipher.get('url')}&${cipher.get('sp') || 'signature'}=${decsig(cipher.get('s'))}`)\n })\n}\n\nfL = f[18] || f[59] || f[78] || f[46] || f[45] || f[44] || f[43] || f[37] || f[22]\nfH = f[37] || f[22] || f[18] || f[59] || f[78] || f[46] || f[45] || f[44] || f[43] || fL\nvar ct = (timeParam ? '#' + timeParam : '') + '#mp4'\n\nvar res = [[thumbnail, title]]\nif (fH) {\n fH = ['#' + fH + ct, fL + ct]\n res.push([fH, title])\n}\nreturn prepResult(res, descr)","img":"^(?:i(?:\\d|mg)?\\.ytimg\\.com/(?:vi|an_webp)[^/]*/([\\w\\-]{11})/(?:[\\w]+?)\\.(?:\\w+)(?!.*[&?]noloop)|^(?:(?:(?:(?:\\w+\\.)?[yY][oO][uU][tT][uU][bB][eE](?:-nocookie|kids)?\\.com|youtube\\.googleapis\\.com)/(?:.*?\\#/)?(?:(?:(?:v|embed|e|shorts)/(?!videoseries|live_stream))|(?:(?:(?:watch|movie)(?:_popup)?(?:\\.php)?/?)?(?:\\?|\\#!?)(?:.*?[&;])??v=)))|youtu\\.be/)([0-9A-Za-z_-]{11})(?!&lc=)(?:\\?(thumb\\b))?(?:[?&](?:star)?t=(\\d+(?:\\.\\d+)?)s?)?(?:&end=(\\d+(?:\\.\\d+)?)s?)?.*$)","loop":2,"to":"www.youtube.com/embed/$1$2?thumb","note":"Dulus_No + Imagus_fan/hababr (edit)\nhttps://www.reddit.com/r/imagus/comments/1o69av9/comment/njff34m\nOLD\nhttps://www.reddit.com/r/imagus/comments/1nz5i3c/comment/ni0od3t\nhttps://www.reddit.com/r/imagus/comments/1noypep/comment/ngmonwh\n\n\n\n!!!\nВся информация о возможностях и особенностях фильтра, а также о представленных в нем опциях: ЧаВо, п.11.\n==\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.11.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/youtube.com/new\nhttps://www.youtube.com/@jbmusicproductions516/videos\nhttps://www.reddit.com/r/imagus/comments/r19duk/comment/hxfd2pa\niFrames:\nhttps://www.reddit.com/r/imagus/comments/18pcszv/comment/kj7uh7s"}}
Advertisement
Add Comment
Please, Sign In to add comment