diff --git a/api/v1/src/release.js b/api/v1/src/release.js
index 9f1bf5a..e19433e 100644
--- a/api/v1/src/release.js
+++ b/api/v1/src/release.js
@@ -1,98 +1,10 @@
const axios = require('axios');
-// Кэш кастомных заметок
-let cachedNotes = [];
-
-// Функция для загрузки заметок из внешнего API (Anixart)
-async function fetchNotes() {
- try {
- const response = await axios.get('https://anixart.seele.su/api/release_note', { timeout: 5000 });
- cachedNotes = Array.isArray(response.data) && response.data.every(item => typeof item.id === 'number' && typeof item.note === 'string')
- ? response.data
- : [];
- } catch (error) {
- cachedNotes = [];
- }
-}
-
-// Загружаем заметки сразу при запуске
-fetchNotes();
-
-// Обновляем заметки каждые 10 минут
-async function scheduleFetchNotes() {
- await fetchNotes();
- setTimeout(scheduleFetchNotes, 10 * 60 * 1000);
-}
-scheduleFetchNotes();
-
-// Функция для поиска аниме в Shikimori по названию
-async function searchShikimoriAnime(titleOriginal, titleRu, year) {
- try {
- let searchQuery = titleOriginal || titleRu;
- if (!searchQuery) return null;
-
- const response = await axios.get('https://shikimori.one/api/animes', {
- params: {
- search: encodeURIComponent(searchQuery),
- limit: 1,
- year: year || undefined,
- },
- 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,
- });
-
- let anime = response.data[0] || null;
-
- if (!anime && titleRu && titleRu !== titleOriginal) {
- const responseRu = await axios.get('https://shikimori.one/api/animes', {
- params: {
- search: encodeURIComponent(titleRu),
- limit: 1,
- year: year || undefined,
- },
- 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,
- });
- anime = responseRu.data[0] || null;
- }
-
- return anime;
- } catch (error) {
- return null;
- }
-}
-
-// Функция для получения данных о персонажах с Shikimori
-async function fetchShikimoriCharacters(animeId) {
- try {
- const response = await axios.get(`https://shikimori.one/api/animes/${animeId}/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,
- });
-
- const characters = response.data
- .filter(role => role.roles.includes('Main')) // Фильтр по "Main"
- .map(role => role.character)
- .filter(char => char && char.name && char.url)
- .slice(0, 3);
-
- return characters;
- } catch (error) {
- return [];
- }
-}
-
-// Основная функция-парсер
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: 5000 });
const releaseData = response.data;
@@ -100,44 +12,65 @@ async function getReleaseFromAnixart(releaseId, token = '') {
releaseData.release = {};
}
- // Находим оригинальный note от Anixart
- const noteEntry = cachedNotes.find(entry => entry.id === Number(releaseId));
- const originalNote = noteEntry ? noteEntry.note : '';
-
- // Извлекаем данные для поиска
+ // Извлекаем оригинальное примечание и название
+ const originalNote = releaseData.release.note || '';
const titleOriginal = releaseData.release.title_original || '';
- const titleRu = releaseData.release.title_ru || '';
- const year = releaseData.release.year || '';
- // Ищем аниме в Shikimori
- const shikimoriAnime = await searchShikimoriAnime(titleOriginal, titleRu, year);
+ // Инициализируем note
+ let noteContent = '';
+
+ if (originalNote) {
+ noteContent += `Примечание от Anixart:
${originalNote}
`;
+ }
+
+ // Поиск аниме в Shikimori
let shikimoriScore = 'N/A';
- let characters = [];
+ let mainCharacters = [];
- if (shikimoriAnime) {
- shikimoriScore = shikimoriAnime.score || 'N/A';
- characters = await fetchShikimoriCharacters(shikimoriAnime.id);
- }
-
- // Формируем новый note
- let newNote = originalNote ? `Примечание от Anixart:
${originalNote}
` : '';
-
- // Добавляем оценку Shikimori
- if (shikimoriAnime && shikimoriScore !== 'N/A') {
- newNote += `${newNote ? '
' : ''}Оценка Shikimori: ${shikimoriScore}
`;
- }
-
- // Добавляем главных персонажей
- if (characters.length > 0) {
- newNote += `${newNote ? '
' : ''}Главные персонажи:
`;
- characters.forEach(char => {
- const fullUrl = `https://shikimori.one${char.url}`; // Делаем ссылку полной
- newNote += `${char.name}
`;
+ 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, если есть данные, иначе оставляем пустую строку
- releaseData.release.note = newNote || '';
+ // Формируем 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) {