Update release.ts

This commit is contained in:
2025-05-21 18:17:42 +05:00
committed by GitHub
parent 052b1c7295
commit cde8d73713

View File

@@ -5,6 +5,7 @@ const baseHeaders = {
"Accept": "application/json", "Accept": "application/json",
}; };
// Получение информации с Shikimori
async function getShikimoriData(search, year) { async function getShikimoriData(search, year) {
if (!search) { if (!search) {
return { score: "N/A", characters: [] }; 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 = "") { async function getReleaseFromAnixart(releaseId, token = "") {
const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ""}`; const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ""}`;
@@ -60,14 +81,22 @@ async function getReleaseFromAnixart(releaseId, token = "") {
try { try {
const shikiData = await getShikimoriData(title, year); const shikiData = await getShikimoriData(title, year);
const score = shikiData.score || "N/A"; const shikiScore = shikiData.score || "N/A";
const characters = shikiData.characters.length const characters = shikiData.characters.length
? shikiData.characters.map((c) => `<a href="${c.url}">${c.name}</a>`).join(", ") ? shikiData.characters.map((c) => `<a href="${c.url}">${c.name}</a>`).join(", ")
: "N/A"; : "N/A";
noteExtra = `<b>Рейтинг Shikimori:</b> ${score}★<br><b>Главные персонажи:</b> ${characters}<br>`; const malScore = await getMALScore(title);
noteExtra =
`<b>Рейтинг Shikimori:</b> ${shikiScore}<br>` +
`<b>Рейтинг MyAnimeList:</b> ${malScore}<br>` +
`<b>Главные персонажи:</b> ${characters}<br>`;
} catch { } catch {
noteExtra = `<b>Рейтинг Shikimori:</b> N/A<br><b>Главные персонажи:</b> N/A<br>`; noteExtra =
`<b>Рейтинг Shikimori:</b> N/A<br>` +
`<b>Рейтинг MyAnimeList:</b> N/A<br>` +
`<b>Главные персонажи:</b> N/A<br>`;
} }
const originalNote = release.note?.trim(); const originalNote = release.note?.trim();
@@ -84,12 +113,13 @@ async function getReleaseFromAnixart(releaseId, token = "") {
} }
} }
// Серверный эндпоинт
serve(async (req) => { serve(async (req) => {
const url = new URL(req.url); const url = new URL(req.url);
const path = url.pathname; const path = url.pathname;
const token = url.searchParams.get("token"); const token = url.searchParams.get("token");
// Эндпоинт: /api/release/{releaseId} // /api/release/{releaseId}
const releaseMatch = path.match(/^\/api\/release\/([^\/]+)/); const releaseMatch = path.match(/^\/api\/release\/([^\/]+)/);
if (releaseMatch) { if (releaseMatch) {
const releaseId = releaseMatch[1]; const releaseId = releaseMatch[1];