Add a direct download button below each thumbnails
当前为
// ==UserScript==
// @name Bunkrr DL Button
// @version 1.2
// @description Add a direct download button below each thumbnails
// @match https://bunkrr.su/a/*
// @namespace bunkrr
// @license MIT
// ==/UserScript==
(async () => {
"use strict";
const mediaLinks = [...document.querySelectorAll(".grid-images_box-link")];
const links = mediaLinks.map((mediaLink) => {
const relativeLink = mediaLink.getAttribute("href");
return window.location.origin + relativeLink;
});
const medias = document.querySelectorAll(".grid-images > *");
await Promise.all(
links.map(async (link, i) => {
const response = await fetch(link);
const html = await response.text();
const parser = new DOMParser();
const doc = parser.parseFromString(html, "text/html");
const ddlLink = doc.querySelector("a[href$='.mp4']").getAttribute("href");
const media = medias[i];
const mediaStyle = {
display: "flex",
flexDirection: "column",
border: "none",
padding: "0",
};
Object.assign(media.style, mediaStyle);
const mediaChildren = media.querySelectorAll(":scope > *");
mediaChildren[mediaChildren.length - 1].style.bottom = "0";
const newMediaBox = document.createElement("div");
const newMediaBoxStyle = {
position: "relative",
padding: "0.625rem",
paddingBottom: "0",
border: "solid #ffd369 2px",
borderBottom: "none",
};
Object.assign(newMediaBox.style, newMediaBoxStyle);
newMediaBox.append(...mediaChildren);
const dlBox = document.createElement("a");
dlBox.setAttribute("href", ddlLink);
dlBox.textContent = "Download";
const dlBoxStyle = {
border: "solid #ffd369 2px",
borderRadius: "0px 0px 20px 20px",
width: "100%",
};
Object.assign(dlBox.style, dlBoxStyle);
media.append(newMediaBox, dlBox);
})
);
})();