Update release.js
This commit is contained in:
@@ -1,86 +1,47 @@
|
|||||||
const axios = require('axios');
|
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 {
|
try {
|
||||||
// Запрос к API Anixart с увеличенным таймаутом
|
const response = await axios.get(url);
|
||||||
const response = await axios.get(url, {
|
|
||||||
timeout: 10000, // Таймаут 10 секунд
|
|
||||||
});
|
|
||||||
const releaseData = response.data;
|
const releaseData = response.data;
|
||||||
|
|
||||||
if (!releaseData || !releaseData.release) {
|
if (!releaseData.release) {
|
||||||
releaseData = { code: 0, release: {} }; // Инициализируем, если данных нет
|
releaseData.release = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Извлекаем оригинальное примечание и название
|
// Применяем кастомный note, если он есть
|
||||||
const originalNote = releaseData.release.note || '';
|
const noteEntry = cachedNotes.find(entry => entry.id === Number(releaseId));
|
||||||
const titleOriginal = releaseData.release.title_original || '';
|
if (noteEntry) {
|
||||||
|
releaseData.release.note = noteEntry.note;
|
||||||
// Инициализируем note
|
|
||||||
let noteContent = '';
|
|
||||||
|
|
||||||
if (originalNote) {
|
|
||||||
noteContent += `<b>Примечание от Anixart:</b><br>${originalNote}<br>`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Поиск аниме в 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;
|
return releaseData;
|
||||||
} catch (error) {
|
} catch {
|
||||||
// Обработка ошибки с более точным выводом
|
|
||||||
return {
|
return {
|
||||||
code: 2,
|
code: 2,
|
||||||
release: null,
|
release: null,
|
||||||
error: error.message, // Для отладки (можно убрать)
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user