143 lines
5.2 KiB
JavaScript
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)],'');
|
|
} |