Spaces:
Build error
Build error
import fetch from "node-fetch"; | |
import fs from "fs/promises"; | |
const RAW_FILE_URL = "https://raw.githubusercontent.com/"; | |
const MIRRORF_FILE_URL = "http://raw.fgit.ml/"; | |
const RAW_CN_URL = "PlexPt/awesome-chatgpt-prompts-zh/main/prompts-zh.json"; | |
const CN_URL = MIRRORF_FILE_URL + RAW_CN_URL; | |
const RAW_EN_URL = "f/awesome-chatgpt-prompts/main/prompts.csv"; | |
const EN_URL = MIRRORF_FILE_URL + RAW_EN_URL; | |
const FILE = "./public/prompts.json"; | |
const ignoreWords = ["涩涩", "魅魔"]; | |
const timeoutPromise = (timeout) => { | |
return new Promise((resolve, reject) => { | |
setTimeout(() => { | |
reject(new Error("Request timeout")); | |
}, timeout); | |
}); | |
}; | |
async function fetchCN() { | |
console.log("[Fetch] fetching cn prompts..."); | |
try { | |
const response = await Promise.race([fetch(CN_URL), timeoutPromise(5000)]); | |
const raw = await response.json(); | |
return raw | |
.map((v) => [v.act, v.prompt]) | |
.filter( | |
(v) => | |
v[0] && | |
v[1] && | |
ignoreWords.every((w) => !v[0].includes(w) && !v[1].includes(w)), | |
); | |
} catch (error) { | |
console.error("[Fetch] failed to fetch cn prompts", error); | |
return []; | |
} | |
} | |
async function fetchEN() { | |
console.log("[Fetch] fetching en prompts..."); | |
try { | |
// const raw = await (await fetch(EN_URL)).text(); | |
const response = await Promise.race([fetch(EN_URL), timeoutPromise(5000)]); | |
const raw = await response.text(); | |
return raw | |
.split("\n") | |
.slice(1) | |
.map((v) => | |
v | |
.split('","') | |
.map((v) => v.replace(/^"|"$/g, "").replaceAll('""', '"')) | |
.filter((v) => v[0] && v[1]), | |
); | |
} catch (error) { | |
console.error("[Fetch] failed to fetch en prompts", error); | |
return []; | |
} | |
} | |
async function main() { | |
Promise.all([fetchCN(), fetchEN()]) | |
.then(([cn, en]) => { | |
fs.writeFile(FILE, JSON.stringify({ cn, en })); | |
}) | |
.catch((e) => { | |
console.error("[Fetch] failed to fetch prompts"); | |
fs.writeFile(FILE, JSON.stringify({ cn: [], en: [] })); | |
}) | |
.finally(() => { | |
console.log("[Fetch] saved to " + FILE); | |
}); | |
} | |
main(); | |