// ==UserScript==
// @name YouTube™ Video Downloader (1440p Update)
// @description In just one page, you can now download your favorite videos on YouTube
// @namespace http://tampermonkey.net/
// @version 1.0
// @author LazymanzoidYT (Design by Anpkal_Zuev)
// @match https://www.youtube.com/*
// @icon https://www.google.com/s2/favicons?domain=youtube.com
// @grant GM_xmlhttpRequest
// @compatible chrome
// @compatible firefox
// @compatible opera
// @compatible edge
// @compatible brave
// @connect googuu.xyz
// @connect loader.to
// @connect oceansaver.in
// @license MIT
// ==/UserScript==
// Copyright (c) 2021 Anpkal Zuev, LazymanzoidYT and others
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
window.onload = function() {
var dark = !!document.getElementsByTagName("html")[0].getAttribute("dark");
var downloadIcon = `<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000" style="margin-top: 5px;"><path d="M0 0h24v24H0V0z" fill="none"></path><path d="M13 5v6h1.17L12 13.17 9.83 11H11V5h2m2-2H9v6H5l7 7 7-7h-4V3zm4 15H5v2h14v-2z"></path></svg>`;
if(dark){
downloadIcon = `<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#FFFFFF"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5z"/></svg>`
}
var programSTATUS = 0;
function startload(){
var format= document.getElementById("formatus").value;
var f= format;
if(f=="8k"||f=="4k"||f=="1080"||f=="720"||f=="480"||f=="360"){
f="mp4";
}
getFORMVIDEO(format,f);
}
function updatepos(one,two){
var reproz = 100/two;
var ttproz = reproz*one;
document.getElementById("download21").innerText = "Downloaded: "+Math.trunc(ttproz*10)/10+"%";
if(Math.trunc(ttproz*10)/10 == 100){
document.getElementById("download21").innerText="Download"
}
}
function getFORMVIDEO(format,fff){
var link = `https://loader.to/ajax/download.php?start=1&end=1&format=`+format+`&url=`+encodeURI(window.location.href);
GM_xmlhttpRequest({
method: 'GET',
url: link,
responseType:"json",
onload: function() {
var ide = this.response.id;
var gtitle = this.response.title
checkStatus();
function checkStatus(){
GM_xmlhttpRequest({
method: 'GET',
url: "https://loader.to/ajax/progress.php?id="+ide,
responseType:"json",
onload: function() {
document.getElementById("download21").innerText="Downloading video from server: " + ""+this.response.progress/10+"%";
if(this.response.text != "Downloaded."){
setTimeout(()=>{checkStatus();},800);
}else{
download(this.response.download_url,gtitle,fff)
}
}
});
}
}
});
}
function download(link,name,type){
window.location.href = link;
programSTATUS=0;
document.getElementById("download21").innerText="Convert and Download ⬇️";
/*
GM_xmlhttpRequest({
method: 'GET',
url: link,
responseType:"blob",
onload: function() {
console.log(1);
save([this.response], name+"."+type);
},
onprogress:function(r) {
updatepos(r.loaded,r.totalSize)
}
});
*/
}
var save = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, name) { programSTATUS=0;
var blob = new Blob(data, {type: "octet/stream"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = name;
a.click();
window.URL.revokeObjectURL(url);
if(document.getElementById("ON125374").checked){
showsettingsd();
localStorage.setItem('ACLOSE154658', '1');
}
};
}());
var menu15 = `
<div style="
width: 250px;
height: 89px;
background-color: white;
margin-left: calc(100vw/2 - 250px/2);
margin-top: calc(100vh/2 - 89px/2);
outline: 2px solid #000;
padding: 0px;
"><div style="height: 19px;">
<div style="
width: 84px;
float: left;
margin-left: 4px;
margin-top: 2px;
">YouTube™ Video Downloader by Lazymanzoid</div><div style="
width: 50px;
float: left;
margin-left: 4px;
margin-top: 2px;
margin-left: 46px;
">auto close</div><input type="checkbox" id="ON125374" style="
margin-left: -1px;
"><button id="slaves" style="
border-radius: 0px;
float: right;
border-width: 2px;
border: 0px;
height: 19px;
background-color: #e91e63;
"> X </button></div><div style="
height: 17px;
"><select id="formatus" style="
width: 250px;
border-width: 0px;
background-color: #fff;
"><optgroup label="Audio">
<option value="mp3">MP3</option>
<option value="m4a">M4A</option>
<option value="webm">WEBM</option>
<option value="aac">AAC</option>
<option value="flac">FLAC</option>
<option value="opus">OPUS</option>
<option value="ogg">OGG</option>
<option value="wav">WAV</option>
</optgroup><optgroup label="Video">
<option value="360">MP4 (360 px)</option>
<option value="480">MP4 (480 px)</option>
<option value="720">MP4 (720p)</option>
<option value="1080" selected="selected">MP4 (1080p)</option>
<option value="1440">MP4 (1440p)</option>
<option value="4k">WEBM (4K)</option>
<option value="8k">WEBM (8K)</option></optgroup></select></div><button id="download21" style="
border-radius: 0px;
float: right;
border-width: 2px;
width: 100%;
height: 53px;
border: 0;
">Convert and Download ⬇️</button></div>
`;
function showsettingsd(){
var lay = document.getElementsByClassName("15674821765123")[0];
var pos = lay.style.display;
lay.style.display = ( pos=="none" ? "block" : "none");
}
setListener();
function setListener(){
try{
document.getElementById("slaves").onclick = function() {
showsettingsd();
};
document.getElementsByClassName("14221212455")[0].onclick = function() {
showsettingsd();
};
document.getElementById("download21").onclick = function() {
if(!programSTATUS){
startload();
programSTATUS=1;
}else{
alert("The video is still loading..")
}
};
document.getElementById("ON125374").onclick= function() {
if(document.getElementById("ON125374").checked){
localStorage.setItem('ACLOSE154658', '1');
}else{
localStorage.setItem('ACLOSE154658', '0');
}
};
}catch{setTimeout(()=>{setListener();},500)}
}
let div = document.createElement("div");
div.className = "14221212455";
div.innerHTML = downloadIcon;
try{setTimeout(()=>{document.getElementsByClassName("style-scope ytd-video-primary-info-renderer")[8].append(div);},1000);}
catch{
try{setTimeout(()=>{document.getElementsByClassName("style-scope ytd-video-primary-info-renderer")[8].append(div);},1000);}
catch{
setTimeout(()=>{document.getElementsByClassName("style-scope ytd-video-primary-info-renderer")[8].append(div);},1000);
}
}
let div1 = document.createElement('div');
div1.className = "15674821765123";
div1.innerHTML = menu15;
div1.style = `width: 100vw;background-color: #00000024;height: 100vh;position: fixed;right: 5px;display: none;z-index:99999999;`;
document.body.prepend(div1);
if(!!Number(localStorage.getItem("ACLOSE154658"))){
document.getElementById("ON125374").click();
}
}