Warning
Проект создан исключительно в ознакомительных целях. Автор осуждает и не поддерживает создание авторегов, ботов для накрутки лайков, спам-ботов и любых других инструментов, направленных на абуз или злоупотребление API Anixart.
Important
Новая версия AnixartJS содержит значительные изменения и не полностью совместима с версиями v0.x.
В версии v1.x была переработана структура проекта, изменён публичный API, способы вызова эндпоинтов, авторизации, конфигурации клиента и часть моделей данных.
Если ваш проект использует старую версию AnixartJS, обновление может потребовать изменений в существующем коде. Перед переходом рекомендуется изучить изменения в новой версии, проверить используемые методы и типы, а также заранее заложить время на миграцию и тестирование.
Не рекомендуется обновлять AnixartJS в существующем проекте без предварительной проверки совместимости.
AnixartJS — неофициальная TypeScript-библиотека для работы с API Anixart из Node.js.
Основной интерфейс библиотеки построен вокруг класса Anixart и набора типизированных групп эндпоинтов в client.endpoints.
Библиотека предоставляет доступ к релизам, профилям, каналам, статьям, коллекциям, ленте, уведомлениям, поиску, импорту и экспорту данных, а также другим возможностям API.
- типизированный интерфейс для API Anixart;
- модели ответов и enum'ы для кодов и параметров API;
- авторизация по логину и паролю;
- использование уже существующего токена;
- работа с релизами, профилями, каналами и статьями;
- работа с коллекциями, комментариями и закладками;
- поиск, лента, уведомления, импорт и экспорт;
- настройка таймаута и отмена запросов через
AbortSignal; - выбор версии API для отдельных запросов;
- управление обработкой ошибок Anixart;
ArticleBuilderдля формирования содержимого статей;- парсеры ссылок на поддерживаемые видеосервисы;
- CommonJS-сборка и декларации типов TypeScript.
npm install anixartjsconst { Anixart } = require("anixartjs");
const client = new Anixart({});
async function main() {
const { release } = await client.endpoints.release.get(
101,
true,
{ timeoutMs: 15_000 }
);
console.log(`Релиз: ${release.title_ru}`);
}
main().catch(console.error);import { Anixart } from "anixartjs";
const client = new Anixart({});
const { profile } = await client.endpoints.profile.get(
456,
{ timeoutMs: 15_000 }
);
console.log(`Пользователь: ${profile.login}`);Клиент создаётся с объектом параметров:
import { Anixart } from "anixartjs";
const client = new Anixart({});Можно сразу передать дополнительные настройки:
const client = new Anixart({
baseUrl: "https://api.anixsekai.com",
token: "your-token",
userAgent: "your-user-agent",
throwOnAnixartError: true
});| Параметр | Тип | Описание |
|---|---|---|
baseUrl |
string |
Базовый URL API. По умолчанию используется https://api.anixsekai.com. |
token |
string |
Токен для авторизованных запросов. |
userAgent |
string |
Пользовательский User-Agent для HTTP-запросов. |
throwOnAnixartError |
boolean |
Выбрасывать AnixartError при ошибках, возвращаемых API. По умолчанию true. |
Токен можно изменить после создания экземпляра:
client.setToken("your-token");Удалить токен:
client.setToken(undefined);Получить или изменить базовый URL:
console.log(client.getBaseUrl());
client.setBaseUrl("https://example.com");Также библиотека умеет получать актуальный список адресов API:
const endpoints = await Anixart.getEndpointUrls();
console.log(endpoints);Для входа по логину и паролю используется client.endpoints.auth.signIn().
После успешного входа токен можно получить из profileToken и установить в клиент через setToken():
import { Anixart } from "anixartjs";
const client = new Anixart({});
const result = await client.endpoints.auth.signIn(
{
login: "username",
password: "password"
},
{
timeoutMs: 15_000
}
);
const token = result.profileToken?.token;
if (!token) {
throw new Error("Сервер не вернул токен авторизации.");
}
client.setToken(token);
console.log(`Вход выполнен: ${result.profile.login}`);Если токен уже известен, его можно передать сразу:
const client = new Anixart({
token: "your-token"
});Important
Не сохраняйте логины, пароли и токены непосредственно в исходном коде. Для приложений и примеров лучше использовать переменные окружения или другое безопасное хранилище конфигурации.
Основная часть API доступна через client.endpoints.
Например:
client.endpoints.auth
client.endpoints.article
client.endpoints.channel
client.endpoints.collection
client.endpoints.feed
client.endpoints.notification
client.endpoints.profile
client.endpoints.release
client.endpoints.searchКроме них доступны специализированные группы для комментариев, друзей, закладок, истории, эпизодов, расписания, настроек профиля, импорта, экспорта и других частей API.
Получить релиз по ID
const { release } = await client.endpoints.release.get(
101,
true,
{ timeoutMs: 15_000 }
);
console.log(`ID: ${release.id}`);
console.log(`Название: ${release.title_ru}`);
console.log(`Рейтинг: ${release.rating}`);Получить случайный релиз
const { release } = await client.endpoints.release.random(
true,
{ timeoutMs: 15_000 }
);
console.log(`Случайный релиз: ${release.title_ru}`);Получить профиль пользователя
const { profile } = await client.endpoints.profile.get(
456,
{ timeoutMs: 15_000 }
);
console.log(`ID: ${profile.id}`);
console.log(`Пользователь: ${profile.login}`);Использовать токен
const client = new Anixart({
token: process.env.ANIXART_TOKEN
});Токен также можно установить позднее:
client.setToken(process.env.ANIXART_TOKEN);Установить таймаут запроса
const { profile } = await client.endpoints.profile.get(
456,
{
timeoutMs: 15_000
}
);Отменить запрос
const controller = new AbortController();
const request = client.endpoints.profile.get(
456,
{
signal: controller.signal,
timeoutMs: 15_000
}
);
controller.abort();
await request;Большинство методов принимают объект параметров запроса последним аргументом:
const options = {
timeoutMs: 15_000,
signal: controller.signal,
apiVersion: 2,
throwOnAnixartError: true
};| Параметр | Тип | Описание |
|---|---|---|
timeoutMs |
number |
Максимальное время выполнения запроса в миллисекундах. |
signal |
AbortSignal |
Сигнал для отмены запроса. |
apiVersion |
number |
Версия API для конкретного запроса. |
throwOnAnixartError |
boolean |
Управляет выбрасыванием ошибок Anixart для конкретного запроса. |
Не все версии API возвращают ответы одинаковой структуры, поэтому при использовании apiVersion учитывайте тип ответа конкретного эндпоинта.
AnixartJS экспортирует отдельные классы для ошибок API и HTTP:
import {
Anixart,
AnixartError,
HttpError
} from "anixartjs";
const client = new Anixart({});
try {
const { profile } = await client.endpoints.profile.get(
456,
{ timeoutMs: 15_000 }
);
console.log(profile.login);
} catch (error) {
if (error instanceof AnixartError) {
console.error(
`Ошибка Anixart: ${error.code} (${error.codeName})`
);
return;
}
if (error instanceof HttpError) {
console.error(`HTTP-ошибка: ${error.status}`);
return;
}
if (error instanceof Error && error.name === "AbortError") {
console.error("Запрос отменён.");
return;
}
if (error instanceof Error && error.name === "TimeoutError") {
console.error("Истёк таймаут запроса.");
return;
}
throw error;
}В библиотеку входит ArticleBuilder, предназначенный для формирования содержимого статей.
Подробный пример:
docs/examples/article-builder.md
Пример создания статьи:
docs/examples/create-article.md
AnixartJS также экспортирует парсеры ссылок для поддерживаемых источников видео.
Подробнее:
В директории examples находятся готовые запускаемые примеры:
signIn.js— авторизация и установка токена;searchReleases.js— поиск релизов;getProfile.js— получение профиля, таймаут и отмена запроса;getBookmarks.js— работа с закладками и пагинацией;createArticle.js— создание статьи;linkParser.js— работа с парсерами ссылок.
Подробности находятся в examples/README.md.
Расширенная документация находится в директории docs.
Основные разделы:
Документация построена на VitePress, а справочник API генерируется с помощью TypeDoc.
| Проект | Описание |
|---|---|
| AniDesk | Неофициальный десктоп-клиент Anixart. |
| AnixApp | Неофициальное приложение Anixart для ПК с функционалом совместного просмотра. |
Вклад в развитие AnixartJS приветствуется.
Вы можете:
- сообщить об ошибке через Issues;
- предложить улучшение;
- добавить или обновить эндпоинт;
- исправить типы или модели;
- улучшить документацию;
- добавить пример;
- отправить pull request.
Перед отправкой изменений рекомендуется проверить сборку и типы:
npm install
npm run build
npm run test:typecheckПроект распространяется под лицензией GPL-2.0.
Подробности находятся в файле LICENSE.
Если у вас есть вопросы, предложения или вы нашли проблему, откройте issue.