Update release.js

This commit is contained in:
2025-05-12 13:59:17 +05:00
committed by GitHub
parent c8c7582219
commit 9e98251ed0

View File

@@ -1,48 +1,54 @@
const axios = require('axios'); const axios = require('axios');
// Кэш кастомных заметок // Получить данные из Shikimori
let cachedNotes = []; 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 { try {
const response = await axios.get('https://anixart.seele.su/api/release_note'); const searchResponse = await axios.get(searchUrl, { headers });
cachedNotes = Array.isArray(response.data) ? response.data : []; const anime = searchResponse.data[0];
} catch { if (!anime) return null;
cachedNotes = [];
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 =>
`<a href="https://shikimori.one/characters/${c.character.id}">${c.character.russian || c.character.name}</a>`
).join(', ');
return `<b>Оценки из Shikimori:</b> ${anime.score || 'N/A'}★<br><b>Главные персонажи:</b> ${characters}<br>`;
} catch (e) {
console.error('Shikimori API error:', e.message);
return null;
} }
} }
// Загружаем заметки сразу при запуске // Получить релиз с Anixart и дополнить данными из Shikimori
fetchNotes();
// Обновляем заметки каждые 10 минут
setInterval(fetchNotes, 10 * 60 * 1000);
// Основная функция-парсер
async function getReleaseFromAnixart(releaseId, token = '') { async function getReleaseFromAnixart(releaseId, token = '') {
const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ''}`; const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ''}`;
try { try {
const response = await axios.get(url); const response = await axios.get(url);
const releaseData = response.data; const release = response.data.release;
if (!releaseData.release) { if (!release) return { code: 1, release: null };
releaseData.release = {};
}
// Применяем кастомный note, если он есть const title = release.title_original || release.title_ru || '';
const noteEntry = cachedNotes.find(entry => entry.id === Number(releaseId)); const shikiNote = await getShikimoriData(title);
if (noteEntry) { const anixNote = release.note ? `<b>Примечание от Anixart:</b><br>${release.note}<br>` : '';
releaseData.release.note = noteEntry.note;
}
return releaseData; release.note = `${anixNote}${shikiNote || ''}`;
} catch { return { code: 0, release };
return { } catch (e) {
code: 2, console.error('Anixart API error:', e.message);
release: null, return { code: 2, release: null };
};
} }
} }