mcmeszi commited on
Commit
302ac75
·
verified ·
1 Parent(s): 0bdc5ad

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +28 -6
server.js CHANGED
@@ -16,7 +16,28 @@ if (!process.env.OPENAI_KEY) {
16
  app.use(express.json());
17
  app.use(express.static("public"));
18
 
19
- /* ---------- Simple token‑bucket rate‑limiter for Bible‑API (15 req / 30 s) ---------- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  let tokens = 15;
21
  setInterval(() => {
22
  tokens = 15;
@@ -31,7 +52,7 @@ async function limitedFetch(url, opts) {
31
 
32
  if (r.status === 429) {
33
  const retry = parseInt(r.headers.get("Retry-After") || "5", 10) * 1000;
34
- console.warn("429 kaptunk, várok", retry, "mst és újrapróbálom →", url);
35
  await delay(retry);
36
  return limitedFetch(url, opts); // single retry
37
  }
@@ -39,7 +60,7 @@ async function limitedFetch(url, opts) {
39
  return r;
40
  }
41
 
42
- /* ---------- Inmemory verse cache (5 perc) ---------- */
43
  const verseCache = new Map(); // key => { text, exp }
44
 
45
  function cacheGet(key) {
@@ -90,9 +111,9 @@ app.post("/api/analyze", async (req, res) => {
90
  messages: [
91
  {
92
  role: "system",
93
- content: "Fordítsd magyarra a megadott Bibliaverset, majd első szám első személyben, legfeljebb két rövid bekezdésben magyarázd el, hogyan kapcsolódik a mai mesterséges intelligencia dilemmáihoz."
94
  },
95
- { role: "user", content: `Verse (KJV): "${engVerse}" — ${ref}` }
96
  ],
97
  temperature: 0.9,
98
  max_tokens: 300
@@ -115,7 +136,8 @@ app.get("/api/meta", async (req, res) => {
115
  if (!book) return res.status(400).json({ error: "Missing book" });
116
 
117
  try {
118
- const url = `https://bible-api.com/data/kjv/${book.toUpperCase()}`;
 
119
  console.log("Meta lekérése ezzel az URL-lel:", url);
120
 
121
  const r = await limitedFetch(url);
 
16
  app.use(express.json());
17
  app.use(express.static("public"));
18
 
19
+ /* ---------- Bible book ID tábla (parameterized API igényli) ---------- */
20
+ const BOOK_IDS = {
21
+ Genesis: "GEN", Exodus: "EXO", Leviticus: "LEV", Numbers: "NUM", Deuteronomy: "DEU",
22
+ Joshua: "JOS", Judges: "JDG", Ruth: "RUT", "1 Samuel": "1SA", "2 Samuel": "2SA",
23
+ "1 Kings": "1KI", "2 Kings": "2KI", "1 Chronicles": "1CH", "2 Chronicles": "2CH",
24
+ Ezra: "EZR", Nehemiah: "NEH", Esther: "EST", Job: "JOB", Psalms: "PSA", Proverbs: "PRO",
25
+ Ecclesiastes: "ECC", "Song of Solomon": "SNG", Isaiah: "ISA", Jeremiah: "JER",
26
+ Lamentations: "LAM", Ezekiel: "EZK", Daniel: "DAN", Hosea: "HOS", Joel: "JOL",
27
+ Amos: "AMO", Obadiah: "OBA", Jonah: "JON", Micah: "MIC", Nahum: "NAM", Habakkuk: "HAB",
28
+ Zephaniah: "ZEP", Haggai: "HAG", Zechariah: "ZEC", Malachi: "MAL", Matthew: "MAT",
29
+ Mark: "MRK", Luke: "LUK", John: "JHN", Acts: "ACT", Romans: "ROM", "1 Corinthians": "1CO",
30
+ "2 Corinthians": "2CO", Galatians: "GAL", Ephesians: "EPH", Philippians: "PHP",
31
+ Colossians: "COL", "1 Thessalonians": "1TH", "2 Thessalonians": "2TH", "1 Timothy": "1TI",
32
+ "2 Timothy": "2TI", Titus: "TIT", Philemon: "PHM", Hebrews: "HEB", James: "JAS",
33
+ "1 Peter": "1PE", "2 Peter": "2PE", "1 John": "1JN", "2 John": "2JN", "3 John": "3JN",
34
+ Jude: "JUD", Revelation: "REV"
35
+ };
36
+ function toBookId(name) {
37
+ return BOOK_IDS[name] || name.slice(0, 3).toUpperCase();
38
+ }
39
+
40
+ /* ---------- Simple token-bucket rate-limiter for Bible-API (15 req / 30 s) ---------- */
41
  let tokens = 15;
42
  setInterval(() => {
43
  tokens = 15;
 
52
 
53
  if (r.status === 429) {
54
  const retry = parseInt(r.headers.get("Retry-After") || "5", 10) * 1000;
55
+ console.warn("429 kaptunk, várok", retry, "ms-t és újrapróbálom →", url);
56
  await delay(retry);
57
  return limitedFetch(url, opts); // single retry
58
  }
 
60
  return r;
61
  }
62
 
63
+ /* ---------- In-memory verse cache (5 perc) ---------- */
64
  const verseCache = new Map(); // key => { text, exp }
65
 
66
  function cacheGet(key) {
 
111
  messages: [
112
  {
113
  role: "system",
114
+ content: "Fordítsd magyarra a megadott Biblia-verset, majd első szám első személyben, legfeljebb két rövid bekezdésben magyarázd el, hogyan kapcsolódik a mai mesterséges intelligencia dilemmáihoz."
115
  },
116
+ { role: "user", content: `Verse (KJV): \"${engVerse}\" — ${ref}` }
117
  ],
118
  temperature: 0.9,
119
  max_tokens: 300
 
136
  if (!book) return res.status(400).json({ error: "Missing book" });
137
 
138
  try {
139
+ const bookId = toBookId(book);
140
+ const url = `https://bible-api.com/data/kjv/${bookId}`;
141
  console.log("Meta lekérése ezzel az URL-lel:", url);
142
 
143
  const r = await limitedFetch(url);