diff --git a/api/v1/src/release.ts b/api/v1/src/release.ts
index e63ef95..6a42920 100644
--- a/api/v1/src/release.ts
+++ b/api/v1/src/release.ts
@@ -5,7 +5,7 @@ const baseHeaders = {
"Accept": "application/json",
};
-// Взвешенное среднее из rates_scores_stats
+// Функция для расчёта рейтинга из rates_scores_stats
function calculateWeightedScore(stats) {
if (!stats?.length) return null;
@@ -22,7 +22,7 @@ function calculateWeightedScore(stats) {
return count ? (total / count).toFixed(2) : null;
}
-// Получение данных с Shikimori
+// Получаем данные Shikimori
async function getShikimoriData(search, year) {
if (!search) {
return { weightedScore: "N/A", characters: [] };
@@ -39,13 +39,13 @@ async function getShikimoriData(search, year) {
return { weightedScore: "N/A", characters: [] };
}
- // Взвешенный рейтинг из rates_scores_stats
+ // Получаем рейтинг из rates_scores_stats
const statsUrl = `https://shikimori.one/api/animes/${anime.id}`;
const statsRes = await fetch(statsUrl, { headers: baseHeaders });
const statsData = await statsRes.json();
const weightedScore = calculateWeightedScore(statsData.rates_scores_stats) || "N/A";
- // Главные персонажи
+ // Получаем главных персонажей
const rolesUrl = `https://shikimori.one/api/animes/${anime.id}/roles`;
const rolesRes = await fetch(rolesUrl, { headers: baseHeaders });
const roles = await rolesRes.json();
@@ -67,7 +67,7 @@ async function getShikimoriData(search, year) {
}
}
-// Рейтинг с MyAnimeList через Jikan
+// Получаем рейтинг MyAnimeList через Jikan
async function getMALScore(title) {
const url = `https://api.jikan.moe/v4/anime?q=${encodeURIComponent(title)}&limit=1`;
@@ -86,7 +86,7 @@ async function getMALScore(title) {
}
}
-// Получение и сборка данных о релизе
+// Основная функция получения релиза и формирования примечания
async function getReleaseFromAnixart(releaseId, token = "") {
const url = `https://api.anixart.tv/release/${releaseId}${token ? `?token=${token}` : ""}`;
@@ -101,49 +101,46 @@ async function getReleaseFromAnixart(releaseId, token = "") {
const title = release.title_original || release.title_ru || "";
const year = release.year || "";
- let noteExtra = "";
try {
const shikiData = await getShikimoriData(title, year);
- const shikiWeighted = shikiData.weightedScore || "N/A";
+ const shikiScore = shikiData.weightedScore !== "N/A" ? `Рейтинг Shikimori: ${shikiData.weightedScore}★` : "";
+ const malScoreRaw = await getMALScore(title);
+ const malScore = malScoreRaw !== "N/A" ? `Рейтинг MyAnimeList: ${malScoreRaw}` : "";
const characters = shikiData.characters.length
- ? shikiData.characters.map((c) => `${c.name}`).join(", ")
- : "N/A";
+ ? `Главные персонажи: ` + shikiData.characters.map(c => `${c.name}`).join(", ")
+ : "";
- const malScore = await getMALScore(title);
+ // Собираем рейтинг и персонажей, фильтруя пустые строки
+ const ratingParts = [shikiScore, malScore].filter(Boolean).join("
");
+ const charsPart = characters ? characters : "";
+
+ // Примечание от Anixart (без лишних br если пустое)
+ const originalNote = release.note?.trim();
+
+ let finalNote = "";
+ if (ratingParts) finalNote += ratingParts;
+ if (charsPart) finalNote += (finalNote ? "
" : "") + charsPart;
+ if (originalNote) finalNote += (finalNote ? "
" : "") + `Примечание от Anixart:
${originalNote}`;
+
+ release.note = finalNote || null;
- noteExtra =
- `Shikimori (взвешенный): ${shikiWeighted}
` +
- `MyAnimeList: ${malScore}
` +
- `Главные персонажи: ${characters}
`;
} catch {
- noteExtra =
- `Shikimori (взвешенный): N/A
` +
- `MyAnimeList: N/A
` +
- `Главные персонажи: N/A
`;
+ release.note = null;
}
- const originalNote = release.note?.trim();
- let finalNote = noteExtra;
- if (originalNote) {
- finalNote += `
Примечание от Anixart:
${originalNote}`;
- }
-
- release.note = finalNote;
-
return { code: 0, release };
} catch {
return { code: 2, release: null };
}
}
-// Серверный роутинг
+// HTTP сервер
serve(async (req) => {
const url = new URL(req.url);
const path = url.pathname;
const token = url.searchParams.get("token");
- // /api/release/{releaseId}
const releaseMatch = path.match(/^\/api\/release\/([^\/]+)/);
if (releaseMatch) {
const releaseId = releaseMatch[1];