novel-downloader


Namenovel-downloader JSON
Version 2.0.2 PyPI version JSON
download
home_pageNone
SummaryA command-line tool for downloading Chinese web novels from Qidian and similar platforms.
upload_time2025-09-10 22:19:01
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseMIT License Copyright (c) 2025 Saudade Z Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords novel web novel qidian biquge ebook
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # novel-downloader

基于 [aiohttp](https://github.com/aio-libs/aiohttp) 的异步小说下载工具 / 库。支持断点续传、广告过滤与 TXT/EPUB 导出, 提供 CLI 与 Web 图形界面。

> 运行要求: **Python 3.11+** (开发环境: Python 3.12)

## 功能特性

* **可恢复下载**: 运行时自动检测本地已完成的部分, 跳过已下载内容
* **多格式导出**: 合并所有章节为
  * `TXT`
  * `EPUB` (可选打包章节插图)
* **广告/活动过滤**:
  * [x] 章节标题过滤
  * [x] 章节正文过滤
* **可选字体混淆还原**: `decode_font`
* **双形态使用**: 命令行 (CLI) 与 Web 图形界面 (GUI)

---

## 安装

使用 `pip` 安装稳定版:

```bash
pip install novel-downloader
```

启用字体解密功能 (`decode_font`):

```bash
pip install "novel-downloader[font-recovery]"
```

> 参见: [安装](https://github.com/saudadez21/novel-downloader/blob/main/docs/1-installation.md)

---

## 快速开始

### 1. 初始化配置

```bash
# 生成默认配置 ./settings.toml
novel-cli config init
```

编辑生成的 `./settings.toml`, 可修改 `request_interval`、`book_ids` 等配置 (参考 [settings.toml 配置说明](https://github.com/saudadez21/novel-downloader/blob/main/docs/3-settings-schema.md))

### 2. 命令行 (CLI)

```bash
# 执行下载任务 (示例: 书籍 ID 为 123456, 默认站点为起点)
novel-cli download 123456
```

* 支持站点见: [支持站点列表](https://github.com/saudadez21/novel-downloader/blob/main/docs/4-supported-sites.md)
* 更多示例见: [CLI 使用示例](https://github.com/saudadez21/novel-downloader/blob/main/docs/5-cli-usage-examples.md)
* 运行中可使用 `CTRL+C` 取消任务

### 3. 图形界面 (GUI / Web)

```bash
# 启动 Web 界面 (基于当前 settings.toml)
novel-web

# 如需提供局域网/外网访问 (请自行留意安全与网络环境)
# novel-web --listen public
```

* 运行中可使用 `CTRL+C` 停止服务

---

## 从源码安装 (开发版)

体验最新开发功能:

```bash
git clone https://github.com/saudadez21/novel-downloader.git
cd novel-downloader
pip install .
# 或安装带可选功能:
# pip install .[font-recovery]
```

---

## 文档导航

* [安装](https://github.com/saudadez21/novel-downloader/blob/main/docs/1-installation.md)
* [配置](https://github.com/saudadez21/novel-downloader/blob/main/docs/2-configuration.md)
* [settings.toml 配置说明](https://github.com/saudadez21/novel-downloader/blob/main/docs/3-settings-schema.md)
* [支持站点列表](https://github.com/saudadez21/novel-downloader/blob/main/docs/4-supported-sites.md)
* [CLI 使用示例](https://github.com/saudadez21/novel-downloader/blob/main/docs/5-cli-usage-examples.md)
* [复制 Cookies](https://github.com/saudadez21/novel-downloader/blob/main/docs/copy-cookies.md)
* [文件保存](https://github.com/saudadez21/novel-downloader/blob/main/docs/file-saving.md)
* [模块与接口文档](https://github.com/saudadez21/novel-downloader/blob/main/docs/api/README.md)
* [TODO](https://github.com/saudadez21/novel-downloader/blob/main/docs/todo.md)
* [开发](https://github.com/saudadez21/novel-downloader/blob/main/docs/develop.md)

---

## 项目说明

* 本项目仅供学习和研究使用, **不得**用于任何商业或违法用途; 请遵守目标网站的 `robots.txt` 及相关法律法规
* 由于网站结构可能变化或其他问题, 可能导致无法正常工作, 请按需自行调整代码或寻找其他解决方案
* 使用本项目造成的任何法律责任由使用者自行承担, 项目作者不承担相关责任

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "novel-downloader",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "novel, web novel, qidian, biquge, ebook",
    "author": null,
    "author_email": "Saudade Z <saudadez217@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/22/44/c1845664518c8c25804ef9e9552160dc2a84b05dd8383549dbef677db4f6/novel_downloader-2.0.2.tar.gz",
    "platform": null,
    "description": "# novel-downloader\n\n\u57fa\u4e8e [aiohttp](https://github.com/aio-libs/aiohttp) \u7684\u5f02\u6b65\u5c0f\u8bf4\u4e0b\u8f7d\u5de5\u5177 / \u5e93\u3002\u652f\u6301\u65ad\u70b9\u7eed\u4f20\u3001\u5e7f\u544a\u8fc7\u6ee4\u4e0e TXT/EPUB \u5bfc\u51fa, \u63d0\u4f9b CLI \u4e0e Web \u56fe\u5f62\u754c\u9762\u3002\n\n> \u8fd0\u884c\u8981\u6c42: **Python 3.11+** (\u5f00\u53d1\u73af\u5883: Python 3.12)\n\n## \u529f\u80fd\u7279\u6027\n\n* **\u53ef\u6062\u590d\u4e0b\u8f7d**: \u8fd0\u884c\u65f6\u81ea\u52a8\u68c0\u6d4b\u672c\u5730\u5df2\u5b8c\u6210\u7684\u90e8\u5206, \u8df3\u8fc7\u5df2\u4e0b\u8f7d\u5185\u5bb9\n* **\u591a\u683c\u5f0f\u5bfc\u51fa**: \u5408\u5e76\u6240\u6709\u7ae0\u8282\u4e3a\n  * `TXT`\n  * `EPUB` (\u53ef\u9009\u6253\u5305\u7ae0\u8282\u63d2\u56fe)\n* **\u5e7f\u544a/\u6d3b\u52a8\u8fc7\u6ee4**:\n  * [x] \u7ae0\u8282\u6807\u9898\u8fc7\u6ee4\n  * [x] \u7ae0\u8282\u6b63\u6587\u8fc7\u6ee4\n* **\u53ef\u9009\u5b57\u4f53\u6df7\u6dc6\u8fd8\u539f**: `decode_font`\n* **\u53cc\u5f62\u6001\u4f7f\u7528**: \u547d\u4ee4\u884c (CLI) \u4e0e Web \u56fe\u5f62\u754c\u9762 (GUI)\n\n---\n\n## \u5b89\u88c5\n\n\u4f7f\u7528 `pip` \u5b89\u88c5\u7a33\u5b9a\u7248:\n\n```bash\npip install novel-downloader\n```\n\n\u542f\u7528\u5b57\u4f53\u89e3\u5bc6\u529f\u80fd (`decode_font`):\n\n```bash\npip install \"novel-downloader[font-recovery]\"\n```\n\n> \u53c2\u89c1: [\u5b89\u88c5](https://github.com/saudadez21/novel-downloader/blob/main/docs/1-installation.md)\n\n---\n\n## \u5feb\u901f\u5f00\u59cb\n\n### 1. \u521d\u59cb\u5316\u914d\u7f6e\n\n```bash\n# \u751f\u6210\u9ed8\u8ba4\u914d\u7f6e ./settings.toml\nnovel-cli config init\n```\n\n\u7f16\u8f91\u751f\u6210\u7684 `./settings.toml`, \u53ef\u4fee\u6539 `request_interval`\u3001`book_ids` \u7b49\u914d\u7f6e (\u53c2\u8003 [settings.toml \u914d\u7f6e\u8bf4\u660e](https://github.com/saudadez21/novel-downloader/blob/main/docs/3-settings-schema.md))\n\n### 2. \u547d\u4ee4\u884c (CLI)\n\n```bash\n# \u6267\u884c\u4e0b\u8f7d\u4efb\u52a1 (\u793a\u4f8b: \u4e66\u7c4d ID \u4e3a 123456, \u9ed8\u8ba4\u7ad9\u70b9\u4e3a\u8d77\u70b9)\nnovel-cli download 123456\n```\n\n* \u652f\u6301\u7ad9\u70b9\u89c1: [\u652f\u6301\u7ad9\u70b9\u5217\u8868](https://github.com/saudadez21/novel-downloader/blob/main/docs/4-supported-sites.md)\n* \u66f4\u591a\u793a\u4f8b\u89c1: [CLI \u4f7f\u7528\u793a\u4f8b](https://github.com/saudadez21/novel-downloader/blob/main/docs/5-cli-usage-examples.md)\n* \u8fd0\u884c\u4e2d\u53ef\u4f7f\u7528 `CTRL+C` \u53d6\u6d88\u4efb\u52a1\n\n### 3. \u56fe\u5f62\u754c\u9762 (GUI / Web)\n\n```bash\n# \u542f\u52a8 Web \u754c\u9762 (\u57fa\u4e8e\u5f53\u524d settings.toml)\nnovel-web\n\n# \u5982\u9700\u63d0\u4f9b\u5c40\u57df\u7f51/\u5916\u7f51\u8bbf\u95ee (\u8bf7\u81ea\u884c\u7559\u610f\u5b89\u5168\u4e0e\u7f51\u7edc\u73af\u5883)\n# novel-web --listen public\n```\n\n* \u8fd0\u884c\u4e2d\u53ef\u4f7f\u7528 `CTRL+C` \u505c\u6b62\u670d\u52a1\n\n---\n\n## \u4ece\u6e90\u7801\u5b89\u88c5 (\u5f00\u53d1\u7248)\n\n\u4f53\u9a8c\u6700\u65b0\u5f00\u53d1\u529f\u80fd:\n\n```bash\ngit clone https://github.com/saudadez21/novel-downloader.git\ncd novel-downloader\npip install .\n# \u6216\u5b89\u88c5\u5e26\u53ef\u9009\u529f\u80fd:\n# pip install .[font-recovery]\n```\n\n---\n\n## \u6587\u6863\u5bfc\u822a\n\n* [\u5b89\u88c5](https://github.com/saudadez21/novel-downloader/blob/main/docs/1-installation.md)\n* [\u914d\u7f6e](https://github.com/saudadez21/novel-downloader/blob/main/docs/2-configuration.md)\n* [settings.toml \u914d\u7f6e\u8bf4\u660e](https://github.com/saudadez21/novel-downloader/blob/main/docs/3-settings-schema.md)\n* [\u652f\u6301\u7ad9\u70b9\u5217\u8868](https://github.com/saudadez21/novel-downloader/blob/main/docs/4-supported-sites.md)\n* [CLI \u4f7f\u7528\u793a\u4f8b](https://github.com/saudadez21/novel-downloader/blob/main/docs/5-cli-usage-examples.md)\n* [\u590d\u5236 Cookies](https://github.com/saudadez21/novel-downloader/blob/main/docs/copy-cookies.md)\n* [\u6587\u4ef6\u4fdd\u5b58](https://github.com/saudadez21/novel-downloader/blob/main/docs/file-saving.md)\n* [\u6a21\u5757\u4e0e\u63a5\u53e3\u6587\u6863](https://github.com/saudadez21/novel-downloader/blob/main/docs/api/README.md)\n* [TODO](https://github.com/saudadez21/novel-downloader/blob/main/docs/todo.md)\n* [\u5f00\u53d1](https://github.com/saudadez21/novel-downloader/blob/main/docs/develop.md)\n\n---\n\n## \u9879\u76ee\u8bf4\u660e\n\n* \u672c\u9879\u76ee\u4ec5\u4f9b\u5b66\u4e60\u548c\u7814\u7a76\u4f7f\u7528, **\u4e0d\u5f97**\u7528\u4e8e\u4efb\u4f55\u5546\u4e1a\u6216\u8fdd\u6cd5\u7528\u9014; \u8bf7\u9075\u5b88\u76ee\u6807\u7f51\u7ad9\u7684 `robots.txt` \u53ca\u76f8\u5173\u6cd5\u5f8b\u6cd5\u89c4\n* \u7531\u4e8e\u7f51\u7ad9\u7ed3\u6784\u53ef\u80fd\u53d8\u5316\u6216\u5176\u4ed6\u95ee\u9898, \u53ef\u80fd\u5bfc\u81f4\u65e0\u6cd5\u6b63\u5e38\u5de5\u4f5c, \u8bf7\u6309\u9700\u81ea\u884c\u8c03\u6574\u4ee3\u7801\u6216\u5bfb\u627e\u5176\u4ed6\u89e3\u51b3\u65b9\u6848\n* \u4f7f\u7528\u672c\u9879\u76ee\u9020\u6210\u7684\u4efb\u4f55\u6cd5\u5f8b\u8d23\u4efb\u7531\u4f7f\u7528\u8005\u81ea\u884c\u627f\u62c5, \u9879\u76ee\u4f5c\u8005\u4e0d\u627f\u62c5\u76f8\u5173\u8d23\u4efb\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2025 Saudade Z\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "A command-line tool for downloading Chinese web novels from Qidian and similar platforms.",
    "version": "2.0.2",
    "project_urls": {
        "Homepage": "https://github.com/saudadez21/novel-downloader",
        "Source": "https://github.com/saudadez21/novel-downloader"
    },
    "split_keywords": [
        "novel",
        " web novel",
        " qidian",
        " biquge",
        " ebook"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "586884f1468803679cf9c21ec345f878278a053ac5314abff6ae13d4f13b0524",
                "md5": "b2005e48302c102b1e1bfa08c43787cf",
                "sha256": "5caf9dc8a0a9bb874333dd52d61d057babf69eb94735d7fdc15e6c65c5d8e7f7"
            },
            "downloads": -1,
            "filename": "novel_downloader-2.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b2005e48302c102b1e1bfa08c43787cf",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 365072,
            "upload_time": "2025-09-10T22:18:59",
            "upload_time_iso_8601": "2025-09-10T22:18:59.962114Z",
            "url": "https://files.pythonhosted.org/packages/58/68/84f1468803679cf9c21ec345f878278a053ac5314abff6ae13d4f13b0524/novel_downloader-2.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2244c1845664518c8c25804ef9e9552160dc2a84b05dd8383549dbef677db4f6",
                "md5": "3219c5bcf67cdb2ac523f0a91876d849",
                "sha256": "aa19fcef0c5534e7b35cf32b233105646abe57270822a42b7a2d07e954162d9b"
            },
            "downloads": -1,
            "filename": "novel_downloader-2.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "3219c5bcf67cdb2ac523f0a91876d849",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 241705,
            "upload_time": "2025-09-10T22:19:01",
            "upload_time_iso_8601": "2025-09-10T22:19:01.586156Z",
            "url": "https://files.pythonhosted.org/packages/22/44/c1845664518c8c25804ef9e9552160dc2a84b05dd8383549dbef677db4f6/novel_downloader-2.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-10 22:19:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "saudadez21",
    "github_project": "novel-downloader",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "novel-downloader"
}
        
Elapsed time: 2.30769s