fetch-prompts.mjs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import fetch from "node-fetch";
  2. import fs from "fs/promises";
  3. const RAW_CN_URL =
  4. "https://raw.githubusercontent.com/PlexPt/awesome-chatgpt-prompts-zh/main/prompts-zh.json";
  5. const CN_URL =
  6. "https://cdn.jsdelivr.net/gh/PlexPt/awesome-chatgpt-prompts-zh@main/prompts-zh.json";
  7. const RAW_EN_URL =
  8. "https://raw.githubusercontent.com/f/awesome-chatgpt-prompts/main/prompts.csv";
  9. const EN_URL =
  10. "https://cdn.jsdelivr.net/gh/f/awesome-chatgpt-prompts@main/prompts.csv";
  11. const FILE = "./public/prompts.json";
  12. async function fetchCN() {
  13. console.log("[Fetch] fetching cn prompts...");
  14. try {
  15. const raw = await (await fetch(CN_URL)).json();
  16. return raw.map((v) => [v.act, v.prompt]);
  17. } catch (error) {
  18. console.error("[Fetch] failed to fetch cn prompts", error);
  19. return [];
  20. }
  21. }
  22. async function fetchEN() {
  23. console.log("[Fetch] fetching en prompts...");
  24. try {
  25. const raw = await (await fetch(EN_URL)).text();
  26. return raw
  27. .split("\n")
  28. .slice(1)
  29. .map((v) => v.split('","').map((v) => v.replace('"', "")));
  30. } catch (error) {
  31. console.error("[Fetch] failed to fetch cn prompts", error);
  32. return [];
  33. }
  34. }
  35. async function main() {
  36. Promise.all([fetchCN(), fetchEN()])
  37. .then(([cn, en]) => {
  38. fs.writeFile(FILE, JSON.stringify({ cn, en }));
  39. })
  40. .catch((e) => {
  41. console.error("[Fetch] failed to fetch prompts");
  42. fs.writeFile(FILE, JSON.stringify({ cn: [], en: [] }));
  43. })
  44. .finally(() => {
  45. console.log("[Fetch] saved to " + FILE);
  46. });
  47. }
  48. main();