From cde8d73713ec3725c70b24e01d2f3b3fb1cb38e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=BC=E3=83=BC=E3=83=AC?= Date: Wed, 21 May 2025 18:17:42 +0500 Subject: [PATCH] Update release.ts --- api/v1/src/release.ts | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/api/v1/src/release.ts b/api/v1/src/release.ts index 6a8c6d0..9ecab4f 100644 --- a/api/v1/src/release.ts +++ b/api/v1/src/release.ts @@ -5,6 +5,7 @@ const baseHeaders = { "Accept": "application/json", }; +// Получение информации с Shikimori async function getShikimoriData(search, year) { if (!search) { return { score: "N/A", characters: [] }; @@ -42,6 +43,26 @@ async function getShikimoriData(search, year) { } } +// Получение рейтинга с MyAnimeList (через Jikan) +async function getMALScore(title) { + const url = `https://api.jikan.moe/v4/anime?q=${encodeURIComponent(title)}&limit=1`; + + try { + const response = await fetch(url); + const data = await response.json(); + const anime = data?.data?.[0]; + + if (!anime || !anime.score) { + return "N/A"; + } + + return `${anime.score}★`; + } catch { + return "N/A"; + } +} + +// Получение релиза и формирование итоговой заметки async function getReleaseFromAnixart(releaseId, token = "") { const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ""}`; @@ -60,14 +81,22 @@ async function getReleaseFromAnixart(releaseId, token = "") { try { const shikiData = await getShikimoriData(title, year); - const score = shikiData.score || "N/A"; + const shikiScore = shikiData.score || "N/A"; const characters = shikiData.characters.length ? shikiData.characters.map((c) => `${c.name}`).join(", ") : "N/A"; - noteExtra = `Рейтинг Shikimori: ${score}★
Главные персонажи: ${characters}
`; + const malScore = await getMALScore(title); + + noteExtra = + `Рейтинг Shikimori: ${shikiScore}
` + + `Рейтинг MyAnimeList: ${malScore}
` + + `Главные персонажи: ${characters}
`; } catch { - noteExtra = `Рейтинг Shikimori: N/A
Главные персонажи: N/A
`; + noteExtra = + `Рейтинг Shikimori: N/A
` + + `Рейтинг MyAnimeList: N/A
` + + `Главные персонажи: N/A
`; } const originalNote = release.note?.trim(); @@ -84,12 +113,13 @@ async function getReleaseFromAnixart(releaseId, token = "") { } } +// Серверный эндпоинт serve(async (req) => { const url = new URL(req.url); const path = url.pathname; const token = url.searchParams.get("token"); - // Эндпоинт: /api/release/{releaseId} + // /api/release/{releaseId} const releaseMatch = path.match(/^\/api\/release\/([^\/]+)/); if (releaseMatch) { const releaseId = releaseMatch[1];