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);