1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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();
|