🚀 Быстрый старт
Установка
npm install anilibertyjs
Минимальный пример
const { AniLibertyClient, isSuccess } = require('anilibertyjs');
// Создаем клиент
const client = new AniLibertyClient();
// Получаем последние обновления
async function getLatestAnime() {
const updates = await client.getUpdates({ limit: 5 });
if (isSuccess(updates)) {
updates.data.forEach(anime => {
console.log(`${anime.title.ru} - ${anime.episodes_released} эп.`);
});
}
}
getLatestAnime();
✨ Возможности
Авторизация
Поддержка логин/пароль, OTP и социальных сетей
Полный каталог
Доступ ко всему каталогу аниме с фильтрацией
Мощный поиск
Полнотекстовый поиск и автодополнение
Избранное
Управление избранными релизами
Коллекции
Создание и управление коллекциями
Расписание
Расписание выхода новых эпизодов
Торренты
Скачивание торрент-файлов
TypeScript
Полная поддержка TypeScript
📦 Установка
Через npm
npm install anilibertyjs
Через yarn
yarn add anilibertyjs
Требования
- Node.js >= 16.0.0
- npm или yarn
📖 Базовое использование
Создание клиента
const { AniLibertyClient } = require('anilibertyjs');
const client = new AniLibertyClient({
baseUrl: 'https://aniliberty.top/api/v1', // опционально
timeout: 30000, // опционально (мс)
headers: { // опционально
'User-Agent': 'MyApp/1.0.0'
}
});
TypeScript
import { AniLibertyClient, Release, isSuccess } from 'anilibertyjs';
const client = new AniLibertyClient();
async function getCatalog() {
const response = await client.getCatalog({ limit: 20 });
if (isSuccess(response)) {
const releases: Release[] = response.data;
console.log(`Найдено релизов: ${releases.length}`);
}
}
🔒 Авторизация
Логин и пароль
POST
login(request: LoginRequest)
Авторизация пользователя по логину и паролю
Promise<ApiResponse<LoginResponse>>
const response = await client.login({
login: 'username',
password: 'password'
});
if (isSuccess(response)) {
console.log('Токен:', response.data.access_token);
// Токен автоматически сохраняется в клиенте
}
Параметры LoginRequest
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
login |
string | Да | Логин пользователя |
password |
string | Да | Пароль пользователя |
OTP (Одноразовый пароль)
POST
otpGet(request: OTPGetRequest)
Запрашивает новый OTP код
// 1. Запросить OTP
const otpResponse = await client.otpGet({
device_id: 'unique-device-id'
});
// 2. Пользователь вводит код из email/sms
// 3. Авторизация по OTP
const loginResponse = await client.otpLogin({
code: 123456,
device_id: 'unique-device-id'
});
Социальные сети
GET
socialAuthVkRedirect()
Получить URL для авторизации через VK
// VK const vkRedirect = await client.socialAuthVkRedirect(); // Перенаправить пользователя на vkRedirect.data.url // Discord const discordRedirect = await client.socialAuthDiscordRedirect(); // Google const googleRedirect = await client.socialAuthGoogleRedirect();
Управление токеном
// Установить токен вручную
client.setAccessToken('your-token-here');
// Очистить токен
client.clearAccessToken();
// Обновить токен
await client.refreshToken();
// Выход
await client.logout();
📚 Каталог аниме
Получение каталога с фильтрацией
GET
getCatalog(filters?: CatalogFilters)
Получить список релизов с расширенными фильтрами
const catalog = await client.getCatalog({
page: 1,
limit: 20,
genres: ['action', 'comedy'],
types: ['tv'],
seasons: ['2024'],
sort: 'rating',
order: 'desc'
});
Параметры CatalogFilters
| Параметр | Тип | Описание |
|---|---|---|
page |
number | Номер страницы |
limit |
number | Количество результатов на странице |
types |
string[] | Типы релизов (TV, OVA, Movie и т.д.) |
genres |
string[] | ID жанров |
seasons |
string[] | ID сезонов |
statuses |
string[] | ID статусов релизов |
ratings |
string[] | ID возрастных рейтингов |
sort |
'created_at' | 'updated_at' | 'title' | 'rating' | Поле для сортировки |
order |
'asc' | 'desc' | Порядок сортировки |
include |
string | string[] | Включить связанные данные |
exclude |
string | string[] | Исключить поля из ответа |
Другие методы каталога
GET
getRelease(releaseId: string)
const release = await client.getRelease('release-id');
GET
getReleaseByCode(code: string)
const release = await client.getReleaseByCode('sword-art-online');
GET
getRandomRelease()
const random = await client.getRandomRelease();
GET
getUpdates(params?: PaginationParams)
const updates = await client.getUpdates({ limit: 10 });
🔍 Поиск
Полнотекстовый поиск
GET
search(params: SearchParams)
Поиск по каталогу с расширенными фильтрами
const searchResult = await client.search({
query: 'Наруто',
limit: 20,
types: ['tv'],
genres: ['action', 'adventure']
});
if (isSuccess(searchResult)) {
console.log(`Найдено: ${searchResult.data.total}`);
searchResult.data.releases.forEach(release => {
console.log(`- ${release.title.ru}`);
});
}
Быстрый поиск (автодополнение)
GET
quickSearch(query: string, limit?: number)
Быстрый поиск для автодополнения
const quickResult = await client.quickSearch('One Piece', 5);
👤 Пользовательские возможности
Профиль
// Получить профиль
const profile = await client.getMyProfile();
// Обновить профиль
await client.updateMyProfile({
login: 'new-login',
email: 'new@email.com',
description: 'Моё описание'
});
// Изменить пароль
await client.updateMyPassword({
old_password: 'old',
new_password: 'new',
new_password_confirmation: 'new'
});
Избранное
// Добавить в избранное
await client.addToFavorites({
release_id: '123',
status_id: '1'
});
// Получить избранное
const favorites = await client.getMyFavorites();
// Обновить статус
await client.updateFavorite('release-id', {
status_id: '2'
});
// Удалить из избранного
await client.removeFromFavorites('release-id');
Коллекции
// Создать коллекцию
const collection = await client.createCollection({
title: 'Моя коллекция',
description: 'Описание',
is_public: true
});
// Добавить релиз в коллекцию
await client.addReleaseToCollection(collection.data.id, {
release_id: 'release-id'
});
// Получить все коллекции
const collections = await client.getMyCollections();
История просмотров
// Обновить позицию просмотра
await client.updateWatchHistory('release-id', {
episode_id: 'episode-id',
timestamp: 300, // секунды
duration: 1440 // общая длительность
});
// Получить историю
const history = await client.getWatchHistory();
// Очистить историю
await client.clearWatchHistory();
📚 Дополнительные ресурсы
Полная документация
- 📖 Полный справочник API - Все методы с подробным описанием
- 📝 Справочник типов - Все TypeScript интерфейсы
Примеры кода
Смотрите папку examples/ в репозитории для детальных примеров:
basic.ts- Базовые операции с APIauth.ts- Авторизация и работа с профилемsearch.ts- Поиск и фильтрация каталога