60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
const axios = require('axios');
|
||
|
||
async function getReleaseFromAnixart(releaseId, token = '') {
|
||
const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ''}`;
|
||
|
||
try {
|
||
const response = await axios.get(url);
|
||
const release = response.data?.release;
|
||
|
||
if (!release) {
|
||
return { code: 2, release: null };
|
||
}
|
||
|
||
const title = release.title_original || release.title_ru || '';
|
||
const year = release.year || '';
|
||
let noteExtra = '';
|
||
|
||
// Получаем данные с Deno-прокси
|
||
try {
|
||
const proxyUrl = `https://shikimori-proxy.deno.dev/shiki?search=${encodeURIComponent(title)}&year=${year}`;
|
||
const shikiRes = await axios.get(proxyUrl);
|
||
const anime = shikiRes.data?.[0];
|
||
|
||
let score = anime?.score || 'N/A';
|
||
let characters = 'N/A';
|
||
|
||
// Получение ролей персонажей
|
||
if (anime?.id) {
|
||
const rolesUrl = `https://shikimori.one/api/animes/${anime.id}/roles`;
|
||
const rolesRes = await axios.get(rolesUrl);
|
||
const mainCharacters = rolesRes.data
|
||
.filter((char) => char.roles.includes('Main'))
|
||
.slice(0, 5)
|
||
.map((char) => `<a href="https://shikimori.one${char.character.url}">${char.character.russian}</a>`)
|
||
.join(', ');
|
||
characters = mainCharacters || 'N/A';
|
||
}
|
||
|
||
noteExtra = `<b>Оценки из Shikimori:</b> ${score}<br><b>Главные персонажи:</b> ${characters}<br>`;
|
||
} catch (err) {
|
||
noteExtra = `<b>Оценки из Shikimori:</b> N/A<br><b>Главные персонажи:</b> N/A`;
|
||
}
|
||
|
||
// Объединяем с оригинальным note от Anixart
|
||
const originalNote = release.note?.trim();
|
||
let finalNote = noteExtra;
|
||
if (originalNote) {
|
||
finalNote += `<br><b>Примечание от Anixart:</b><br>${originalNote}`;
|
||
}
|
||
|
||
release.note = finalNote;
|
||
|
||
return { code: 0, release };
|
||
} catch {
|
||
return { code: 2, release: null };
|
||
}
|
||
}
|
||
|
||
module.exports = { getReleaseFromAnixart };
|