douyin-downloader 实战:一次配置,抖音作品批量下载长期自动同步
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
douyin-downloader 是跑在本地的抖音视频批量下载工具:贴一个博主主页链接,就能把作品、封面、背景音乐整批归档进硬盘,全程数据不经第三方。适合想给关注列表建一份私人内容库的新手。
📥 第一次:从克隆仓库到第一批文件
这一章按时间顺序走完整个流程:装环境、拿登录态、写配置、跑任务、验结果。
先确认 Python 版本在 3.9 以上(运行python --version查看),然后克隆仓库、装依赖,顺手把示例配置复制一份:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader python -m pip install -r requirements.txt cp config.example.yml config.yml接下来是新手最容易卡住的一环:登录态。抖音的多数接口要带一份叫 Cookie 的凭证才能调通,你可以把它理解成"已登录"的通行令牌。项目自带的 Cookie 提取脚本 会弹出一个浏览器窗口,你扫码登录一次,它就自动把 Cookie 存到本地并写回配置,不会上传:
python -m tools.cookie_fetcher --config config.yml不想装浏览器组件的话,也可以从浏览器 DevTools 里手动复制 Cookie,粘贴进config.yml的cookies字段,两种写法都能识别。
然后编辑config.yml,最简版本长这样,改两行就能跑:
link: - https://www.douyin.com/user/YOUR_SEC_UID # 换成目标博主主页 path: ./Downloaded/ # 保存目录,不存在会自动创建 number: post: 1 # 先下 1 条验证,没问题再改成 0(不限) thread: 5 # 并发线程数link支持主页、单条视频、合集链接,可以写多条。保存配置后执行:
python run.py -c config.yml跑完后打开Downloaded/验收。文件按作者名/post/发布日期_标题_作品ID/三层组织,每个作品一个独立文件夹:视频是 mp4,打开封面、音乐、JSON 开关时还会多对应的 cover.jpg、music.mp3 和 data.json。两条同名作品靠文件夹名里的作品 ID 区分,不会互相覆盖。下图是项目桌面版的抖音选项页,CLI 与它共用同一套归档与去重逻辑:
常用配置字段速查
配置项不少,日常只用得着下面这几行:
| 字段 | 作用 | 建议值 |
|---|---|---|
link | 要处理的链接:主页、单条视频、合集都认 | 整站备份就填主页链接 |
path | 保存目录,不存在会自动创建 | 指向一块专门的备份盘 |
mode | 主页链接时选内容类型(作品/喜欢/合集) | 默认post |
number.post | 单个主页最多下几条,0 表示不限 | 先设 1~5 验证,再改 0 |
increase.post | 增量开关:跳过已下载的作品 | 长期备份设true |
redownload_missing_files | 增量时磁盘文件丢失是否重新下载 | 保持默认true |
start_time/end_time | 按发布日期过滤,格式YYYY-MM-DD | 用范围控制磁盘占用 |
thread | 并发线程数,即同时下载几条 | 默认 5 |
retry_times | 单条失败后的自动重试次数 | 3,网络差可调高 |
database | 是否把下载记录写进本地 SQLite 库 | 保持true |
📈 第二次:只补新内容
全量备份跑完,日常只剩"补新"这一件事。做法是把increase.post保持为true,然后重跑同一条命令。
增量下载的判断依据是磁盘上的主文件:本地已有非空视频就跳过,文件缺失或大小为 0 会重新下载,由redownload_missing_files控制。注意它看的是文件而不是数据库,所以想整批重下时,把increase.post改成false即可,不必清库。
与此同时,database: true会把每条作品的作者、发布时间、保存路径写进本地 SQLite 库dy_downloader.db,每次任务还追加一条下载历史。"我到底存过哪些作品"从此一条查询就能答,不用翻文件夹。
全量跑完之后的日常,就只剩这一步。
🕘 长期:让它自己跑
定时任务
macOS 和 Linux 上给 crontab 加一行,每天自动跑:
0 2 * * * cd /path/to/douyin-downloader && python run.py -c config.yml配合增量开关,凌晨只补新发布的作品,早上看结果就行。
完成通知
大任务不必守在屏幕前。config.yml里的notifications段打开后,任务成功或失败都会推送,providers支持 bark、telegram、webhook 三类渠道,具体写法看 config.example.yml 末尾的示例。
数据复用
把json: true打开后,每个作品目录会多一份 data.json:作者、发布时间、标题、标签都是结构化字段,直接导入表格或笔记软件就能做内容盘点。Downloaded/download_manifest.jsonl是追加式清单,每行一条作品记录,方便写脚本统计。下载历史都在本地 SQLite 里,随时可查。
避坑问答
现象:任务大面积失败,日志反复提示登录无效。原因:Cookie 缺失或已过期。 解决:重新运行python -m tools.cookie_fetcher --config config.yml让它重新抓取并写回,不要手改已有字段的拼写。
现象:主页有几百条,实际只下到几十条。原因:number.post没放开、时间范围截断了内容,或接口翻页受限。 解决:先核对number.post是否为 0、start_time/end_time是否过窄;仍不完整时保留browser_fallback.enabled: true,在弹出的浏览器里手动完成验证,让兜底方案补齐。
现象:两条同名作品只剩一个文件夹。原因:自定义命名模板时去掉了作品 ID,两条同标题作品写到了同一处。 解决:保持默认的filename_template和folderstyle: true,命名会自动带作品 ID,别手动简化。
现象:跑到一半报 no space,任务中断。原因:全量拉取体量大,且反复扫同一段范围。 解决:用start_time/end_time限定时间段,或把number.post调小分批;之后打开increase.post,后续运行只下增量。
现象:中途断网,成功了一半,需要整批重跑吗?原因:网络波动导致部分作品失败。 解决:不用重跑,工具按作品逐个落盘,直接再执行一次命令,已存在的文件会跳过;调高retry_times还能减少这类中断。
最后说清使用边界:这套下载能力只适合个人学习、内容备份和研究场景,请尊重创作者的版权与劳动成果,不要用于商业盈利或任何侵权用途。内容一旦离开平台,存储、使用都归你负责;合规地使用,工具才能用得长远。
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考