@kelvdra/scraper
Version:
A simple scraper by kelvdra.
73 lines (70 loc) • 2.32 kB
JavaScript
const fetch = require("node-fetch");
const FormData = require("form-data");
const { JSDOM } = require("jsdom");
async function webp2mp4(source) {
let form = new FormData();
let isUrl = typeof source === "string" && /https?:\/\//.test(source);
form.append("new-image-url", isUrl ? source : "");
form.append("new-image", isUrl ? "" : source, "image.webp");
let res = await fetch("https://ezgif.com/webp-to-mp4", {
method: "POST",
body: form,
});
let html = await res.text();
let { document } = new JSDOM(html).window;
let form2 = new FormData();
let obj = {};
for (let input of document.querySelectorAll("form input[name]")) {
obj[input.name] = input.value;
form2.append(input.name, input.value);
}
let res2 = await fetch("https://ezgif.com/webp-to-mp4/" + obj.file, {
method: "POST",
body: form2,
});
let html2 = await res2.text();
let { document: document2 } = new JSDOM(html2).window;
return new URL(
document2.querySelector("div#output > p.outfile > video > source").src,
res2.url,
).toString();
}
async function webp2png(source) {
let form = new FormData();
let isUrl = typeof source === "string" && /https?:\/\//.test(source);
form.append("new-image-url", isUrl ? source : "");
form.append("new-image", isUrl ? "" : source, "image.webp");
let res = await fetch("https://ezgif.com/webp-to-png", {
method: "POST",
body: form,
});
let html = await res.text();
let { document } = new JSDOM(html).window;
let form2 = new FormData();
let obj = {};
for (let input of document.querySelectorAll("form input[name]")) {
obj[input.name] = input.value;
form2.append(input.name, input.value);
}
let res2 = await fetch("https://ezgif.com/webp-to-png/" + obj.file, {
method: "POST",
body: form2,
});
let html2 = await res2.text();
let { document: document2 } = new JSDOM(html2).window;
return new URL(
document2.querySelector("div#output > p.outfile > img").src,
res2.url,
).toString();
}
if (require.main === module) {
// TODO: Test
webp2mp4("https://mathiasbynens.be/demo/animated-webp-supported.webp").then(
console.error,
);
webp2png("https://mathiasbynens.be/demo/animated-webp-supported.webp").then(
console.error,
);
} else {
module.exports = { webp2mp4, webp2png };
}