|
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 |
|
} |