Files
anixart-extension/api/v1/index.js
2025-05-08 20:54:41 +05:00

104 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const axios = require('axios');
// Функция для запроса к Anixart API с поддержкой releaseId, typeId и sourceId
async function getEpisodeFromAnixart(releaseId, token = '', typeId = '', sourceId = '') {
let url = `https://api.anixart.tv/episode/${releaseId}`;
// Если передан typeId, добавляем его в URL
if (typeId) {
url += `/${typeId}`;
}
// Если передан sourceId, добавляем его в URL
if (sourceId) {
url += `/${sourceId}`;
}
// Если передан токен, добавляем его как query параметр
if (token) {
url += `?token=${token}`;
}
try {
const response = await axios.get(url);
const data = response.data;
// Проверяем структуру данных и, если что-то отсутствует, возвращаем кастомный ответ
if (data.code === 0 && !data.types) {
// Если нет данных о типах, обращаемся к Seele API
return await getEpisodeFromSeele(releaseId, token);
}
// Если данные по типам или источникам есть, возвращаем их
return data;
} catch (error) {
console.error("Ошибка при запросе к Anixart API:", error.message);
// Если ошибка 404, то пробуем получить данные с Seele API
if (error.response && error.response.status === 404) {
return await getEpisodeFromSeele(releaseId, token);
}
// В случае других ошибок
throw new Error("Ошибка при получении данных из Anixart API");
}
}
// Функция для запроса к Seele API
async function getEpisodeFromSeele(releaseId, token = '') {
const url = `https://cloud.seele.su/episode/${releaseId}.json${token ? `?token=${token}` : ''}`;
try {
const response = await axios.get(url);
const data = response.data;
// Если нет данных по типам, возвращаем кастомный ответ
if (!data.types || data.types.length === 0) {
return getCustomNotFoundResponse();
}
// Возвращаем данные
return data;
} catch (error) {
if (error.response && error.response.status === 404) {
return getCustomNotFoundResponse();
}
console.error("Ошибка при запросе к Seele API:", error.message);
throw new Error("Ошибка при получении данных из Seele API");
}
}
// Функция для создания кастомного JSON-ответа
function getCustomNotFoundResponse() {
return {
"code": 0,
"types": [
{
"@id": 1,
"id": 1,
"name": "К сожалению, это аниме недоступно!",
"icon": "https://cloud.seele.su/images/seele.jpg",
"workers": "Это аниме полностью удалено с сервера anixart, либо его там не было изначально.",
"is_sub": false,
"episodes_count": 0,
"view_count": 0,
"pinned": false
},
{
"@id": 2,
"id": 2,
"name": "Не забудьте подписаться на наш Telegram-канал 😊",
"icon": "https://cloud.seele.su/images/seele.jpg",
"workers": "Тгк: @seele_channel",
"is_sub": false,
"episodes_count": 0,
"view_count": 0,
"pinned": false
}
]
};
}
module.exports = { getEpisodeFromAnixart };