2024-03-10 16:02:52 +01:00

69 lines
2.0 KiB
JavaScript

document.body.appendChild(
Object.assign(document.createElement('div'),
{style: 'position:fixed;bottom:0;left:0;',
innerHTML:
`
<div style="background: purple; height: 200px; width: 300px;">
<a id="myDownloader" style="color: white;" href="" download>myDownloader</a>
<div>
<input id="sharedClass" placeholder="shared class"></input>
</div>
<div>
<input id="imageClass" placeholder="viewed image class"></input>
</div>
<div>
<button id="caller">Execute</button>
</div>
</div>
`
}));
function collectLinkOwners(myDownloader, sharedClass) {
let r = [];
for (i of document.getElementsByClassName(sharedClass)) {
try {
var linkOwner = i.getElementsByTagName("a")[0];
} catch (err) {
console.error("Missing 'a' subelement. However, this might be normal.");
}
r.push(linkOwner);
}
return r;
}
function download(myDownloader, imageClass, linkOwners) {
var linkOwner = linkOwners.shift();
linkOwner.click();
requestAnimationFrame(async (myDownloader, imageClass, linkOwners) => {
await new Promise(resolve => setTimeout(resolve, 5000));
try { // image
myDownloader.href = document.getElementsByClassName(imageClass)[0].src;
} catch (err) { // video
let flag = false;
for (i of document.getElementsByTagName('video')){
if(i.offsetParent != null) {
myDownloader.href = i.src;
flag = true;
break;
}
}
if (!flag) {
console.error("Missing media.");
}
}
//myDownloader.click();
console.log(myDownloader.href);
download(myDownloader, imageClass, linkOwners);
}, myDownloader, imageClass, linkOwners);
}
function execute() {
const myDownloader = document.getElementById("myDownloader");
const sharedClass = document.getElementById("sharedClass").value;
const imageClass = document.getElementById("imageClass").value;
if (sharedClass == "" || imageClass == "") {
throw "Empty fields!";
}
download(myDownloader, imageClass, collectLinkOwners(myDownloader, sharedClass));
}
document.getElementById("caller").addEventListener("click", execute);