diff --git a/fddl.js b/fddl.js new file mode 100644 index 0000000..95bf815 --- /dev/null +++ b/fddl.js @@ -0,0 +1,68 @@ +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);