This commit is contained in:
2023-06-16 01:22:08 +08:00
parent cd156c5595
commit 6a798a7047
53 changed files with 1328 additions and 5252 deletions
+69 -69
View File
@@ -1,77 +1,77 @@
import fetch from "node-fetch";
import fs from "fs/promises";
// 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_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 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 ignoreWords = ["涩涩", "魅魔"];
// const ignoreWords = [];
const timeoutPromise = (timeout) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error("Request timeout"));
}, timeout);
});
};
// 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 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 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);
});
}
// 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();
// main();