Archived
1
0
Fork 0
This repository has been archived on 2022-05-09. You can view files and clone it, but cannot push or open issues or pull requests.
ytdlp-web/static/js/main.js

143 lines
5.2 KiB
JavaScript

function handleErr(err, origin) {
console.log(err)
switch(origin) {
case "from-init":
case "from-logs":
// request-based err
document.getElementById("prg-spin").style.display = "none";
if (document.getElementById("url").hasAttribute("disabled")) document.getElementById("url").removeAttribute("disabled");
if (document.getElementById("dl-mp4").hasAttribute("disabled")) document.getElementById("dl-mp4").removeAttribute("disabled");
if (document.getElementById("dl-mp3").hasAttribute("disabled")) document.getElementById("dl-mp3").removeAttribute("disabled");
document.getElementById("prg").classList.add("err");
document.getElementById("prg").innerHTML = `${err.type}: ${err.message}`
return;
case "logs":
case "init":
// browser/net error
document.getElementById("prg-spin").style.display = "none";
if (document.getElementById("url").hasAttribute("disabled")) document.getElementById("url").removeAttribute("disabled");
if (document.getElementById("dl-mp4").hasAttribute("disabled")) document.getElementById("dl-mp4").removeAttribute("disabled");
if (document.getElementById("dl-mp3").hasAttribute("disabled")) document.getElementById("dl-mp3").removeAttribute("disabled");
document.getElementById("prg").classList.add("err");
if (err.code && err.message) {
document.getElementById("prg").innerHTML = `${err.code}: ${err.message}`;
} else {
document.getElementById("prg").innerHTML = `A network error either on your end or our end has occured.`;
}
return;
}
}
async function sendDownloadRequest(captchaRes) {
try {
document.getElementById("prg").classList.remove("err");
document.getElementById("prg-spin").style.display = "inline-block";
document.getElementById("prg").innerHTML = `Retrieving information...`;
document.getElementById("th").src = "";
document.getElementById("t").innerHTML = "";
document.getElementById("md").style.display = "none";
document.getElementById("dl-box").style.display = "none";
document.getElementById("url").setAttribute("disabled", "true");
document.getElementById("dl-mp4").setAttribute("disabled", "true");
document.getElementById("dl-mp3").setAttribute("disabled", "true");
let downloadReq
let reqBody = {
url: document.getElementById("url").value,
type: type
}
if (captchaRes) {
reqBody.captcha = captchaRes
}
try {
downloadReq = await fetch('/down', {
method: 'POST',
body: new URLSearchParams(reqBody)
})
var j = await downloadReq.json()
if (j.success) {
document.getElementById("md").style.display = "block";
if (j.meta.title !== null) document.getElementById("t").innerHTML = j.meta.title;
if (j.meta.thumb !== null) document.getElementById("th").src = j.meta.thumb;
document.body.setAttribute("data-dltype", type);
getLogs(j.id);
} else {
handleErr(j, "from-init");
}
} catch (fetchErr) {
handleErr(fetchErr, "init");
}
} catch(err) {
handleErr(err, "init");
}
}
function captchaCallback(captchaRes) {
document.getElementById("h-captcha-cont").style.display = "none";
sendDownloadRequest(captchaRes)
}
var type
function dl(aOrV) {
type = aOrV
if (typeof(hcaptchaSitekey)!='undefined') {
document.getElementById("h-captcha-cont").style.display = "block";
if (!document.querySelector("#h-captcha-cont iframe")) {
hcaptcha.render('h-captcha-cont', {
sitekey: hcaptchaSitekey,
theme: 'dark',
callback: 'captchaCallback'
})
} else {
hcaptcha.reset()
}
} else {
sendDownloadRequest()
}
}
async function getLogs(id) {
try {
var logFetch
try {
logFetch = await fetch(`/logs?id=${id}`, {
method: 'POST',
body: new URLSearchParams({
id: id
})
})
var j = await logFetch.json()
if (j.success) {
document.getElementById("prg").innerHTML = `<b>${j.type}</b>: ${j.message}`;
if (j.message == "Complete") {
at(`/f?id=${id}`); return;
}
if (document.getElementById("prg").classList.contains("err")) document.getElementById("prg").classList.remove("err")
setTimeout(function() {
getLogs(id);
}, 100);
} else {
handleErr(j, "from-logs");
}
} catch (fetchError) {
handleErr(fetchError, "init");
}
} catch(err) {
handleErr(err, "logs");
}
}
function at(url) {
document.getElementById("prg-spin").style.display = "none";
if (document.getElementById("url").hasAttribute("disabled")) document.getElementById("url").removeAttribute("disabled");
if (document.getElementById("dl-mp4").hasAttribute("disabled")) document.getElementById("dl-mp4").removeAttribute("disabled");
if (document.getElementById("dl-mp3").hasAttribute("disabled")) document.getElementById("dl-mp3").removeAttribute("disabled");
document.getElementById("dl-box").style.display = "block";
document.getElementById("dl-link").href = url;
}
function ac() {
var p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return [...Array(6)].reduce(a=>a+p[~~(Math.random()*p.length)],'');
}