Skip to content

Repository files navigation

Hentasis Parser API

Неофициальное API для hentasis5.top.

Это локальный сервис, а не парсер «по каждому клику»: первый запрос тянет HTML по HTTP, после этого тайтлы, жанры, годы и списки лежат в data/ и отдаются из кэша. Страницы источника - обычный серверный HTML на DLE, Chromium не нужен.

18+ / NSFW. Неофициально. Используйте на свой риск.

Установка

Нужен Node.js 18+.

git clone https://github.com/lixim/hentasis-parser.git
cd hentasis-parser
npm install
npm start

Или с GitHub без клона:

npm install github:lixim/hentasis-parser
npx hentasis-parser

На Windows start.bat при необходимости ставит зависимости и запускает сервер.

Дальше откройте:

Демо в tests/ ходит в то же API: карточки, страница тайтла с плеером и сырой JSON.

Библиотека npm

const { HentasisAPI, HentasisClient } = require('hentasis-parser');

// Каталог в процессе (без HTTP-сервера)
const api = new HentasisAPI();
api.init();
await api.warmUp();
const latest = await api.latest(1);
const title = await api.title(latest.data.results[0].id);

// HTTP-клиент к уже запущенному серверу
const client = new HentasisClient({ baseUrl: 'http://localhost:3000' });
const search = await client.search('Someya');

API

В кэшированных ответах есть meta.source (cache | live | catalog) и meta.cachedAt. Чтобы обойти кэш, передайте force=1.

Метод Путь Описание
GET /health Состояние процесса и каталога
GET /api/status Тайтлы / жанры / годы в локальном хранилище
GET /api/latest?page=1 Новые тайтлы
GET /api/search?q=&page=1 Поиск
GET /api/genre/:slug?page=1 Фильтр по жанру (Romance, Big, …)
GET /api/year/:year?page=1 Фильтр по году
GET /api/genres Справочник жанров
GET /api/years Справочник годов
GET /api/titles Локальный каталог (q, genre, year, page, limit)
GET /api/titles/:id Полный тайтл (плееры, описание). При промахе кэша - живой запрос
GET /api/parse?url= Разобрать URL источника и сохранить в каталог
POST /api/sync?pages=1 Обновить новинки и справочники

Примеры:

curl "http://localhost:3000/api/latest"
curl "http://localhost:3000/api/titles/1072"
curl -X POST "http://localhost:3000/api/sync?pages=2"

В ответе тайтла есть id, name, poster, year, genres, players[] (episode, title, url, type).

Кэш

Файлы в data/ (в git не попадают):

  • catalog.json - индекс тайтлов
  • meta.json - жанры и годы
  • cache.json - страницы списков
  • titles/*.json - полные карточки тайтлов

TTL по умолчанию: списки 5 мин, тайтлы 30 мин, справочники 6 часов.

Переменная По умолчанию Назначение
PORT 3000 HTTP-порт
HENTASIS_BASE_URL https://v4.hentasis5.top Адрес источника
HENTASIS_DATA_DIR ./data Папка кэша
HENTASIS_LIST_TTL 300000 Кэш списков, мс
HENTASIS_TITLE_TTL 1800000 Кэш тайтлов, мс
HENTASIS_META_TTL 21600000 Кэш жанров/годов, мс
HENTASIS_CONCURRENCY 4 Параллельные HTTP-запросы
HENTASIS_WARMUP 1 Подтянуть новинки и справочники при старте

Структура

src/           API, HTTP-парсер, каталог, npm-экспорты
tests/         Демо-сайт и юнит-проверки
data/          Локальный каталог (создаётся при запуске)
npm test

Заметки

  • /api/parse принимает только URL с hentasis5.top.
  • Поиск на источнике стабильно работает примерно от 4 символов.
  • Пакет не проксирует видео: он возвращает ссылки, которые нашёл в Playerjs на странице.

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages