From d427fe47fdb3a738b0624e3b22dfc8fee3bdb3a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=BC=E3=83=BC=E3=83=AC?= Date: Tue, 27 May 2025 19:45:43 +0500 Subject: [PATCH] Update episode.js --- api/v1/src/episode.js | 116 +++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 76 deletions(-) diff --git a/api/v1/src/episode.js b/api/v1/src/episode.js index 2313fd7..beb3192 100644 --- a/api/v1/src/episode.js +++ b/api/v1/src/episode.js @@ -1,40 +1,28 @@ const axios = require('axios'); -const fs = require('fs'); -const loginList = require('./login.json'); -// Получить логин по токену -async function getLoginFromToken(token) { - try { - const response = await axios.get(`https://api.anixart.tv/profile/preference/login/info?token=${token}`); - return response.data.login; - } catch (error) { - console.error("Ошибка при получении логина по токену:", error.message); - return null; - } -} - -// Главная функция получения эпизода +// Функция для запроса к Anixart API async function getEpisodeFromAnixart(releaseId, token = '') { - const login = token ? await getLoginFromToken(token) : null; - const allowedLogins = loginList.map(u => u.login); - - if (!login || !allowedLogins.includes(login)) { - return getAccessDeniedResponse(); - } - const url = `https://api.anixart.tv/episode/${releaseId}${token ? `?token=${token}` : ''}`; try { - const { data } = await axios.get(url); + const response = await axios.get(url); + const data = response.data; - data.types = data.types.map(type => ({ + // Изменение структуры поля `workers` + data.types = data.types.map((type) => ({ ...type, + // id: 0, workers: "источник: seele.su", + // name: "Недоступно (⁠≧⁠▽⁠≦⁠)", + // icon: null, + // view_count: null, + // pinned: false, + // episodes_count: null, })); + // Если список `types` пуст, обращаемся к Seele API if (data.code === 1 || data.types.length === 0) { return await getEpisodeFromSeele(releaseId, token); } - return data; } catch (error) { console.error("Ошибка при запросе к Anixart API:", error.message); @@ -42,53 +30,28 @@ async function getEpisodeFromAnixart(releaseId, token = '') { } } -function getAccessDeniedResponse() { - return { - code: 0, - types: [ - { - "@id": 1, - id: 1, - name: "Для просмотра требуется Anixart EX", - icon: "https://cloud.seele.su/images/seele.jpg", - workers: "Купить доступ: @seele_off", - 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 - } - ] - }; -} - +// Функция для запроса к Seele API async function getEpisodeFromSeele(releaseId, token = '') { const url = `https://cloud.seele.su/episode/${releaseId}.json${token ? `?token=${token}` : ''}`; try { - const { data } = await axios.get(url); + const response = await axios.get(url); + const data = response.data; + // Проверяем наличие `types`, если пусто - возвращаем кастомный ответ if (!data.types || data.types.length === 0) { return getCustomNotFoundResponse(); } - data.types = data.types.map(type => ({ + // Изменение структуры поля `workers` + data.types = data.types.map((type) => ({ ...type, workers: "источник: seele.su", })); return data; } catch (error) { - if (error.response?.status === 404) { + // Если ошибка - 404, возвращаем кастомный ответ + if (error.response && error.response.status === 404) { return getCustomNotFoundResponse(); } console.error("Ошибка при запросе к Seele API:", error.message); @@ -96,31 +59,32 @@ async function getEpisodeFromSeele(releaseId, token = '') { } } +// Функция для создания кастомного JSON-ответа function getCustomNotFoundResponse() { - return { - code: 0, - types: [ + 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": 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 + "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 } ] };