document.body.appendChild( Object.assign(document.createElement('div'), {style: 'position:fixed;bottom:0;left:0;', innerHTML: `
` })); 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);