From 5bd1f80132b46f8edaace94a63a39b7aa731c473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=BC=E3=83=BC=E3=83=AC?= Date: Mon, 12 May 2025 14:28:25 +0500 Subject: [PATCH] Update release.js --- api/v1/src/release.js | 82 ++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/api/v1/src/release.js b/api/v1/src/release.js index fc64256..b39ead6 100644 --- a/api/v1/src/release.js +++ b/api/v1/src/release.js @@ -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 `Оценки из Shikimori: N/A
Главные персонажи: N/A
`; - - 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 => - `${c.character.russian || c.character.name}` - ).join(', ') || 'N/A'; - - return `Оценки из Shikimori: ${anime.score || 'N/A'}★
Главные персонажи: ${characters}
`; - } catch (e) { - console.error('Shikimori API error:', e.message); - return `Оценки из Shikimori: N/A
Главные персонажи: N/A
`; - } -} - -// Получить релиз с 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 ? `Примечание от Anixart:
${release.note}
` : ''; + 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) => `${char.character.russian}`) + .join(', '); + characters = mainCharacters || 'N/A'; + } + + noteExtra = `Оценки из Shikimori: ${score}
Главные персонажи: ${characters}
`; + } catch (err) { + noteExtra = `Оценки из Shikimori: N/A
Главные персонажи: N/A
`; + } + + // Объединяем с оригинальным note от Anixart + const originalNote = release.note?.trim(); + let finalNote = noteExtra; + if (originalNote) { + finalNote += `
Примечание от Anixart:
${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 }; } }