Skip to content

Repository files navigation

douyin-likes-sync

把你的抖音"喜欢"(点赞)列表自动同步成一个 Notion 画廊数据库:封面墙、按点赞顺序排列、按年份/热度/作者筛选,每天定时增量更新。

  • 元数据采集基于 TikTokDownloader (DouK-Downloader)(GPL-3.0,见下方致谢)
  • Notion 写入直连官方 API:纯本地脚本,无任何第三方服务经手你的数据
  • 幂等设计:任何脚本可随时中断、重复运行,不会产生重复数据

效果

Notion 数据库包含 16 个属性(标题/作者/类型/发布时间/年份/热度/热度等级🔥/时长/话题/音乐/抖音链接/已下载/常客…),每个作品一张封面卡片。配合视图可以做出:

  • 点赞画廊——全部点赞按时间倒序的封面墙
  • 热门排行——你赞过的百万赞爆款
  • 按年份——2018 → 现在的口味变迁
  • 常客作品——你反复点赞的那些作者(阈值可配)

安装

前置:macOS / Linux,uv,Python 3.12+,一个 Notion 账号。

git clone https://github.com/yjagh/douyin-likes-sync.git
cd douyin-likes-sync
./setup.sh   # clone 采集器 + 打补丁 + 装依赖

setup.sh 默认从 yjagh/TikTokDownloader(上游 fork,锁定实测 commit)获取采集器,想追官方最新可 ./setup.sh https://github.com/JoeanAmier/TikTokDownloader。

1. 配置抖音采集器

cd TikTokDownloader && uv run --no-dev main.py

首次运行:选择语言 → 阅读并同意免责声明 → 用菜单"从剪贴板读取 Cookie (抖音)"写入你的登录态 Cookie(获取教程)。然后编辑 Volume/settings.json:

"accounts_urls": [{
    "mark": "我的喜欢",
    "url": "https://www.douyin.com/user/MS4wLjAB...",  // 你的主页链接(需真实 sec_user_id,不能用 /user/self)
    "tab": "favorite"
}],
"download": false,      // 只采集元数据,不下载视频
"storage_format": "csv",
"max_pages": 0,         // 首次全量设 0;改日常增量后设 5
"run_command": "5 1 1 Q" // 启动即自动执行采集并退出

再跑一次 uv run --no-dev main.py,全量元数据会写入 Volume/Data/UID..._喜欢作品.csv(几千条约需几十分钟,程序内置防风控延时)。

2. 配置 Notion

  1. 在 notion.so/profile/integrations 新建 Internal 集成,把 token 存进本地文件:printf '%s' 'ntn_xxx' > ~/.notion_token && chmod 600 ~/.notion_token
  2. 在 Notion 里选一个父页面 → ⋯ → 连接 → 添加你的集成
  3. 自动建库:uv run --project TikTokDownloader python create_database.py <父页面链接>,把输出的数据源 ID 记下来
  4. 视图需在 Notion 界面手动添加(公开 API 不支持建视图):推荐建画廊视图,卡片预览设为"页面内容",按"点赞序号"升序排列

3. 配置本项目并试跑

cp config.example.json config.json   # 填 data_source_id、likes_csv 路径等
./daily_sync.sh                      # 端到端跑一次

首次导入几千条约 2~3 小时(受 Notion API 3 请求/秒限速),日志在 state/daily_sync.log,中断后重跑自动续传。若有封面缺漏,跑 uv run --project TikTokDownloader python notion_cover_repair.py 兜底。

4. 每日自动同步(macOS)

./install_schedule.sh 21 30   # 每天 21:30,launchd 定时

记得把 TikTokDownloader/Volume/settings.json 的 max_pages 改为 5(每次只拉最新约 100 条)。

工作原理

抖音喜欢列表 ──TikTokDownloader──▶ CSV 元数据(追加式)
                                     │
                     notion_import.py(幂等增量)
                                     │
              封面:抖音 CDN 下载 → Notion 文件直传(不经第三方)
                                     ▼
                            Notion 数据库(画廊)

设计要点:

  • 作品 ID 为唯一键,导入前查询库内已有 + 本地进度文件双重去重
  • 点赞序号:接口不返回点赞时间,但列表顺序即点赞倒序。全量导入按行号编号;增量新点赞从库内最小值向下递减(负数),保证升序视图永远"最新在前"
  • 封面转存:Notion 的 external_url 导入模式会先发 HEAD 请求,抖音 CDN 拒绝 HEAD——所以脚本自行下载后用 single_part 直传(这是踩过的坑,别改回去)
  • Cookie 过期时(约两个月),daily_sync 会在日志报警并跳过导入,重新写入 Cookie 即恢复

关于 TikTokDownloader(重要)

  • 本项目不包含 TikTokDownloader 的源码,安装时从其仓库 clone;它是 JoeanAmier 的作品,遵循 GPL-3.0
  • patches/ 内含两个对上游的小修复(剪贴板读 Cookie 的 bug、macOS ARM 依赖标记),这些补丁片段同样遵循 GPL-3.0
  • 上游声明其接口加密参数算法已停止维护;本项目实测"喜欢列表"采集配合登录 Cookie 可用,其余功能不做保证
  • 请仅用于你自己账号的个人存档,遵守抖音用户协议与当地法律;不要公开分享含他人作品数据的 Notion 页面

License

本仓库自有代码采用 MIT License。patches/ 目录下的补丁涉及 GPL-3.0 代码片段,遵循 GPL-3.0。

About

把抖音点赞列表自动同步成 Notion 画廊数据库:封面墙、按年份/热度/作者浏览,每日定时增量更新

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages