面向轻小说文库(Wenku8) 的 Python 异步客户端,为 Wenku8-OPDS 等上层应用提供统一阅读接口:书籍信息、目录、正文、封面、整本下载、搜索、书架与登录。
| 来源 | 说明 |
|---|---|
web |
wenku8.net 网页版 |
api |
官方 App 数据通道(默认不启用,见下) |
cdn |
封面 / 整本 TXT 等静态资源 |
- 方法默认沿
web → api优先级自动选择可用来源,也可用source=显式指定。 api来源默认不可用;如需启用,请向Wenku8Client(appver_provider=...)注入你自己的实现后即可使用。
pip install -e .需要 Python 3.11+。
import asyncio, os
from wenku8 import Wenku8Client
async def main():
async with Wenku8Client(
credentials={"web": {"username": os.environ["WENKU8_USER"],
"password": os.environ["WENKU8_PASS"]}},
cache=True,
) as client:
await client.login(source="web")
info = await client.get_novel_info(2580)
print(info.title, info.author, info.status)
idx = await client.get_novel_index(2580)
ch0 = idx.volumes[0].chapters[0]
chap = await client.get_novel_content(2580, ch0.cid)
print(chap.text[:200])
cover = await client.get_novel_cover(2580) # 封面
full = await client.get_full_novel_content(2580) # 整本 TXT
asyncio.run(main())账号通过环境变量 WENKU8_USER / WENKU8_PASS 提供。完整示例见 examples/basic_usage.py。
- 阅读:
get_novel_info/get_novel_intro/get_novel_index/get_novel_content/get_full_novel_content - 资源:
get_novel_cover/get_novel_bookinfo/get_novel_shortinfo/get_picture - 发现:
search_novel(按名/按作者)/get_novel_list/get_library_list/get_novel_list_by_library - 用户:
login/login_email/get_user_info/get_bookshelf/get_bookshelf_ids/bookshelf_add/bookshelf_del/vote_novel/user_sign - 书评:
get_reviews/get_review_detail/post_review/post_review_reply - 模型见
wenku8/models.py,支持简繁(Lang.zh_CN/Lang.zh_TW)。
不同来源能提供的字段并不相同(例如中继带统计数据、网页详情带站内评级; 书评列表中继只给正文、网页只给标题)。为保证同一方法在任一来源返回相同的 字段集,默认只填充两个来源都有的字段,来源独有字段留空,需显式启用:
info = await client.get_novel_info(2580) # 仅共有字段
info = await client.get_novel_info(2580, extra_fields=True) # 该来源全部字段
info = await client.get_novel_info(2580, extra_fields=["day_hits", "popularity_level"])
client = Wenku8Client(extra_fields=True) # 也可设为客户端级默认可用字段名可查询:from wenku8 import extra_field_names。
字段裁剪发生在返回前,缓存保存的是完整对象,因此切换 extra_fields
不会产生额外请求。
- 版权受限书目无法阅读;日本 IP 无法使用(站点侧限制)。
- 当前出口对部分页面可能遇到反爬质询;如遇大量失败请考虑更换出口或降低调用频率。