docs: document csv fan import

This commit is contained in:
kairee committed 2026-11-01 02:23:10 +08:00
1 parent c4c9c0b038
commit dd6b09807d
3 files changed
+28 -19

No files matched your search

+19 -10
View File
@@ -186,25 +186,34 @@ uv run python app.py serve --preview --config data/preview/config.json
- 预览配置不包含真实 Cookie,端口 8081,Telegram 关闭;
- 重新生成前必须先停止预览服务,否则 Windows 会因数据库被占用而拒绝覆盖。
### 粉丝历史回填
### 粉丝历史回填(CSV)
小满虫之家 `data.html` 的 `assets/js/data.js` 包含 90 天粉丝锚点和每日净增。可以只读拉取并回填 `up_stat`:
B 站粉丝历史 CSV 形如:
```csv
时间,粉丝,7日变化,1日变化
2026-10-31 22:42,2767269,139,-33
2026-10-29 23:53,2767334,496,15
```
导入命令:
```powershell
# 先预览将要写入的内容
uv run python tools/import_fans_history.py --days 90 --dry-run
uv run python tools/import_fans_csv.py --csv E:\Downloads\history.csv --dry-run
# 实际写入;默认跳过已有成功记录,--force 才覆盖
uv run python tools/import_fans_history.py --days 90
# 实际写入;默认跳过已有成功记录,--force 才覆盖同日期记录
uv run python tools/import_fans_csv.py --csv E:\Downloads\history.csv
# 站点不可达时,用保存下来的 data.js 离线导入
uv run python tools/import_fans_history.py --from-file data.js --days 90
# 用完整 CSV 替换该 mid 的全部粉丝历史(推荐首次导入完整历史时使用)
uv run python tools/import_fans_csv.py --csv E:\Downloads\history.csv --replace
```
- 数据源当前快照日期为 `2026-10-24`,导入范围 `2026-07-27 ~ 2026-10-24`;
- 只写 `up_stat`,不修改视频快照、收藏夹或黑名单;
- 同一天出现多行时保留时间最晚的一条;
- 缺失日期不插值,粉丝曲线会断开;
- 默认跳过已有 `ok=1` 记录;`ok=0` 的历史记录会用站点数据修复;
- 默认跳过已有 `ok=1` 记录;`ok=0` 的历史记录会被修复;
- `--replace` 会先删除该 mid 的全部 `up_stat`,再按 CSV 重建,适合用完整历史覆盖旧数据;
- 页面的“日增”只在存在前一天数据时计算,跨多天不会标成日增;
- 写入前建议先备份 `data/app.db`,例如 `data/backup/app-pre-fans-YYYYMMDD.db`。
@@ -395,7 +404,7 @@ uv run python tests/test_maintenance.py # 日备份与保留期
uv run python tests/test_timeutil.py # 上海时区与每日任务时间
uv run python tests/test_analytics.py # 热度、互动率、增长与封面
uv run python tests/test_preview_seed.py # 预览库回填、确定性与安全边界
uv run python tests/test_fans_history.py # 粉丝历史解析、净增计算与幂等回填
uv run python tests/test_fans_csv.py # 粉丝 CSV 解析、替换与幂等回填
uv run python tests/test_web_queries.py # 看板查询层与冷启动
uv run python tests/test_web_server.py # 只读路由、鉴权、静态资源与预览模式
uv run python tests/test_scheduler.py # 内置调度器到期/失败隔离