1.8.7 • Published 9 months ago

novel-crawler-vn v1.8.7

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
9 months ago

Novel Crawler

A powerful tool to download online novels and save them as EPUB or JSON files.

Installation

# Using npm
npm install -g novel-crawler-vn

# Using npx (no installation required)
npx novel-crawler-vn

Quick Start

npx novel-crawler-vn "https://your-novel-url" 

Features

  • Downloads novels from various Vietnamese and English novel sites
  • Supports EPUB and JSON output formats
  • Concurrent chapter downloading
  • Cloudflare bypass support via FlareSolverr
  • Split large books into multiple parts
  • Progress tracking and status updates

Command Line Usage

npx novel-crawler-vn [novelUrl] [options]

Options

OptionAliasDescriptionDefault
--output-oOutput directory path"."
--format-fOutput format (epub or json)"epub"
--concurrency-cNumber of concurrent downloads5
--flaresolverr--fsFlareSolverr API URL-
--chapterPerPart--cppChapters per split part0
--list-lList supported sites-
--help-Show help-
--version-Show version-

Supported Sites

View all supported sites using:

npx novel-crawler-vn --list

Currently supports:

Programmatic Usage

Installation

# Using npm
npm install novel-crawler-vn

# Using yarn
yarn add novel-crawler-vn

# Using pnpm
pnpm add novel-crawler-vn

Basic Usage

import { crawler } from 'novel-crawler-vn';

await crawler({
  novelUrl: 'https://example.com/novel/my-novel'
});

Advanced Usage

import { CrawlerManager, OutputFormat } from 'novel-crawler-vn';

const manager = new CrawlerManager({
  processConcurrency: 2,    // Parallel novel processing
  crawlerConcurrency: 5,    // Parallel chapter downloads
  format: OutputFormat.EPUB,
  chaptersPerPart: 50,      // Split into parts
  flareSolverrServer: 'http://localhost:8191/v1'  // Optional
});

// Download novel
await manager.downloadNovel('https://example.com/novel/my-novel');

// Get supported sites
const sites = manager.getSupportedCrawlers();

// Monitor progress
manager.$subscribe.on('qUpdate', () => {
  const status = manager.getQueueStatus();
  console.log('Progress:', status);
});