Skip to main content

NOVELDOWNLOADER: rule-driven Chinese novel downloader and format converter

Project description

NDL - NOVELDOWNLOADER

Rule-driven Chinese novel downloader and format converter

CI License: MIT Python

简体中文

Status

v0.1.0 is published on PyPI as ndl-storykit. The current source tree is back on the next development version, 0.2.0.dev0, after shipping the first public release. Implemented surfaces include download, TXT/EPUB convert, library management, search, rule updates, optional browser rendering for supported rules, local Web UI, and auditable packaging checks. See docs/superpowers/SESSION-STATE.md for the current handoff snapshot.

What Works Now

  • Validate YAML source rules with ndl rules validate
  • Download a rule-matched static HTML site to TXT or EPUB after installing a YAML rule
  • Convert local TXT files to TXT or styled EPUB
  • Manage the local SQLite library with ndl library list/show/remove
  • Refresh saved ongoing novels with ndl update --all
  • Search rule-defined source indexes with ndl search
  • Install validated remote YAML rules with ndl rules update
  • Use optional Playwright-backed rendering when a rule declares fetcher.type: browser, including rule-defined wait/viewport controls
  • Verify release wheel/sdist contents with scripts/verify_distribution.py
  • Search, download, and trigger manual/recurring library updates from the local Web UI
  • Enforce robots.txt, per-host rate limits, retries, and a first-run lawful-use disclaimer for downloads

What It Does (Roadmap)

  • Download Chinese web novels from static HTML sites, with Playwright for JS-heavy sites as an optional extra
  • Convert between TXT and EPUB formats, standalone or after download
  • Manage a local SQLite library and track ongoing novels for updates
  • Search across multiple sites via rule-defined search endpoints
  • Add new sites by writing YAML rules, not Python code
  • Use either CLI or a local Web UI, both sharing the same state

Non-Goals

NDL does not and will not:

  • Support commercial platforms such as Qidian, Fanqie, Jinjiang, or Qimao
  • Bypass paywalls, Cloudflare, CAPTCHAs, or DRM
  • Include login/account features or proxy pools

See DISCLAIMER.md for the full ethics and legal stance.

Development Install

uv sync
uv run ndl --version

Optional browser-backed rules require the browser extra and a Playwright browser install:

uv sync --extra browser
uv run playwright install chromium
uv run ndl doctor browser

The package is published on PyPI as ndl-storykit. The import path inside the package is still ndl, and the CLI entry point is still ndl:

pip install ndl-storykit
pip install 'ndl-storykit[browser]'   # with optional Playwright fetcher

Usage

ndl download <url> -o book.epub --accept-disclaimer
ndl convert book.txt -o book.epub
ndl library list
ndl update --all --accept-disclaimer
ndl search "keyword"
ndl rules update --manifest-url <manifest-url>
ndl doctor browser
ndl serve --accept-disclaimer
ndl rules validate my-rule.yaml

Contributing

See CONTRIBUTING.md. Rule contributions are especially welcome and do not require Python.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ndl_storykit-0.2.0.tar.gz (369.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ndl_storykit-0.2.0-py3-none-any.whl (78.1 kB view details)

Uploaded Python 3

File details

Details for the file ndl_storykit-0.2.0.tar.gz.

File metadata

  • Download URL: ndl_storykit-0.2.0.tar.gz
  • Upload date:
  • Size: 369.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ndl_storykit-0.2.0.tar.gz
Algorithm Hash digest
SHA256 fb08ecf1432325659eec8bdcdaed0a7b61cc9a71cb7f57a53ede207058074bf8
MD5 3ee19dd78fe7578a7523fe7151ac3a73
BLAKE2b-256 02990bc333b53baee9671f5bec56465b6a097748a378a3eac0ec8c54ac78253f

See more details on using hashes here.

File details

Details for the file ndl_storykit-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ndl_storykit-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 78.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ndl_storykit-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f36f118f3830a22023610591df3cdf09fefdd3b9af029e1e74414dd5136e362
MD5 8bc655f923ba1d7eabd1fcdb8dbeb4c8
BLAKE2b-256 2fbb9e741efc089f186db1d500577938bff0f11958dcba4c2b85d1b22a6fca21

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page