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 };