Spaces:
Paused
Paused
| import fetch from "node-fetch"; | |
| import fs from "fs/promises"; | |
| const RAW_FILE_URL = "https://raw.githubusercontent.com/"; | |
| const MIRRORF_FILE_URL = "https://raw.fgit.ml/"; | |
| const RAW_CN_URL = "PlexPt/awesome-chatgpt-prompts-zh/main/prompts-zh.json"; | |
| const CN_URL = RAW_FILE_URL + RAW_CN_URL; | |
| const RAW_EN_URL = "f/awesome-chatgpt-prompts/main/prompts.csv"; | |
| const EN_URL = RAW_FILE_URL + RAW_EN_URL; | |
| const FILE = "./public/prompts.json"; | |
| 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 raw = await (await fetch(CN_URL)).json(); | |
| const response = await Promise.race([fetch(CN_URL), timeoutPromise(5000)]); | |
| const raw = await response.json(); | |
| return raw.map((v) => [v.act, v.prompt]); | |
| } 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('""','"'))); | |
| } 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(); | |