Rooni commited on
Commit
650a8e4
·
verified ·
1 Parent(s): 2e4dcc6

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +13 -55
server.js CHANGED
@@ -1,72 +1,30 @@
1
  const express = require('express');
2
- const rateLimit = require('express-rate-limit');
3
  const axios = require('axios');
4
 
5
  const app = express();
6
  app.use(express.json());
7
 
8
- const openai_key = process.env.OPENAI_KEY;
 
9
 
10
- const start = `Ты генератор рецептов. В этом чате, тебе будут присылать названия блюд или описывать их или присылать название категории, а ты должен будешь написать идеальный, понятный, подробный, лёгкий или сложный рецепт со всеми пропорциями, количествами и этапами готовки (этапы готовки должны быть разделены, например 1.1., 1.2., 2.1., 2.2. (Обязательно со звёздочками, это жирный шрифт) С эмодзи.
11
-
12
- Ответ должен выглядить ТОЛЬКО так (чтобы потом regexp доставал из него текст):
13
- "
14
- +название+Название рецепта, блюда-название-
15
- +время+Примерное время готовки (только время, например: "40 минут", "2 часа" и т.д.)-время-
16
-
17
- +кат+Категория: На каждый день, Основные блюда, Супы, Десерты и выпечка, Салаты, Несладкая выпечка, Завтраки, Закуски, Напитки, Ресторанные-кат-
18
-
19
- +ингр+Ингридиенты: В именительном падеже - то есть например: "Яйцо -
20
- 2 штуки", а не "2 яйца"; Здесь обязательно заменяй ВСЕ новые строки ("
21
- ") на "_÷_"-ингр-
22
-
23
- +рец+Рецепт; Здесь обязательно заменяй ВСЕ новые строки ("
24
- ") на "_÷_"-рец-"
25
-
26
- Если ты не можешь сгенерировать такой рецепт, то напиши так:
27
- "
28
- +ошибка+Причина-ошибка-
29
- "`;
30
- /*
31
- const generateLimiter = rateLimit({
32
- windowMs: 30 * 1000, // 30 секунд
33
- max: 1, // лимит: 1 запрос на IP
34
- handler: function (req, res) {
35
- return res.status(429).json({
36
- error: "Слишком много запросов с этого IP, пожалуйста, попробуйте позже. (Лимит 1 генерация в 30 секунд)"
37
- });
38
- }
39
- });*/
40
-
41
- app.post('/generate'/*, generateLimiter*/, async (req, res) => {
42
- const prompt = req.body.prompt;
43
-
44
- if (!prompt) {
45
  return res.status(400).json({ error: '❌ Ошибка данных, повторите попытку.' });
46
  }
47
 
48
  try {
49
- const response = await axios.post('https://api.openai.com/v1/chat/completions', {
50
- messages: [{'role': 'system', 'content': start}, {'role': 'user', 'content': prompt}],
51
- max_tokens: 2000,
52
- model: "gpt-3.5-turbo",
53
- }, {
54
- headers: {
55
- 'Authorization': `Bearer ${openai_key}`,
56
- 'Content-Type': 'application/json',
57
- },
58
- });
59
 
60
- if (response.data.choices && response.data.choices.length > 0 && response.data.choices[0].message) {
61
- const content = response.data.choices[0].message.content.trim();
62
- console.log(content);
63
- res.json({ content });
64
- } else {
65
- res.status(500).json({ error: '❌ Не удалось прочитать рецепт.' });
66
- }
67
  } catch (error) {
68
  console.error(error);
69
- res.status(500).json({ error: '❌ Произошла ошибка сервера при генерации.' });
70
  }
71
  });
72
 
 
1
  const express = require('express');
 
2
  const axios = require('axios');
3
 
4
  const app = express();
5
  app.use(express.json());
6
 
7
+ app.post('/fetch-sheet', async (req, res) => {
8
+ const { key, list, page, max } = req.body;
9
 
10
+ if (!key || !list || !page || !max) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  return res.status(400).json({ error: '❌ Ошибка данных, повторите попытку.' });
12
  }
13
 
14
  try {
15
+ const url = `https://opensheet.elk.sh/${key}/${list}`;
16
+ const response = await axios.get(url);
17
+ const data = response.data;
18
+
19
+ // Разделение данных на страницы
20
+ const startIndex = (page - 1) * max;
21
+ const endIndex = startIndex + max;
22
+ const paginatedData = data.slice(startIndex, endIndex);
 
 
23
 
24
+ res.json(paginatedData);
 
 
 
 
 
 
25
  } catch (error) {
26
  console.error(error);
27
+ res.status(500).json({ error: '❌ Произошла ошибка сервера при запросе данных.' });
28
  }
29
  });
30