feat(p1): add daily snapshots and fan tracking
Implement P1: seven-metric view snapshots, relation/stat fan snapshots, failure placeholders, resume by daily completion markers, Cookie login warnings, daily SQLite backups, Shanghai daily scheduling, and CLI snapshot/auth-check commands. Real read-only run captured 795/795 videos successfully over 1124s with a verified daily backup.
This commit is contained in:
1 parent
ee289bfa56
commit
5c2ab7b187
20 files changed
+1680
-54
No files matched your search
@@ -4,9 +4,9 @@
|
||||
|
||||
项目以 B 站年度收藏夹为可信视频来源,补充关键词发现和 Telegram 人工确认,持续采集 reaction 视频的七项数据与咻咻满粉丝数,并提供本地数据看板。现有的收藏夹排序工具仍保留并作为一键加入后的排序能力基础。
|
||||
|
||||
> 当前状态:**P0(数据底座与收藏夹同步)已实施,P1 待开始。**
|
||||
> 当前状态:**P0(数据底座与收藏夹同步)、P1(快照与粉丝追踪)已实施;P2 待开始。**
|
||||
>
|
||||
> 当前已可用:扫码授权、收藏夹读取、排序计划生成、执行与校验;SQLite 建库迁移、收藏夹首次导入与增量同步、失效识别、黑名单种子。
|
||||
> 当前已可用:扫码授权、收藏夹读取、排序计划生成、执行与校验;SQLite 建库迁移、收藏夹首次导入与增量同步、失效识别、黑名单种子;每日七项视频快照、粉丝数快照、失败占位、断点续跑与日备份。
|
||||
>
|
||||
> 详细业务口径、接口验证和风险记录见 [project.md](project.md);开发架构与实施计划见 [DEVELOPMENT.md](DEVELOPMENT.md)。
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
| 收藏夹排序 | 可用 | 同一 UP 连续,组内按发布时间倒序,组间按该 UP 最早视频发布时间倒序。 |
|
||||
| 扫码授权与 Cookie 续期 | 可用 | 本地生成二维码;更新身份 Cookie 时保留设备指纹。 |
|
||||
| 收藏夹同步与首次导入 | 可用(P0) | 监控已配置年度夹,自动发现人工新收藏的视频与失效资源。 |
|
||||
| 视频日快照 | 规划(P1) | 逐条采集播放、点赞、投币、收藏、转发、评论、弹幕。 |
|
||||
| 粉丝追踪 | 规划(P1) | 每日记录咻咻满等配置 UP 的粉丝数。 |
|
||||
| 视频日快照 | 可用(P1) | 逐条采集播放、点赞、投币、收藏、转发、评论、弹幕。 |
|
||||
| 粉丝追踪 | 可用(P1) | 每日记录咻咻满等配置 UP 的粉丝数。 |
|
||||
| 本地数据看板 | 规划(P2) | 总览、榜单、视频/UP 详情、粉丝曲线、候选池和系统状态。 |
|
||||
| Telegram 发现与一键加入 | 规划(P3) | 每小时发现候选,支持收藏、忽略、拉黑和收藏夹内定位。 |
|
||||
|
||||
@@ -68,7 +68,7 @@ uv run python app.py init
|
||||
# 首次导入或增量同步配置中的年度收藏夹(只读联网)
|
||||
uv run python app.py sync
|
||||
|
||||
# 按 folder_sync_minutes 常驻周期同步;--once 只跑一次
|
||||
# 按配置周期常驻运行收藏夹同步 + 每日快照;--once 只跑一次到期任务
|
||||
uv run python app.py run
|
||||
uv run python app.py run --once
|
||||
|
||||
@@ -86,6 +86,32 @@ uv run python app.py status
|
||||
- 黑名单只作为发现阶段的种子写入,**不会过滤收藏夹同步**;
|
||||
- 收藏夹达到 950 条时预警,系统绝不自动换夹。
|
||||
|
||||
## P1:每日快照与粉丝追踪
|
||||
|
||||
P1 已实现每日七项视频指标快照、咻咻满粉丝数快照、失败占位、断点续跑、Cookie 失效告警和 SQLite 日备份。
|
||||
|
||||
```powershell
|
||||
# 采集当日快照与粉丝数(只读联网,约 18~20 分钟 / 795 条)
|
||||
uv run python app.py snapshot
|
||||
|
||||
# 忽略当日完成标记,重新采集
|
||||
uv run python app.py snapshot --force
|
||||
|
||||
# 检查 Cookie 登录态
|
||||
uv run python app.py auth-check
|
||||
```
|
||||
|
||||
- `snapshot` 对 `active` / `unfaved` 视频逐条请求 `view`,每条请求间隔 1.0~1.6 秒;
|
||||
- 成功写入 `snapshot` 的七项指标;同日 `ok=1` 的记录直接跳过,可断点续跑;
|
||||
- 视频不可访问(`-404` / `62002` / `62012`)标记为 `removed`;
|
||||
- 其他错误重试 3 次,仍失败写入 `ok=0` 和错误信息,不写伪造的零值;
|
||||
- 粉丝数写入 `up_stat`,失败同样写 `ok=0`;
|
||||
- 当日全部视频与粉丝采集成功后写入完成标记;服务启动时若当天未完成会自动补跑;
|
||||
- 每次采集后生成 `data/backup/app-YYYYMMDD.db`,按 `storage.backup_keep_days` 清理旧日备份;
|
||||
- Cookie 失效只告警,不阻塞匿名 `view` 采集;`auth-check` 可单独检查。
|
||||
|
||||
首次真实全量采集结果:795 条视频全部成功、0 失败、0 移除,耗时约 19 分钟;粉丝 `follower=2767270`;日备份为 `data/backup/app-20261031.db`。
|
||||
|
||||
## 配置
|
||||
|
||||
复制样例配置,并填写 B 站账号信息:
|
||||
@@ -198,8 +224,11 @@ uv run python tests/test_config.py # 配置加载、校验、ENV 覆盖
|
||||
uv run python tests/test_migrations.py # 迁移、备份、回滚与保留期
|
||||
uv run python tests/test_database.py # 单写队列、事务与并发
|
||||
uv run python tests/test_repository.py # 收藏夹/视频状态机与黑名单
|
||||
uv run python tests/test_bilibili_client.py # ids/infos 契约、分块、缺失与重试
|
||||
uv run python tests/test_bilibili_client.py # ids/infos/view/fans/nav 契约与重试
|
||||
uv run python tests/test_folder_sync.py # 首次导入、差集、失效识别、容量预警
|
||||
uv run python tests/test_snapshot.py # 七项快照、断点续跑、失败占位、粉丝
|
||||
uv run python tests/test_maintenance.py # 日备份与保留期
|
||||
uv run python tests/test_timeutil.py # 上海时区与每日任务时间
|
||||
uv run python tests/test_scheduler.py # 内置调度器到期/失败隔离
|
||||
uv run python tests/test_logging.py # JSON 日志脱敏
|
||||
uv run python tests/test_cli.py # CLI 离线路径
|
||||
@@ -211,8 +240,9 @@ uv run python tests/test_cli.py # CLI 离线路径
|
||||
config.json.bak 最近一次 auth 更新前的配置备份
|
||||
data/plan-<media_id>.json 排序计划、顺序快照和元数据缓存
|
||||
data/journal-<media_id>.jsonl 排序执行日志
|
||||
data/app.db P0 起的 SQLite 数据库(收藏夹、视频、黑名单)
|
||||
data/backup/ 数据库迁移前的自动备份
|
||||
data/app.db SQLite 数据库(收藏夹、视频、快照、粉丝、黑名单)
|
||||
data/backup/app-YYYYMMDD.db 每日快照后的 SQLite 备份
|
||||
data/backup/app-pre-v*.db 数据库迁移前的自动备份
|
||||
```
|
||||
|
||||
## 文档索引
|
||||
|
||||
Reference in new issue
Block a user