diff --git a/api/v1/src/release.js b/api/v1/src/release.js
index 34c24ed..bd6cf8e 100644
--- a/api/v1/src/release.js
+++ b/api/v1/src/release.js
@@ -1,48 +1,54 @@
const axios = require('axios');
-// Кэш кастомных заметок
-let cachedNotes = [];
+// Получить данные из Shikimori
+async function getShikimoriData(title) {
+ const searchUrl = `https://shikimori.one/api/animes?search=${encodeURIComponent(title)}&limit=1`;
+ const headers = {
+ 'User-Agent': 'Mozilla/5.0 FakeAgent',
+ 'Accept': 'application/json'
+ };
-// Функция для загрузки заметок из внешнего 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 = [];
+ const searchResponse = await axios.get(searchUrl, { headers });
+ const anime = searchResponse.data[0];
+ if (!anime) return null;
+
+ const rolesUrl = `https://shikimori.one/api/animes/${anime.id}/roles`;
+ const rolesResponse = await axios.get(rolesUrl, { headers });
+
+ const characters = rolesResponse.data
+ .filter(c => c.roles.includes('Main'))
+ .slice(0, 3)
+ .map(c =>
+ `${c.character.russian || c.character.name}`
+ ).join(', ');
+
+ return `Оценки из Shikimori: ${anime.score || 'N/A'}★
Главные персонажи: ${characters}
`;
+ } catch (e) {
+ console.error('Shikimori API error:', e.message);
+ return null;
}
}
-// Загружаем заметки сразу при запуске
-fetchNotes();
-
-// Обновляем заметки каждые 10 минут
-setInterval(fetchNotes, 10 * 60 * 1000);
-
-// Основная функция-парсер
+// Получить релиз с Anixart и дополнить данными из Shikimori
async function getReleaseFromAnixart(releaseId, token = '') {
const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ''}`;
try {
const response = await axios.get(url);
- const releaseData = response.data;
+ const release = response.data.release;
- if (!releaseData.release) {
- releaseData.release = {};
- }
+ if (!release) return { code: 1, release: null };
- // Применяем кастомный note, если он есть
- const noteEntry = cachedNotes.find(entry => entry.id === Number(releaseId));
- if (noteEntry) {
- releaseData.release.note = noteEntry.note;
- }
+ const title = release.title_original || release.title_ru || '';
+ const shikiNote = await getShikimoriData(title);
+ const anixNote = release.note ? `Примечание от Anixart:
${release.note}
` : '';
- return releaseData;
- } catch {
- return {
- code: 2,
- release: null,
- };
+ release.note = `${anixNote}${shikiNote || ''}`;
+ return { code: 0, release };
+ } catch (e) {
+ console.error('Anixart API error:', e.message);
+ return { code: 2, release: null };
}
}