Update release.js
This commit is contained in:
@@ -1,55 +1,57 @@
|
||||
const axios = require('axios');
|
||||
|
||||
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
|
||||
|
||||
// Получить данные из Shikimori
|
||||
async function getShikimoriData(title) {
|
||||
const searchUrl = `https://shikimori.one/api/animes?search=${encodeURIComponent(title)}&limit=1`;
|
||||
const headers = {
|
||||
'User-Agent': USER_AGENT,
|
||||
'Accept': 'application/json'
|
||||
};
|
||||
|
||||
try {
|
||||
const searchResponse = await axios.get(searchUrl, { headers });
|
||||
const anime = searchResponse.data[0];
|
||||
if (!anime) return `<b>Оценки из Shikimori:</b> N/A<br><b>Главные персонажи:</b> N/A<br>`;
|
||||
|
||||
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(', ') || 'N/A';
|
||||
|
||||
return `<b>Оценки из Shikimori:</b> ${anime.score || 'N/A'}★<br><b>Главные персонажи:</b> ${characters}<br>`;
|
||||
} catch (e) {
|
||||
console.error('Shikimori API error:', e.message);
|
||||
return `<b>Оценки из Shikimori:</b> N/A<br><b>Главные персонажи:</b> N/A<br>`;
|
||||
}
|
||||
}
|
||||
|
||||
// Получить релиз с Anixart и дополнить note
|
||||
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;
|
||||
const release = response.data?.release;
|
||||
|
||||
if (!release) return { code: 1, release: null };
|
||||
if (!release) {
|
||||
return { code: 2, release: null };
|
||||
}
|
||||
|
||||
const title = release.title_original || release.title_ru || '';
|
||||
const shikiNote = await getShikimoriData(title);
|
||||
const anixNote = release.note ? `<b>Примечание от Anixart:</b><br>${release.note}<br>` : '';
|
||||
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<br>`;
|
||||
}
|
||||
|
||||
// Объединяем с оригинальным note от Anixart
|
||||
const originalNote = release.note?.trim();
|
||||
let finalNote = noteExtra;
|
||||
if (originalNote) {
|
||||
finalNote += `<br><b>Примечание от Anixart:</b><br>${originalNote}`;
|
||||
}
|
||||
|
||||
release.note = finalNote;
|
||||
|
||||
release.note = `${anixNote}${shikiNote}`;
|
||||
return { code: 0, release };
|
||||
} catch (e) {
|
||||
console.error('Anixart API error:', e.message);
|
||||
} catch {
|
||||
return { code: 2, release: null };
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user