| import cheerio from 'cheerio' | |
| import cookie from 'cookie' | |
| import fetch from 'node-fetch' | |
| import FormData from 'form-data' | |
| async function post(url, formdata = {}, cookies) { | |
| let encode = encodeURIComponent; | |
| let body = Object.keys(formdata) | |
| .map((key) => { | |
| let vals = formdata[key]; | |
| let isArray = Array.isArray(vals); | |
| let keys = encode(key + (isArray ? "[]" : "")); | |
| if (!isArray) vals = [vals]; | |
| let out = []; | |
| for (let valq of vals) out.push(keys + "=" + encode(valq)); | |
| return out.join("&"); | |
| }) | |
| .join("&"); | |
| return await fetch(`${url}?${body}`, { | |
| method: "GET", | |
| headers: { | |
| Accept: "*/*", | |
| "Accept-Language": "en-US,en;q=0.9", | |
| "User-Agent": "GoogleBot", | |
| Cookie: cookies, | |
| }, | |
| }); | |
| } | |
| async function textpro(url, text) { | |
| if (!/^https:\/\/textpro\.me\/.+\.html$/.test(url)) | |
| throw new Error("Url Salah!!"); | |
| const geturl = await fetch(url, { | |
| method: "GET", | |
| headers: { | |
| "User-Agent": "GoogleBot", | |
| }, | |
| }); | |
| const caritoken = await geturl.text(); | |
| let hasilcookie = geturl.headers | |
| .get("set-cookie") | |
| .split(",") | |
| .map((v) => cookie.parse(v)) | |
| .reduce((a, c) => { | |
| return { ...a, ...c }; | |
| }, {}); | |
| hasilcookie = { | |
| __cfduid: hasilcookie.__cfduid, | |
| PHPSESSID: hasilcookie.PHPSESSID, | |
| }; | |
| hasilcookie = Object.entries(hasilcookie) | |
| .map(([name, value]) => cookie.serialize(name, value)) | |
| .join("; "); | |
| const $ = cheerio.load(caritoken); | |
| const token = $('input[name="token"]').attr("value"); | |
| const form = new FormData(); | |
| if (typeof text === "string") text = [text]; | |
| for (let texts of text) form.append("text[]", texts); | |
| form.append("submit", "Go"); | |
| form.append("token", token); | |
| form.append("build_server", "https://textpro.me"); | |
| form.append("build_server_id", 1); | |
| const geturl2 = await fetch(url, { | |
| method: "POST", | |
| headers: { | |
| Accept: "*/*", | |
| "Accept-Language": "en-US,en;q=0.9", | |
| "User-Agent": "GoogleBot", | |
| Cookie: hasilcookie, | |
| ...form.getHeaders(), | |
| }, | |
| body: form.getBuffer(), | |
| }); | |
| const caritoken2 = await geturl2.text(); | |
| const token2 = /<div.*?id="form_value".+>(.*?)<\/div>/.exec(caritoken2); | |
| if (!token2) throw new Error("Token Not Found!!"); | |
| const prosesimage = await post( | |
| "https://textpro.me/effect/create-image", | |
| JSON.parse(token2[1]), | |
| hasilcookie | |
| ); | |
| const hasil = await prosesimage.json(); | |
| return `https://textpro.me${hasil.fullsize_image}`; | |
| } | |
| export { | |
| textpro | |
| } |