Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微信读书热门封面下载器

基于 Node.js 的小工具,输入书名及可选作者,自动从微信读书平台搜索并下载阅读人数前三的书籍高清封面,保存到本地 covers 文件夹中。

为什么选择微信读书?

  • 书籍资源丰富:平台收录了海量正版中文书籍,覆盖文学、社科、经管、生活等各个领域,几乎能找到所有热门及经典书目。
  • 封面尺寸统一:微信读书的封面图片尺寸高度统一,下载后无需额外裁剪或调整,直接适合用作书单展示、博客插图、个人收藏等。
  • 稳定可靠:调用公开的搜索接口,返回数据格式固定,封面链接可直接拼接高清地址,长期可用且不易失效。
  • 无需登录:搜索和封面下载均为公开资源,无需注册或鉴权,降低了使用门槛。

核心原理

  1. 首次搜索获取参数
    调用微信读书搜索接口 https://weread.qq.com/api/store/search,传入书名关键词,从返回结果中提取 sid 和电子书分类(type=1)的 scope 值。

  2. 精确获取书籍列表
    使用上一步获取的 sidscope 再次请求同一接口(指定 count=20),获得最多 20 本电子书的详细信息。

  3. 双重过滤与排序

    • 筛选书籍时,书名必须包含输入的 title 关键词;如果提供了 author 参数,则作者也必须包含该关键词。
    • 若同时满足条件的书籍为空,则自动放宽过滤,使用全部返回的书籍。
    • readingCount(阅读人数)降序排列,取阅读人数最多的前 3 本。
  4. 高清封面地址构造
    微信读书返回的封面 URL 通常为普通清晰度(路径含 /s_),将其替换为 /t9_ 即可获得高清大图。

  5. 下载为内存 Buffer
    使用 axios 以 arraybuffer 模式将高清封面直接下载到内存中,避免中间落盘,为后续处理提供原始数据。

  6. AI 超分 4x 放大
    使用 UpscalerJS 加载 Real-CUGAN 4x 模型,对 Buffer 进行 4 倍分辨率放大。该模型基于深度学习,能智能重建细节,使小尺寸封面变为高清大图。输入输出均通过 TensorFlow.js 的 tf.node.decodeImage / encodePng 在内存中完成,不生成临时文件。

  7. 智能压缩降体积
    超分后的图片为无损 PNG,体积巨大(单张可达 5MB+)。使用 sharp 库将其转为 mozjpeg 编码的高质量 JPEG(quality: 85,启用 progressive 和 chromaSubsampling: 4:2:0)。在肉眼几乎无法察觉质量损失的前提下,体积通常可压缩 90% 以上(例如 5MB → 400KB)。

  8. 文件保存
    压缩后的 Buffer 以 书名_书名_Top1.jpg 的格式命名,统一存储在项目根目录下的 covers 文件夹。程序会自动创建该目录。

环境配置

  • Node.js:建议 v14 及以上版本。
  • 依赖安装:本项目已在 package.json 中固定了依赖版本,在项目根目录执行以下命令即可完成安装:
npm install

使用方法

node index.js <书名> [作者]
  • 书名:必填,搜索的关键词。
  • 作者:选填,若填写则只下载作者包含该关键词的书籍。

示例

只按书名搜索:

node index.js 活着

按书名和作者同时过滤:

node index.js 活着 余华

运行后将依次下载匹配结果中阅读人数排名前三的书籍高清封面,保存至 covers 文件夹。

项目结构

.
├── index.js                  # 主程序入口,负责流程编排
├── package.json              # 依赖与版本锁定
├── package-lock.json
├── covers/                   # 封面保存目录(自动创建)
├── models/                   # 超分模型
├── src/
│   ├──tasks/
│   │   ├── search.js         # 微信读书搜索 API 封装
│   │   ├── download.js       # 封面下载为 Buffer
│   │   ├── upscale.js        # UpscalerJS 4x 超分处理
│   │   ├── compress.js       # sharp 智能压缩(PNG → 高质量 JPEG)
│   │   └── save.js           # Buffer 保存为本地 JPG
│   └──utils/ 
│       └── progress.js       # 展示终端进度条
└── README.md

注意事项

  • 搜索请求依赖网络,若频繁使用可能触发平台限流,建议合理控制请求频率。
  • 若书籍无封面或搜索无结果,程序会给出相应提示并跳过。
  • 文件名中的非法字符(如 \ / : * ? " < > |)会被替换为下划线,避免系统报错。

License

本项目采用 MIT License 开源,请查看 LICENSE 文件。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages