Update release.js
This commit is contained in:
@@ -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 += `<b>Примечание от Anixart:</b><br>${originalNote}<br>`;
|
||||
// Применяем кастомный 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 += `<b>Оценки из Shikimori:</b> ${shikimoriScore}<br>`;
|
||||
}
|
||||
|
||||
if (mainCharacters.length > 0) {
|
||||
noteContent += `<b>Главные персонажи:</b> ${mainCharacters.join(', ')}<br>`;
|
||||
}
|
||||
|
||||
// Применяем note
|
||||
releaseData.release.note = noteContent || '';
|
||||
|
||||
return releaseData;
|
||||
} catch (error) {
|
||||
// Обработка ошибки с более точным выводом
|
||||
} catch {
|
||||
return {
|
||||
code: 2,
|
||||
release: null,
|
||||
error: error.message, // Для отладки (можно убрать)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user