Quellcode durchsuchen

feat: wont fetch prompts in every building

Yidadaa vor 1 Jahr
Ursprung
Commit
93044590cc
4 geänderte Dateien mit 26 neuen und 11 gelöschten Zeilen
  1. 1 3
      .gitignore
  2. 3 3
      package.json
  3. 4 0
      public/prompts.json
  4. 18 5
      scripts/fetch-prompts.mjs

+ 1 - 3
.gitignore

@@ -36,10 +36,8 @@ yarn-error.log*
 next-env.d.ts
 dev
 
-public/prompts.json
-
 .vscode
 .idea
 
 # docker-compose env files
-.env
+.env

+ 3 - 3
package.json

@@ -4,11 +4,11 @@
   "private": false,
   "license": "Anti 996",
   "scripts": {
-    "dev": "yarn fetch && next dev",
-    "build": "yarn fetch && next build",
+    "dev": "next dev",
+    "build": "next build",
     "start": "next start",
     "lint": "next lint",
-    "fetch": "node ./scripts/fetch-prompts.mjs",
+    "prompts": "node ./scripts/fetch-prompts.mjs",
     "prepare": "husky install",
     "proxy-dev": "sh ./scripts/init-proxy.sh && proxychains -f ./scripts/proxychains.conf yarn dev"
   },

Datei-Diff unterdrückt, da er zu groß ist
+ 4 - 0
public/prompts.json


+ 18 - 5
scripts/fetch-prompts.mjs

@@ -2,7 +2,7 @@ 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 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;
@@ -10,10 +10,12 @@ 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'));
+      reject(new Error("Request timeout"));
     }, timeout);
   });
 };
@@ -21,10 +23,16 @@ const timeoutPromise = (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]);
+    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 [];
@@ -40,7 +48,12 @@ async function fetchEN() {
     return raw
       .split("\n")
       .slice(1)
-      .map((v) => v.split('","').map((v) => v.replace(/^"|"$/g, '').replaceAll('""','"')));
+      .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 [];

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.