Helper-esm / lib /feloAI.js
Khrisna's picture
Create feloAI.js
77c3419 verified
raw
history blame
1.77 kB
import axios from "axios";
async function feloAI (query, lang) {
const headers = {
Accept: "/",
"User-Agent": "Postify/1.0.0",
"Content-Encoding": "gzip, deflate, br, zstd",
"Content-Type": "application/json",
"Origin": "https://felo.ai",
"Referer": "https://felo.ai/"
};
const generateUUID = () => {
return (
Math.random().toString(16).slice(2) +
Math.random().toString(16).slice(2) +
Math.random().toString(16).slice(2) +
Math.random().toString(16).slice(2)
);
};
const payload = {
query,
search_uuid: generateUUID(),
search_options: {
langcode: lang
},
search_video: true,
};
const request = (badi) => {
const result = {
answer: "",
source: [],
};
badi.split("\n").forEach((line) => {
if (line.startsWith("data:")) {
try {
const data = JSON.parse(line.slice(5).trim());
if (data.data) {
if (data.data.text) {
result.answer = data.data.text
.replace(/\\(.?)\\/g, "$1*")
.replace(/^#{2,3}\s+/g, "")
.split("\n")
.map((line) => line.replace(/^#{2,3}\s+/g, "> "))
.join("\n");
}
if (data.data.sources) {
result.source = data.data.sources;
}
}
} catch (e) {
console.error(e);
}
}
});
return result;
};
try {
const response = await axios.post(
"https://api.felo.ai/search/threads",
payload,
{
headers,
responseType: "text",
},
);
return request(response.data);
} catch (error) {
console.error(error);
return null;
}
};
export { feloAI };