diff --git a/api/v1/src/release.js b/api/v1/src/release.js
index 09d83ef..34c24ed 100644
--- a/api/v1/src/release.js
+++ b/api/v1/src/release.js
@@ -1,86 +1,47 @@
const axios = require('axios');
-async function getReleaseFromAnixart(releaseId) {
- const url = `https://api.anixart.tv/release/${releaseId}`;
+// Кэш кастомных заметок
+let cachedNotes = [];
+
+// Функция для загрузки заметок из внешнего API
+async function fetchNotes() {
+ try {
+ const response = await axios.get('https://anixart.seele.su/api/release_note');
+ cachedNotes = Array.isArray(response.data) ? response.data : [];
+ } catch {
+ cachedNotes = [];
+ }
+}
+
+// Загружаем заметки сразу при запуске
+fetchNotes();
+
+// Обновляем заметки каждые 10 минут
+setInterval(fetchNotes, 10 * 60 * 1000);
+
+// Основная функция-парсер
+async function getReleaseFromAnixart(releaseId, token = '') {
+ const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ''}`;
try {
- // Запрос к API Anixart с увеличенным таймаутом
- const response = await axios.get(url, {
- timeout: 10000, // Таймаут 10 секунд
- });
+ const response = await axios.get(url);
const releaseData = response.data;
- if (!releaseData || !releaseData.release) {
- releaseData = { code: 0, release: {} }; // Инициализируем, если данных нет
+ if (!releaseData.release) {
+ releaseData.release = {};
}
- // Извлекаем оригинальное примечание и название
- const originalNote = releaseData.release.note || '';
- const titleOriginal = releaseData.release.title_original || '';
-
- // Инициализируем note
- let noteContent = '';
-
- if (originalNote) {
- noteContent += `Примечание от Anixart:
${originalNote}
`;
+ // Применяем кастомный note, если он есть
+ const noteEntry = cachedNotes.find(entry => entry.id === Number(releaseId));
+ if (noteEntry) {
+ releaseData.release.note = noteEntry.note;
}
- // Поиск аниме в Shikimori
- let shikimoriScore = 'N/A';
- let mainCharacters = [];
-
- if (titleOriginal) {
- const shikimoriResponse = await axios.get('https://shikimori.one/api/animes', {
- params: {
- search: encodeURIComponent(titleOriginal),
- limit: 1,
- },
- headers: {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
- },
- timeout: 5000,
- });
-
- const shikimoriAnime = shikimoriResponse.data[0];
- if (shikimoriAnime) {
- shikimoriScore = shikimoriAnime.score || 'N/A';
-
- // Получаем персонажей
- const rolesResponse = await axios.get(`https://shikimori.one/api/animes/${shikimoriAnime.id}/roles`, {
- headers: {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
- },
- timeout: 5000,
- });
-
- mainCharacters = rolesResponse.data
- .filter(role => role.roles.includes('Main'))
- .map(role => role.character)
- .filter(char => char && char.name && char.url)
- .slice(0, 3)
- .map(char => char.name); // Берем только имена
- }
- }
-
- // Формируем note
- if (shikimoriScore !== 'N/A' || mainCharacters.length > 0) {
- noteContent += `Оценки из Shikimori: ${shikimoriScore}
`;
- }
-
- if (mainCharacters.length > 0) {
- noteContent += `Главные персонажи: ${mainCharacters.join(', ')}
`;
- }
-
- // Применяем note
- releaseData.release.note = noteContent || '';
-
return releaseData;
- } catch (error) {
- // Обработка ошибки с более точным выводом
+ } catch {
return {
code: 2,
release: null,
- error: error.message, // Для отладки (можно убрать)
};
}
}