2026-09-14 15:35:53 +08:00

微信读书数据展示网站

基于微信读书 API 的个人读书数据展示网站。

  • 「阅间」看板(当前默认前端):沿用设计稿的视觉与交互,数据来自 /api/reading/* 实时聚合接口,见 docs/API.md。
  • 旧版仪表盘(已归档):原 ECharts 单页仪表盘,完整备份在 legacy/classic/。

项目结构

.
├── fetch_data.py          # 数据采集脚本(从微信读书 API 拉取数据到 SQLite)
├── app.py                 # Flask 后端服务(旧接口 + 注册当前看板接口)
├── reading_api.py              # 当前数据接口层(/api/reading/*,供「阅间」前端使用)
├── start_dashboard.sh     # 启动脚本(端口可用 PORT 覆盖)
├── legacy/classic/             # 旧版前端备份(index.html / style.css / app.js)
├── weread.db              # SQLite 数据库(运行 fetch_data.py 后生成)
├── requirements.txt       # Python 依赖
├── templates/
│   └── index.html         # 「阅间」前端页面
└── static/
    ├── css/styles.css     # 当前样式(设计稿原样)
    ├── css/style.css      # 旧版样式(保留)
    └── js/
        ├── weapi.js       # 当前数据层(封装 /api/reading/*)
        └── app.js         # 当前交互逻辑

快速开始

1. 设置环境变量

export WEREAD_API_KEY=wrk-xxxxxxxx  # 你的微信读书 API Key

2. 安装依赖

pip install -r requirements.txt

3. 采集数据

python fetch_data.py

将拉取书架、阅读统计、笔记等数据并存入 weread.db。

4. 启动网站

./start_dashboard.sh          # 默认 8770 端口
PORT=8080 ./start_dashboard.sh # 或指定端口

也可以直接 python app.py(默认 8080,可用环境变量 PORT 覆盖), 然后访问 http://127.0.0.1:8770 查看「阅间」看板。

当前看板的书架、统计、推荐、搜索等数据实时来自微信读书接口; 未运行 fetch_data.py 时也能使用,只有进度/笔记等局部数据会缺少缓存加速。

自动部署

服务器部署使用根目录的 deploy.sh:

DEPLOY_BRANCH=dev ./deploy.sh

脚本会拉取指定分支,自动创建 .venv,安装 requirements.txt,执行数据库迁移,然后重启 weread.service。GitHub Actions 配置在 .github/workflows/deploy.yml,默认监听 dev 分支。

功能模块

模块 说明
总览仪表盘 累计阅读时长、阅读天数、书架藏书数、笔记总数
年度趋势图 各年度阅读时长柱状图
时段分布 24 小时阅读时段分布折线图
偏好分类 阅读分类占比饼图
偏好作者 阅读最多的作者排行
读书排行 阅读时长最久的书籍 TOP 20
书架 全部书架书籍展示,支持分类筛选和已读完筛选
笔记概览 有笔记的书籍及划线/想法/书签统计

数据库表结构

表名 说明
books 书架书籍信息
reading_stats 阅读统计概要(overall/annually)
read_times 阅读时长时间序列
read_longest 阅读时长最久的书籍
prefer_categories 偏好分类
prefer_authors 偏好作者
prefer_time 24 小时阅读时段分布
notebooks 笔记本概览
read_stat_items 阅读统计摘要项
archives 书单/归档

更新数据

随时重新运行 python fetch_data.py 即可刷新本地数据。

S
Description
No description provided
Readme
1.6 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 42.4%
JavaScript 25.8%
CSS 24.4%
HTML 5.2%
Shell 2.2%