From 99df7234d996ee791f43141743e5c2e8657f5f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=BC=E3=83=BC=E3=83=AC?= Date: Thu, 8 May 2025 20:55:53 +0500 Subject: [PATCH] Update index.js --- api/v1/index.js | 186 ++++++++++++++++++++++++------------------------ 1 file changed, 94 insertions(+), 92 deletions(-) diff --git a/api/v1/index.js b/api/v1/index.js index ffcae62..b9d6a65 100644 --- a/api/v1/index.js +++ b/api/v1/index.js @@ -1,103 +1,105 @@ -const axios = require('axios'); +const express = require('express'); +// Новый методы +const getVerifiedUsers = require('./src/is_verified'); +const getRolesUsers = require('./src/is_roles'); +const { getProfileFromAnixart } = require('./src/profile'); +const { getEpisodeFromAnixart } = require('./src/episode'); +const getToggles = require('./src/toggles'); -// Функция для запроса к Anixart API с поддержкой releaseId, typeId и sourceId -async function getEpisodeFromAnixart(releaseId, token = '', typeId = '', sourceId = '') { - let url = `https://api.anixart.tv/episode/${releaseId}`; +// Старый методы +const { getOldEpisodeFromAnixart } = require('./src/old/episode-old-v1'); +const configDataOld = require('./src/old/toggles-old-v1'); - // Если передан typeId, добавляем его в URL - if (typeId) { - url += `/${typeId}`; - } +const app = express(); +const PORT = 3000; - // Если передан sourceId, добавляем его в URL - if (sourceId) { - url += `/${sourceId}`; - } - - // Если передан токен, добавляем его как query параметр - if (token) { - url += `?token=${token}`; - } +// Новый эндпоинты Открываем +// Эндпоинт для получения Verified +app.get('/api/is_roles', (req, res) => { 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"); + const data = getRolesUsers(); + res.status(200).json(data); + } catch { + res.status(200).json([]); } -} - -// Функция для запроса к Seele API -async function getEpisodeFromSeele(releaseId, token = '') { - const url = `https://cloud.seele.su/episode/${releaseId}.json${token ? `?token=${token}` : ''}`; +}); +// Эндпоинт для получения Verified +app.get('/api/is_verified', (req, res) => { 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"); + const data = getVerifiedUsers(); + res.status(200).json(data); + } catch { + res.status(200).json([]); } -} +}); -// Функция для создания кастомного 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 - } - ] - }; -} +// Эндпоинт для получения профиля +app.get('/api/profile/:profileId', async (req, res) => { + const { profileId } = req.params; + const { token } = req.query; + try { + const data = await getProfileFromAnixart(profileId, token); + res.json(data); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); -module.exports = { getEpisodeFromAnixart }; +// Эндпоинт для получения информации об эпизоде (Новый эндпоинт) +app.get('/api/episode/:releaseId', async (req, res) => { + const { releaseId } = req.params; + const { token } = req.query; // Извлекаем token из query-параметров + try { + const data = await getEpisodeFromAnixart(releaseId, token); + res.json(data); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Эндпоинт для конфигурационного JSON из toggles.js +app.get('/api/config/toggles', async (req, res) => { + try { + const toggles = await getToggles(); + res.json(toggles); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Новый эндпоинты Закрываем + +// ------------------------- + +// Старый эндпоинты Открываем + +// Эндпоинт для получения информации об эпизоде (Старый эндпоинт) +app.get('/api/extension/episode/:releaseId', async (req, res) => { + const { releaseId } = req.params; + try { + const data = await getOldEpisodeFromAnixart(releaseId); + res.json(data); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Эндпоинт для конфигурационного JSON из toggles-old-1.js (Старый Toggles) +app.get('/api/extension/config/toggles', (req, res) => { + res.json(configDataOld); +}); + +// Старый эндпоинты Закрываем + +// -------------------------- + +// Обработчик для всех неизвестных маршрутов +app.use((req, res) => { + res.status(404).json({ error: "Страница не существует!", status: 404 }); +}); + +app.listen(PORT, () => { + console.log(`Сервер запущен на http://localhost:${PORT}`); +});