-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.html
2 lines (2 loc) · 18.4 KB
/
index.html
1
2
<!DOCTYPE HTML>
<html><head><link id='icon' rel="icon" href="/favicon.ico" type="image/icon type"><style>.btn{display:inline-block;font-size:48px;margin-bottom:3rem;color:#000;background-color:#fff;border-color:#000;border-style:solid;border-width:1px;border-radius:.3rem;transition:color .2s,background-color .2s,border-color .2s;padding:12px}span{background-color:#fff;padding:12px}</style><title>Youtube Downloader</title><meta charset='utf-8'></head><body><center><br><br><a href="javascript:(function(){;async%20function%20getSigFunc()%7Btry%7Bfor(var%20response%3Dawait%20fetch(%22https%3A%2F%2Fwww.youtube.com%2F%22)%2Cbody%3Dawait%20response.text()%2Ca%3Dbody.split(%22base.js%22)%5B0%5D%2Cb%3Da.split(%22%2Fs%2Fplayer%2F%22).pop()%2CytBaseLink%3D%22https%3A%2F%2Fwww.youtube.com%2Fs%2Fplayer%2F%22%2Bb%2B%22base.js%22%2Ca%3Dawait%20fetch(ytBaseLink)%2Cbody%3Dawait%20a.text()%2Cfunc1%3Dbody.split('a%3Da.split(%22%22)').pop().split(%22%7D%22)%5B0%5D%2CmainFunc%3Deval('(function()%20%7Breturn%20function(a)%20%7Ba%3Da.split(%22%22)'%2Bfunc1%2B%22%7D%7D)()%3B%22)%2CvaribaleName%3Dfunc1.split(%22.%22)%5B0%5D.split(%22%3B%22).pop()%2Cfunc1%3Dfunc1.replaceAll(varibaleName%2B%22.%22%2C%22%22)%2Cmodules%3Dfunc1.split(%22%3B%22)%2Ci%3D0%3Bi%3Cmodules.length%3Bi%2B%2B)modules%5Bi%5D%3Dmodules%5Bi%5D.split(%22(%22)%5B0%5D%3Bmodules.splice(modules.length-1%2C1)%2Cmodules.splice(0%2C1)%3Bfor(var%20a%3D%5B%5D%2Ci%3D0%3Bi%3Cmodules.length%3Bi%2B%2B)a.includes(modules%5Bi%5D)%7C%7Ca.push(modules%5Bi%5D)%3Bvar%20p%3D%7B%7D%3Bp.mainFunc%3DmainFunc%2Cp.varName%3DvaribaleName%3Bfor(var%20i%3D0%3Bi%3Ca.length%3Bi%2B%2B)%7Bvar%20y%3Dbody.split(a%5Bi%5D%2B%22%3Afunction%22).pop().split(%22%7D%22)%5B0%5D%2Cc%3D%22function%20%22%2By%2B%22%7D%22%3Bp%5Ba%5Bi%5D%5D%3Deval(%22(function()%20%7Breturn%20%22%2Bc%2B%22%7D)()%3B%22)%7D%7Dcatch(e)%7Breturn%20alert(%22%5Bytdl%5D%20Error%20Getting%20decryption%20function%22)%2Ce%7Dreturn%20p%7Dasync%20function%20decryptURL(e)%7Bwindow.yt_decrypt_function_loaded%7C%7C(t%3Dawait%20getSigFunc()%2Cwindow%5Bt.varName%5D%3Dt%2Cwindow.yt_decrypt_function_loaded%3D!0%2Cwindow.decryptSig%3Dt.mainFunc)%3Bfor(var%20t%2Ci%3De.split(%22%26%22)%2Ca%3D%7B%7D%2Cn%3D0%3Bn%3Ci.length%3Bn%2B%2B)%7Bvar%20r%3Di%5Bn%5D.split(%22%3D%22)%3Ba%5Br%5B0%5D%5D%3Dr%5B1%5D%7Dreturn%20a.s%3DdecodeURIComponent(a.s)%2Ca.url%3DdecodeURIComponent(a.url)%2Ca.url%2B%22%26%22%2Ba.sp%2B%22%3D%22%2BdecryptSig(a.s)%7Dasync%20function%20xml2vtt(e%2Ct)%7Bif(Array.isArray(e))%7Bfor(var%20i%3D%22%3Ch2%3EVtt%20files%20(subtitles)%3C%2Fh2%3E%3Cul%3E%22%2Ca%3D0%3Ba%3Ce.length%3Ba%2B%2B)i%2B%3D%22%3Cp%3E%22%2Be%5Ba%5D.name.simpleText%2B'%20-%20%3Ca%20href%3D%22'%2BURL.createObjectURL(new%20Blob(%5Bawait%20xml2vtt(e%5Ba%5D.baseUrl)%5D%2C%7Btype%3A%22text%2Fvtt%3B%20chartset%3Dutf-8%22%7D))%2B'%22%20download%3D%22'%2Bt.htmlEscape()%2B%22-%22%2Be%5Ba%5D.name.simpleText%2B'.vtt%22%3EDownload%3C%2Fa%3E%3C%2Fp%3E%5Cn'%3Breturn%20i%2B%3D%22%3C%2Ful%3E%22%7Dvar%20n%3Dawait%20fetch(e)%3Bif(!(n%3Dawait%20n.text()).trim())return%20null%3Bfunction%20r(e)%7Be%3DparseInt(e%2C10)%3Blet%20t%3DMath.floor(e%2F3600)%2Ci%3DMath.floor((e-3600*t)%2F60)%2Ca%3De-3600*t-60*i%3Breturn%20t%3C10%26%26(t%3D%220%22%2Bt)%2Ci%3C10%26%26(i%3D%220%22%2Bi)%2Ca%3C10%26%26(a%3D%220%22%2Ba)%2Ct%2B%22%3A%22%2Bi%2B%22%3A%22%2Ba%7Dfor(var%20o%3D%22WEBVTT%22%2Cl%3D(n%3D(new%20DOMParser).parseFromString(n%2C%22application%2Fxml%22)).getElementsByTagName(%22text%22)%2Ca%3D0%3Ba%3Cl.length%3Ba%2B%2B)%7Bvar%20s%3Dfunction(e%2Ct)%7Bfor(var%20i%3De.split(%22.%22).pop()%3Bi.length%3C3%3B)i%2B%3D%220%22%3Bfor(var%20a%3De.split(%22.%22)%5B0%5D%2Cn%3D(t%3D(t%3DparseInt(e)%2BparseInt(t)).toString()).split(%22.%22).pop()%3Bn.length%3C3%3B)n%2B%3D%220%22%3Breturn%20n%3D(n%3DparseInt(n)%2BparseInt(i)).toString()%2Ce%3Dt.split(%22.%22)%5B0%5D%2C3%3Cn.length%26%26(n%3Dn.substring(1)%2Ce%3D(parseInt(e)%2B1).toString())%2Cr(a)%2B%22.%22%2Bi%2B%22%20--%5Cx3e%20%22%2B(e%3Dr(e))%2B%22.%22%2Bn%7D(l%5Ba%5D.getAttribute(%22start%22)%2Cl%5Ba%5D.getAttribute(%22dur%22))%2Cp%3Dl%5Ba%5D.innerHTML%3Bo%2B%3D%22%5Cn%5Cn%22%2Bs%2B%22%5Cn%22%2B(s%3Dp%2Cp%3Dvoid%200%2C(p%3Ddocument.createElement(%22textarea%22)).innerHTML%3Ds%2Cp.value)%7Dreturn%20o%7DString.prototype.htmlEscape%7C%7C(String.prototype.htmlEscape%3Dfunction()%7Breturn%20this.replaceAll(%2F%26%2Fg%2C%22%26amp%3B%22).replaceAll(%2F%3C%2Fg%2C%22%26lt%3B%22).replaceAll(%2F%3E%2Fg%2C%22%26gt%3B%22).replaceAll(%2F%22%2Fg%2C%22%26quot%3B%22).replaceAll(%2F'%2Fg%2C%22%26%23039%3B%22)%7D)%2C!async%20function()%7Bif(%22www.youtube.com%22!%3D%3Dwindow.location.host%26%26%22youtube.com%22!%3D%3Dwindow.location.host)alert(%22%5Bytdl%5D%20Only%20works%20on%20youtube%22)%3Belse%7Bconst%20version%3D3.2%3Bvar%20ytlink%3Dwindow.location.href%2CvideoID%3Dytlink.split(%22v%3D%22).pop().split(%22%26%22)%5B0%5D%2Cinfo%2Cinfo%2Cinfo%3Bif(ytlink.includes(%22v%3D%22)%7C%7Cytlink.includes(%22%2Fchannel%2F%22)%7C%7Cytlink.includes(%22%2Fc%2F%22)%7C%7Cytlink.includes(%22%2Fuser%2F%22)%7C%7Cytlink.includes(%22list%3D%22))%7Bif(String.prototype.replaceAll%7C%7C(String.prototype.replaceAll%3Dfunction(e%2Ct)%7Breturn%20this.split(e).join(t)%7D)%2C!async%20function()%7Btry%7Bvar%20e%3Dawait(await%20fetch(%22https%3A%2F%2Fraw.githack.com%2Fethanaobrien%2Fyoutube-downloader%2Fmain%2Fversion.json%22)).text()%2Ct%3DJSON.parse(e)%3Bwindow.ytdlCurrentVersion%3Dt.current_version%7Dcatch(e)%7Breturn%7D%7D()%2C1%3D%3D%3Dytlink.split(%22v%3D%22).length)return%201!%3D%3Dytlink.split(%22list%3D%22).length%3Fplaylist(ytlink.split(%22list%3D%22).pop().split(%22%26%22)%5B0%5D)%3AmembersOnlyPlaylist()%3Bif(%22function%22%3D%3Dtypeof%20getPageData)%7Bvar%20info%3DgetPageData().data.playerResponse%3Bif(info%26%26%22undefined%22!%3Dinfo%26%26videoID%3D%3Dinfo.videoDetails.videoId)return%20gotVideoInfo(info)%7Delse%20if(%22function%22%3D%3Dtypeof%20window.getPageData)%7Bvar%20info%3DgetPageData().data.playerResponse%3Bif(info%26%26%22undefined%22!%3Dinfo%26%26videoID%3D%3Dinfo.videoDetails.videoId)return%20gotVideoInfo(info)%7Dif(info%3D%22undefined%22!%3Dtypeof%20ytInitialPlayerResponse%3FytInitialPlayerResponse%3Avoid%200!%3D%3Dwindow.ytInitialPlayerResponse%3Fwindow.ytInitialPlayerResponse%3A%7BvideoDetails%3A%7BvideoId%3Avoid%200%7D%7D%2CvideoID!%3Dinfo.videoDetails.videoId)try%7Bvar%20response%3Dawait%20window.fetch(ytlink)%2Cbody%3Dawait%20response.text()%2CscriptPt1%3Dbody.split(%22%3Cscript%22%2Bbody.split(%22var%20ytInitialPlayerResponse%20%3D%20%22)%5B0%5D.split(%22%3Cscript%22).pop()%2B%22var%20ytInitialPlayerResponse%20%3D%20%22)%5B1%5D.split(%22%3C%5C%2Fscript%3E%22)%5B0%5D%3BgotVideoInfo(eval(%22(function()%20%7Breturn%20%22%2BscriptPt1%2B%22%7D)()%3B%22))%7Dcatch(e)%7Breturn%20error(e)%7Delse%20gotVideoInfo(info)%7Delse%20alert(%22%5Bytdl%5D%20Please%20open%20a%20video%22)%3Bfunction%20error(e)%7Bconsole.error(e)%2Calert(%22%5Bytdl%5D%20Please%20reload%20page%20and%20try%20again%22)%7Dasync%20function%20playlist(id)%7Bvar%20asd%3Ddocument.createElement(%22div%22)%2Ciwindow%3Dwindow.open(URL.createObjectURL(new%20Blob(%5Bnew%20Uint8Array(%5B239%2C187%2C191%5D)%2C'%3Cp%3EPlease%20wait%2C%20progress%3A%20%3Cdiv%20id%3D%22progress%22%3Efetching%20main%20page%3C%2Fdiv%3E'%5D%2C%7Btype%3A%22text%2Fhtml%3B%20chartset%3Dutf-8%22%7D))%2C%22Download%22%2C%22width%3D600%2Cheight%3D600%22)%3Btry%7Bvar%20mainPage%3Dawait%20fetch(%22https%3A%2F%2Fwww.youtube.com%2Fplaylist%3Flist%3D%22%2Bid)%2Cbody%3Dawait%20mainPage.text()%2CpageInfo%3Dbody.split(%22%3Cscript%22%2Bbody.split(%22var%20ytInitialData%20%3D%20%22)%5B0%5D.split(%22%3Cscript%22).pop()%2B%22var%20ytInitialData%20%3D%20%22)%5B1%5D.split(%22%3C%5C%2Fscript%3E%22)%5B0%5D%2CpageInfo%3Deval(%22(function()%20%7Breturn%20%22%2BpageInfo%2B%22%7D)()%3B%22)%2Cinfo%3DpageInfo.contents.twoColumnBrowseResultsRenderer.tabs%5B0%5D.tabRenderer.content.sectionListRenderer.contents%5B0%5D.itemSectionRenderer.contents%5B0%5D.playlistVideoListRenderer.contents%7Dcatch(e)%7Breturn%20iwindow.document.getElementById(%22progress%22).innerHTML%3D%22Error%22%2Cvoid%20error(e)%7Dvar%20baseURL%3D%22https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D%22%2CblobData%3D%22%3Cp%3EYouTube%20Downloader%20Version%20%22%2Bversion%2B%22%3C%2Fp%3E%5Cn%5Cn%3Cp%3ETitle%3A%20%22%2BpageInfo.metadata.playlistMetadataRenderer.title.htmlEscape()%2B%22%3C%2Fp%3E%5Cn%5Cn%22%2Cscript%3D(blobData%2B%3D%22%3Cstyle%3Ediz%20%7Bwidth%3A%20119px%3B%20border%3A%20solid%201px%3B%20float%3A%20left%3B%20padding%3A%2010px%200%3B%7D%3C%2Fstyle%3E%5Cn%22%2Cdocument.createElement(%22script%22))%3Bscript.innerHTML%3D'function%20updateUI(e)%20%7Bvar%20a%3Ddocument.getElementsByName(%22a%22)%3Bvar%20b%3Ddocument.getElementsByName(%22b%22)%3Bvar%20c%3Ddocument.getElementsByName(%22c%22)%3Bfor%20(var%20i%3D0%3B%20i%3Ca.length%3B%20i%2B%2B)%20%7Bif%20(e%20%3D%3D%20%22a%22)%20%7Ba%5Bi%5D.style%3D%22display%3Ablock%3B%22%3B%7D%20else%20%7Ba%5Bi%5D.style%3D%22display%3Anone%3B%22%3B%7D%3B%7D%3Bfor%20(var%20i%3D0%3B%20i%3Cb.length%3B%20i%2B%2B)%20%7Bif%20(e%20%3D%3D%20%22b%22)%20%7Bb%5Bi%5D.style%3D%22display%3Ablock%3B%22%3B%7D%20else%20%7Bb%5Bi%5D.style%3D%22display%3Anone%3B%22%3B%7D%3B%7D%3Bfor%20(var%20i%3D0%3B%20i%3Cc.length%3B%20i%2B%2B)%20%7Bif%20(e%20%3D%3D%20%22c%22)%20%7Bc%5Bi%5D.style%3D%22display%3Ablock%3B%22%3B%7D%20else%20%7Bc%5Bi%5D.style%3D%22display%3Anone%3B%22%3B%7D%3B%7D%3B%7D%3Bfunction%20updateUIa()%20%7BupdateUI(%22a%22)%7D%3Bfunction%20updateUIb()%20%7BupdateUI(%22b%22)%7D%3Bfunction%20updateUIc()%20%7BupdateUI(%22c%22)%7D%3B%5Cn'%2Casd.appendChild(script)%2CblobData%2B%3D'%3Cnav%20style%3D%22text-align%3A%20center%3B%22%3E%3Ca%20href%3D%22javascript%3Avoid(0)%3B%22%20onClick%3D%22javascript%3AupdateUIa()%22%3E%3Cdiz%3EVideo%20%26%20Audio%3C%2Fdiz%3E%3C%2Fa%3E%3Ca%20href%3D%22javascript%3Avoid(0)%3B%22%20onClick%3D%22javascript%3AupdateUIb()%22%3E%3Cdiz%3EOnly%20Video%3C%2Fdiz%3E%3C%2Fa%3E%3Ca%20href%3D%22javascript%3Avoid(0)%3B%22%20onClick%3D%22javascript%3AupdateUIc()%22%3E%3Cdiz%3EOnly%20Audio%3C%2Fdiz%3E%3C%2Fa%3E%3C%2Fnav%3E%5Cn%3Cbr%3E%3Cbr%3E%3Cbr%3E%5Cn'%2Ciwindow.document.getElementById(%22progress%22).innerHTML%3D%22Downloading%200%2F%22%2Binfo.length%3Bfor(var%20q%3D0%3Bq%3Cinfo.length%3Bq%2B%2B)%7Bvar%20error%3D!1%2CvideoNum%3Dq%2B1%3Btry%7Bvar%20page%3Dawait%20fetch(baseURL%2Binfo%5Bq%5D.playlistVideoRenderer.videoId)%2Cbody%3Dawait%20page.text()%2Cbody%3Dbody.split(%22%3Cscript%22%2Bbody.split(%22var%20ytInitialPlayerResponse%20%3D%20%22)%5B0%5D.split(%22%3Cscript%22).pop()%2B%22var%20ytInitialPlayerResponse%20%3D%20%22)%5B1%5D.split(%22%3C%5C%2Fscript%3E%22)%5B0%5D%2CpageInfo%3Deval(%22(function()%20%7Breturn%20%22%2Bbody%2B%22%7D)()%3B%22)%2Curls%3DpageInfo.streamingData.formats%2CadaptiveUrls%3DpageInfo.streamingData.adaptiveFormats%2CvideoTitle%3DpageInfo.videoDetails.title%7Dcatch(e)%7Bvar%20error%3D!0%3BblobData%2B%3D%22%3Cp%3EVideo%20%22%2BvideoNum%2B%22%3A%20error%20fetching%20or%20parsing%20data%3C%2Fp%3E%22%7Dif(!error)%7BblobData%2B%3D%22%3Cp%3EVideo%20%22%2BvideoNum%2B%22%3A%20%22%2BvideoTitle.htmlEscape()%2B%22%3C%2Fp%3E%5Cn%22%3Bfor(var%20hasEncrypted%3D!1%2Ci%3D0%3Bi%3Curls.length%3Bi%2B%2B)%7Bvar%20a%3Durls%5Bi%5D.cipher%7C%7Curls%5Bi%5D.signatureCipher%2ChasEncrypted%3Ba%26%26(hasEncrypted%3D!0%2Curls%5Bi%5D.url%3Dawait%20decryptURL(a))%7Dfor(var%20i%3D0%3Bi%3CadaptiveUrls.length%3Bi%2B%2B)%7Bvar%20a%3DadaptiveUrls%5Bi%5D.cipher%7C%7CadaptiveUrls%5Bi%5D.signatureCipher%2ChasEncrypted%3Ba%26%26(hasEncrypted%3D!0%2CadaptiveUrls%5Bi%5D.url%3Dawait%20decryptURL(a))%7Dif(hasEncrypted%26%26(blobData%2B%3D%22%5Cn%3Cp%3EURLs%20may%20not%20work%2C%20report%20an%20issue%20if%20it%20does%20not%20work.%3C%2Fp%3E%5Cn%22)%2C!error)%7BblobData%2B%3D'%3Cdiv%20name%3D%22a%22%3E'%3Bfor(var%20i%3D0%3Bi%3Curls.length%3Bi%2B%2B)blobData%2B%3D%22%3Cp%3EQuality%3A%20%22%2Burls%5Bi%5D.qualityLabel%2B%22%3B%20fps%3A%20%22%2Burls%5Bi%5D.fps%2B%22%3B%20Mimetype%3A%20%22%2Burls%5Bi%5D.mimeType.split(%22%3B%22)%5B0%5D%2B'%3B%20Url%3A%20%3Ca%20target%3D%22_blank%22%20href%3D%22'%2Burls%5Bi%5D.url%2B'%22%3EOpen%3C%2Fa%3E%20%3Ca%20target%3D%22_blank%22%20href%3D%22'%2Burls%5Bi%5D.url%2B%22%26title%3D%22%2BvideoTitle.replaceAll(%22%20%22%2C%22%2B%22)%2B'%22%3EDownload%3C%2Fa%3E%3C%2Fp%3E%5Cn'%3BblobData%2B%3D%22%3C%2Fdiv%3E%5Cn%22%2CblobData%2B%3D'%3Cdiv%20name%3D%22b%22%20style%3D%22display%3Anone%3B%22%3E'%2CblobData%2B%3D%22%5Cn%22%3Bfor(var%20i%3D0%3Bi%3CadaptiveUrls.length%3Bi%2B%2B)%22video%22%3D%3DadaptiveUrls%5Bi%5D.mimeType.split(%22%2F%22)%5B0%5D%26%26(blobData%2B%3D%22%3Cp%3EQuality%3A%20%22%2BadaptiveUrls%5Bi%5D.qualityLabel%2B%22%3B%20fps%3A%20%22%2BadaptiveUrls%5Bi%5D.fps%2B%22%3B%20Mimetype%3A%20%22%2BadaptiveUrls%5Bi%5D.mimeType.split(%22%3B%22)%5B0%5D%2B'%3B%20Url%3A%20%3Ca%20target%3D%22_blank%22%20href%3D%22'%2BadaptiveUrls%5Bi%5D.url%2B'%22%3EOpen%3C%2Fa%3E%3C%2Fp%3E%5Cn')%3BblobData%2B%3D%22%3C%2Fdiv%3E%5Cn%22%2CblobData%2B%3D'%3Cdiv%20name%3D%22c%22%20style%3D%22display%3Anone%3B%22%3E'%2CblobData%2B%3D%22%5Cn%22%3Bfor(var%20i%3D0%3Bi%3CadaptiveUrls.length%3Bi%2B%2B)%22audio%22%3D%3DadaptiveUrls%5Bi%5D.mimeType.split(%22%2F%22)%5B0%5D%26%26(blobData%2B%3D%22%3Cp%3EBitrate%3A%20%22%2BadaptiveUrls%5Bi%5D.bitrate%2B%22%3B%20Mimetype%3A%20%22%2BadaptiveUrls%5Bi%5D.mimeType.split(%22%3B%22)%5B0%5D%2B'%3B%20Url%3A%20%3Ca%20target%3D%22_blank%22%20href%3D%22'%2BadaptiveUrls%5Bi%5D.url%2B'%22%3EOpen%3C%2Fa%3E%3C%2Fp%3E%5Cn')%3BblobData%2B%3D%22%3C%2Fdiv%3E%5Cn%22%2CblobData%2B%3D%22%3Cbr%3E%22%7D%7Diwindow.document.getElementById(%22progress%22).innerHTML%3D%22Downloading%20%22%2B(q%2B1)%2B%22%2F%22%2Binfo.length%7Diwindow.document.body.innerHTML%3D%22%22%3Bvar%20rew%3Ddocument.createElement(%22div%22)%3Brew.innerHTML%3DblobData%2Casd.appendChild(rew)%2Ciwindow.document.body.appendChild(asd)%7Dasync%20function%20membersOnlyPlaylist()%7Bconst%20e%3Dawait%20async%20function()%7Bvar%20e%3D%5B%22https%3A%2F%2Fwww.youtube.com%2Fchannel%2F%22%2C%22http%3A%2F%2Fwww.youtube.com%2Fchannel%2F%22%5D%3Bfor(const%20a%20of%5Blocation.href%5D)for(const%20n%20of%20e)if(a%26%26a.startsWith(n))return%20a.split(%2F%5B%3F%23%5D%2F)%5B0%5D.substr(n.length)%3Bconst%20t%3Dawait%20fetch(location.href)%2Ci%3D(new%20DOMParser).parseFromString(await%20t.text()%2C%22text%2Fhtml%22)%3Btry%7Breturn%20i.querySelector(%22meta%5Bitemprop%3D'channelId'%5D%22).getAttribute(%22content%22)%7Dcatch(e)%7B%7D%7D()%3Bvar%20t%2Ci%3Be%3Fwindow.open(%22https%3A%2F%2Fwww.youtube.com%2Fplaylist%3Flist%3DUUMO%22%2Be.substr(2%2C22)%2C%22_blank%22)%3A(console.log(%22%5BMEMBERSHIP%20PLAYLIST%20REDIRECT%5D%20Cannot%20get%20channel%20ID%20on%20%22%2Blocation.href)%2Cvoid%200%3D%3D%3D(t%3Dwindow.hasOwnProperty(%22ytInitialPlayerResponse%22)%26%26null!%3Dwindow.ytInitialPlayerResponse%26%26window.ytInitialPlayerResponse.hasOwnProperty(%22videoDetails%22)%26%26window.ytInitialPlayerResponse.videoDetails.hasOwnProperty(%22channelId%22)%3F(console.log(%22Found%20channel%20in%20ytInitialPlayerResponse%22)%2Cwindow.ytInitialPlayerResponse.videoDetails.channelId)%3A(Array.prototype.slice.call(document.getElementsByTagName(%22link%22)).forEach(function(e)%7B%22canonical%22%3D%3D%3De.getAttribute(%22rel%22)%26%26(console.log(%22Found%20channel%20link%22)%2Ci%3De.getAttribute(%22href%22).substr(32))%7D)%2Ci))%3Fconsole.warn(%22Could%20not%20find%20a%20channel%20ID%20at%20%22%2Blocation.href)%3A(console.log(%22Going%20to%20membership%20playlist%20URL%22)%2Cwindow.open(%22https%3A%2F%2Fwww.youtube.com%2Fplaylist%3Flist%3DUUMO%22%2Bt.substring(e.length-22)%2C%22_blank%22)))%7Dasync%20function%20gotVideoInfo(e)%7Bif(e.streamingData)%7Btry%7Bvar%20t%3De.streamingData.formats%2Ci%3De.streamingData.adaptiveFormats%2Ca%3De.videoDetails.title%3Btry%7Bvar%20n%3De.captions.playerCaptionsTracklistRenderer.captionTracks%7Dcatch(e)%7B%7D%7Dcatch(e)%7Breturn%20void%20error(e)%7Dfor(var%20r%3D!1%2Co%3D0%3Bo%3Ct.length%3Bo%2B%2B)(l%3Dt%5Bo%5D.cipher%7C%7Ct%5Bo%5D.signatureCipher)%26%26(r%3D!0%2Ct%5Bo%5D.url%3Dawait%20decryptURL(l))%3Bfor(var%20l%2Co%3D0%3Bo%3Ci.length%3Bo%2B%2B)(l%3Di%5Bo%5D.cipher%7C%7Ci%5Bo%5D.signatureCipher)%26%26(r%3D!0%2Ci%5Bo%5D.url%3Dawait%20decryptURL(l))%3Bvar%20e%3Dawait%20xml2vtt(n%2Ca)%2Cs%3D%22%3Ch1%3EYouTube%20Downloader%20Version%20%22%2Bversion%2B%22%3C%2Fh1%3E%5Cn%5Cn%3Ch2%3ETitle%3A%20%22%2Ba.htmlEscape()%2B%22%3C%2Fh2%3E%5Cn%5Cn%22%3Bwindow.ytdlCurrentVersion%26%26window.ytdlCurrentVersion%3Eversion%26%26(s%2B%3D%22%3Cp%3EYou%20are%20on%20youtube%20downloader%20version%20%22%2Bversion%2B%22%20but%20the%20newest%20version%20is%20%22%2Bwindow.ytdlCurrentVersion%2B'.%20%3Ca%20href%3D%22https%3A%2F%2Fgithub.com%2Fethanaobrien%2Fyoutube-downloader%22%3EClick%20here%20to%20open%20github%20(to%20update)%3C%2Fa%3E%3C%2Fp%3E%5Cn')%2Cr%26%26(s%2B%3D%22%3Cp%3EURLs%20may%20not%20work%2C%20report%20an%20issue%20if%20they%20do%20not%20work.%3C%2Fp%3E%5Cn%22)%2Cs%2B%3D%22%3Ch2%3EAudio%20and%20Video%3C%2Fh2%3E%3Cul%3E%22%3Bfor(o%3D0%3Bo%3Ct.length%3Bo%2B%2B)s%2B%3D%22%3Cp%3EQuality%3A%20%22%2Bt%5Bo%5D.qualityLabel%2B%22%3B%20fps%3A%20%22%2Bt%5Bo%5D.fps%2B%22%3B%20Mimetype%3A%20%22%2Bt%5Bo%5D.mimeType.split(%22%3B%22)%5B0%5D%2B'%3B%20Url%3A%20%3Ca%20target%3D%22_blank%22%20href%3D%22'%2Bt%5Bo%5D.url%2B'%22%3EOpen%3C%2Fa%3E%3C%2Fp%3E%5Cn%5Cn'%3Bs%2B%3D%22%3C%2Ful%3E%3Ch2%3ENo%20Audio%3C%2Fh2%3E%3Cul%3E%22%3Bfor(o%3D0%3Bo%3Ci.length%3Bo%2B%2B)%22video%22%3D%3Di%5Bo%5D.mimeType.split(%22%2F%22)%5B0%5D%26%26(s%2B%3D%22%3Cp%3EQuality%3A%20%22%2Bi%5Bo%5D.qualityLabel%2B%22%3B%20fps%3A%20%22%2Bi%5Bo%5D.fps%2B%22%3B%20Mimetype%3A%20%22%2Bi%5Bo%5D.mimeType.split(%22%3B%22)%5B0%5D%2B'%3B%20Url%3A%20%3Ca%20target%3D%22_blank%22%20href%3D%22'%2Bi%5Bo%5D.url%2B'%22%3EOpen%3C%2Fa%3E%3C%2Fp%3E%5Cn%5Cn')%3Bs%2B%3D%22%3C%2Ful%3E%3Ch2%3EOnly%20Audio%3C%2Fh2%3E%3Cul%3E%22%3Bfor(o%3D0%3Bo%3Ci.length%3Bo%2B%2B)%22audio%22%3D%3Di%5Bo%5D.mimeType.split(%22%2F%22)%5B0%5D%26%26(s%2B%3D%22%3Cp%3EBitrate%3A%20%22%2Bi%5Bo%5D.bitrate%2B%22%3B%20Mimetype%3A%20%22%2Bi%5Bo%5D.mimeType.split(%22%3B%22)%5B0%5D%2B'%3B%20Url%3A%20%3Ca%20target%3D%22_blank%22%20href%3D%22'%2Bi%5Bo%5D.url%2B'%22%3EOpen%3C%2Fa%3E%3C%2Fp%3E%5Cn%5Cn')%3Bs%2B%3D%22%3C%2Ful%3E%22%2Ce%26%26(s%2B%3De)%3Bn%3Dnew%20Uint8Array(%5B239%2C187%2C191%5D)%2Ca%3Dnew%20Blob(%5Bn%2Cs%5D%2C%7Btype%3A%22text%2Fhtml%22%7D)%3Bwindow.open(URL.createObjectURL(a)%2C%22Download%22%2C%22width%3D600%2Cheight%3D600%22)%7Delse%20alert(%22%5Bytdl%5D%20There%20are%20restrictions%20preventing%20you%20from%20viewing%20this%20video%22)%7D%7D%7D()%3B;})()" class="btn" style="cursor: move;">Youtube downloader</a><br><br><p>Youtube Downloader version 3.2</p><br><p>Drag the button to the bookmark bar, open youtube, click a video, and click it</p><br><p><a href='https://github.com/ethanaobrien/youtube-downloader'>View on github</a> <a href='https://github.com/ethanaobrien/youtube-downloader/issues'>Make an Issue</a></p></center></body></html>