@aerosstube/anime-parser-kodik-ts
v1.1.2
Published
TypeScript библиотека для парсинга аниме с сайта Kodik с полной типизацией
Maintainers
Readme
Anime Parser TypeScript
TypeScript версия парсера аниме для сервиса Kodik с полной типизацией.
Установка
Из npm
npm install @aerosstube/anime-parser-kodik-tsДля разработки
git clone https://github.com/aerosstube/anime-parser-kodik-ts.git
cd anime-parser-kodik-ts
npm installСборка
npm run buildЗапуск
Пример использования
npm run exampleИспользование
Основные классы
import { createParser, createSearch, createList, KodikParser } from '@aerosstube/anime-parser-kodik-ts';
// Создание парсера
const parser = await createParser(); // Автоматически получит токен
// или
const parser = new KodikParser('your_token');
// Поиск аниме
const results = await parser.search('Наруто', 10, true, null, false, true);
// Поиск по ID
const resultsById = await parser.searchById('1735', 'shikimori');
// Получение информации
const info = await parser.getInfo('1735', 'shikimori');
// Получение ссылки на серию
const [link, quality] = await parser.getLink('1735', 'shikimori', 1, '609');API классы
// Поиск через API
const search = await createSearch();
const results = await search
.title('Атака титанов')
.limit(5)
.anime_kind('tv')
.execute_async();
// Список через API
const list = await createList();
const listResults = await list
.limit(10)
.sort('year')
.order('desc')
.anime_genres(['Экшен'])
.execute_async();Типы
AnimeResult
interface AnimeResult {
title: string;
title_orig: string;
other_title: string | null;
type: string;
year: number;
screenshots: string[];
shikimori_id: string | null;
kinopoisk_id: string | null;
imdb_id: string | null;
worldart_link: string | null;
additional_data: Record<string, unknown>;
material_data: Record<string, unknown> | null;
link: string;
}Translation
interface Translation {
id: string;
title: string;
type: string;
is_voice: boolean;
}AnimeInfo
interface AnimeInfo {
translations: Translation[];
series_count: number;
}SearchResponse
interface SearchResponse {
total: number;
time: string;
results: AnimeResult[];
}Ошибки
Все ошибки наследуются от общего базового класса KodikError:
TokenError— проблемы с токеномServiceError— ошибки сервисаPostArgumentsError— неверные аргументыNoResults— нет результатовUnexpectedBehavior— неожиданное поведениеQualityNotFound— качество не найденоAgeRestricted— возрастные ограниченияTooManyRequests— слишком много запросовContentBlocked— контент заблокированServiceIsOverloaded— сервис перегруженDecryptionFailure— ошибка расшифровки
Константы (Enums)
Типы аниме
import { AnimeKind } from '@aerosstube/anime-parser-kodik-ts';
AnimeKind.TV // 'tv'
AnimeKind.MOVIE // 'movie'
AnimeKind.OVA // 'ova'
AnimeKind.ONA // 'ona'
// ...Жанры
import { AnimeGenres } from '@aerosstube/anime-parser-kodik-ts';
AnimeGenres.ACTION // 'Экшен'
AnimeGenres.COMEDY // 'Комедия'
AnimeGenres.DRAMA // 'Драма'
// ...Сортировка
import { SortList, OrderList } from '@aerosstube/anime-parser-kodik-ts';
SortList.YEAR // 'year'
SortList.CREATED_AT // 'created_at'
OrderList.ASC // 'asc'
OrderList.DESC // 'desc'Структура проекта
anime-kodik-parser/
├── src/
│ ├── lib/
│ │ ├── errors.ts # Классы ошибок
│ │ ├── internal_tools.ts # HTTP-обёртки
│ │ ├── parser_kodik.ts # Основной парсер
│ │ └── api_kodik.ts # API классы и enums
│ ├── types/
│ │ └── index.ts # Интерфейсы и типы
│ ├── index.ts # Главный экспорт
│ └── example.ts # Пример использования
├── dist/ # Скомпилированные файлы
├── package.json
├── tsconfig.json
└── README.mdТребования
- Node.js >= 14
- TypeScript >= 5.0
- Зависимости: axios, cheerio, base-64
Лицензия
MIT
