UNPKG

@kelvdra/scraper

Version:

A simple scraper by kelvdra.

73 lines (70 loc) 2.32 kB
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 }; }