javdb_copy_all_magnets.user.js: add
This commit is contained in:
parent
7916dda024
commit
a06cb051a4
|
@ -0,0 +1,81 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name JavDB - Copy all magnets
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @match https://javdb.com/v/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author Lukáš Kucharczyk
|
||||||
|
// @description Adds a button to copy all magnet links at once.
|
||||||
|
// @downloadURL https://git.kucharczyk.xyz/lukas/userscripts/raw/branch/main/javdb_copy_all_magnets.user.js
|
||||||
|
// @supportURL https://git.kucharczyk.xyz/lukas/userscripts
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} type
|
||||||
|
* @param {object} props
|
||||||
|
* @param {...(string|HTMLElement)} children
|
||||||
|
* @return {HTMLElement}
|
||||||
|
*/
|
||||||
|
function elt(type, props, ...children) {
|
||||||
|
let dom = document.createElement(type);
|
||||||
|
if (props) {
|
||||||
|
Object.keys(props).forEach((key) => {
|
||||||
|
if (key === "style") {
|
||||||
|
Object.assign(dom.style, props[key]);
|
||||||
|
} else if (key === "dataset") {
|
||||||
|
Object.keys(props[key]).forEach((dataKey) => {
|
||||||
|
dom.dataset[dataKey] = props[key][dataKey];
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
dom[key] = props[key];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
for (let child of children) {
|
||||||
|
if (typeof child !== "string") dom.appendChild(child);
|
||||||
|
else dom.appendChild(document.createTextNode(child));
|
||||||
|
}
|
||||||
|
return dom;
|
||||||
|
}
|
||||||
|
|
||||||
|
function findElementsWithText(text, tagName = "*") {
|
||||||
|
const elements = document.querySelectorAll(tagName);
|
||||||
|
return Array.from(elements).filter((element) =>
|
||||||
|
element.textContent.includes(text)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const allMagnetButtons = findElementsWithText("Copy", "button");
|
||||||
|
let allMagnetLinks = allMagnetButtons.reduce((prevValue, currentButton) => {
|
||||||
|
return prevValue + "\n" + currentButton.dataset.clipboardText;
|
||||||
|
}, "");
|
||||||
|
|
||||||
|
let copyAllButton = elt(
|
||||||
|
"div",
|
||||||
|
{
|
||||||
|
className: "item columns is-desktop",
|
||||||
|
},
|
||||||
|
elt("div", {
|
||||||
|
className: "magnet-name column is-four-fifths",
|
||||||
|
}),
|
||||||
|
elt(
|
||||||
|
"div",
|
||||||
|
{
|
||||||
|
className: "buttons column",
|
||||||
|
},
|
||||||
|
elt(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
type: "button",
|
||||||
|
className: "button is-info copy-to-clipboard",
|
||||||
|
dataset: {
|
||||||
|
clipboardText: allMagnetLinks,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Copy all magnets"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const magnetContainer = document.getElementById("magnets-content");
|
||||||
|
magnetContainer.prepend(copyAllButton);
|
Loading…
Reference in New Issue