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
刷到一条 3 分钟的手作教程,想存下来当素材,划走就找不回来了;就算存进相册,水印还在,文件名还是一串数字。douyin-downloader 是一款开源免费的抖音无水印下载工具:粘个链接能下单条,给个创作者主页能批量搬回作品,内置去重和断点续传。从零开始跑通第一次无水印下载,还会覆盖整页备份、直播录制和评论采集。
半小时跑通:从安装到首次运行
前提是电脑装有 Python 3.8 及以上版本。先把代码克隆下来装好依赖,顺手把浏览器内核装上,后面接口遇到风控时会用它做浏览器兜底:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader cp config.example.yml config.yml pip install -r requirements.txt pip install playwright && python -m playwright install chromium成功的标志:终端没有红色报错,目录里多出一个config.yml。安装慢或报网络错误时,给 pip 命令加-i https://pypi.tuna.tsinghua.edu.cn/simple临时换国内镜像源。
接下来拿登录凭证。抖音不登录拿不到完整内容,但凭证不用你手动找,跑一条命令就行:
python -m tools.cookie_fetcher --config config.yml浏览器会自动弹出来,用手机扫码登录一次抖音,回到终端按回车,凭证(Cookie,登录凭证,扫码一次即写入本地)就存进配置文件里了,只保存在你自己机器上,具体抓取逻辑在 tools/cookie_fetcher.py 里可以看到。
⚠️ 凭证有效期有限,过期后重跑上面这条命令扫一次码即可,其余配置一律不用动。
然后打开config.yml,把示例link换成一条你想下载的视频链接,其余保持默认,最小可运行片段长这样:
link: - https://v.douyin.com/EXAMPLE123/ path: ./Downloaded/ # 保存目录 music: true # 顺带下背景音乐 cover: true # 顺带下封面图 json: true # 保存作品元数据最后运行:
python run.py -c config.yml几秒后终端里进度条走完、打印成功统计,打开Downloaded/目录,第一个无水印视频已经躺在里面,旁边是封面和data.json。所有字段的完整含义都能翻 config.example.yml 查。
不想碰命令行的话,同一套后端还有桌面版,粘个链接就能发起任务:
按任务来:从一条视频到整个主页
保存单条视频或图文笔记
把 App 分享出来的v.douyin.com/xxx短链直接贴进来就行,不用手动转长链,工具会自动解析。甚至不用改配置文件,用-u参数把链接追加到本次运行:
python run.py -c config.yml -u "https://v.douyin.com/xxxx/"跑完之后你手里多的是:
Downloaded/ └── 2024-02-07_教程标题_aweme_id/ ├── 2024-02-07_教程标题_aweme_id.mp4 # 无水印视频 ├── 2024-02-07_教程标题_aweme_id_cover.jpg └── 2024-02-07_教程标题_aweme_id_data.jsonmp4是主体,封面和 JSON 分别在cover、json开启时出现。单合集、单音乐也是同一套路:把合集或原声链接贴进去,整组抓取,音乐优先拿原声文件。
整页备份一个创作者主页
想把一个创作者的作品整体搬回本地,把链接换成创作者主页、指定模式即可。post是发布的作品,like是他点赞的,mix是合集,music是用过的音乐:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 50 # 只下最近 50 个,0 表示全部 increase: post: true # 跳过已下载过的作品跑完之后你手里多的是:作品按作者归档,一个作品一个文件夹,视频、封面、BGM、元数据整整齐齐:
Downloaded/ ├── download_manifest.jsonl └── 创作者昵称/ └── post/ └── 2024-02-07_作品标题_aweme_id/ ├── 2024-02-07_作品标题_aweme_id.mp4 ├── 2024-02-07_作品标题_aweme_id_cover.jpg ├── 2024-02-07_作品标题_aweme_id_music.mp3 └── 2024-02-07_作品标题_aweme_id_data.json顶层的download_manifest.jsonl是下载清单,每个作品一行 JSON,记录下载状态,方便后续核对。去重发生在两层:跨模式重叠的作品不会下第二遍;increase配合本地 SQLite 小数据库(记录作品 ID)让重跑同一创作者时自动跳过已有作品。登录状态下还能用collect/collectmix把自己账号的收藏夹整体搬走。只想按时间截取一段的话:
start_time: "2024-06-01" end_time: "2024-06-30"文件名不是写死的,filename_template和folder_template里可以用{date}、{title}、{id}、{author}、{year}、{month}、{day}等变量自由组合,但模板里必须包含{id}防止重名覆盖。各模式的具体抓取策略实现在 core/user_modes/ 目录里,想改行为可以从这里下手。
直播回放录制与断点续传
想留住主播的直播回放,但人没法全程守在屏幕前:把直播间链接交给工具,它替你挂机录着。
link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 0 = 一直录到主播下播跑完之后你手里多的是:录像存在Downloaded/{作者}/live/下,旁边附带一份*_room.json直播间元数据快照。主播下播、断网或者你按 Ctrl+C 中断,已录制的部分都会保留,不浪费。
批量任务里的断点续传是同一套机制:内置完整性校验,文件不完整会自动清理重取,再次运行同一命令只补缺失部分,不用从头来。
评论采集与元数据导出
想分析某个作品下用户在讨论什么,一条条截图太原始。打开评论采集开关,每个作品会自动多出一份结构化 JSON,二级回复都在,直接丢给脚本分析:
comments: enabled: true include_replies: true # 连二级回复一起抓 max_comments: 500 # 0 = 不限跑完之后你手里多的是:
2024-02-07_作品标题_aweme_id/ └── 2024-02-07_作品标题_aweme_id_comments.json不追特定博主、就想看今天抖音在聊什么,或者按关键词收作品做选题,还有两条现成命令。前者导出热搜榜前 30 条,后者导出与"猫咪"相关的 100 个作品,都落成 JSONL,分别放在hot_board/和search/目录里:
python run.py --hot-board 30 -p ./Downloaded python run.py --search "猫咪" --search-max 100 -p ./Downloaded高频配置项速查
前文涉及的高频字段,加上几个常用的,集中整理在这一张表里。
| 字段名 | 默认值 | 一句话说明 | 所属分组 |
|---|---|---|---|
link | 必填 | 抖音链接,单条或创作者主页 | 下载行为 |
mode | post | 批量模式:post/like/mix/music/collect | 下载行为 |
number | 全 0 | 各模式下载数量,0 表示不限 | 下载行为 |
start_time/end_time | "" | 按日期截取,YYYY-MM-DD | 下载行为 |
increase | 各模式true | 增量开关,跳过已下载作品 | 下载行为 |
database | true | 用本地 SQLite 记录下载历史 | 下载行为 |
video_quality | highest | 画质:original/highest/1080p 等 | 下载行为 |
download_pinned | false | 是否包含置顶作品 | 下载行为 |
path | ./Downloaded/ | 保存目录 | 输出与命名 |
video/music/cover/json | true/false/false/false | 各类产物的开关 | 输出与命名 |
folderstyle | true | 是否按作品建独立文件夹 | 输出与命名 |
filename_template | {date}_{title}_{id} | 文件名模板,必须含{id} | 输出与命名 |
folder_template | {date}_{title}_{id} | 目录名模板 | 输出与命名 |
author_dir | nickname | 作者目录命名:nickname/sec_uid | 输出与命名 |
redownload_missing_files | true | 主文件缺失时重新下载 | 输出与命名 |
thread | 5 | 并发下载数 | 容错与性能 |
retry_times | 3 | 单任务失败重试次数 | 容错与性能 |
rate_limit | 2 | 请求间隔(秒) | 容错与性能 |
browser_fallback.enabled | true | 接口失败时浏览器兜底开关 | 容错与性能 |
browser_fallback.headless | false | 浏览器是否无头运行 | 容错与性能 |
comments.enabled | false | 评论采集,输出*_comments.json | 扩展开关 |
live.max_duration_seconds | 0 | 录制时长上限,0 表示录到流结束 | 扩展开关 |
transcript.enabled | false | 视频语音转写 | 扩展开关 |
notifications.enabled | false | 下载完成通知推送 | 扩展开关 |
server.max_jobs | 500 | REST 服务任务上限 | 扩展开关 |
跑不通时的快速排查
突然出现 403 Forbidden,或提示未登录。 最可能原因:Cookie 过期,最高频的一种。 修复:python -m tools.cookie_fetcher --config config.yml,扫一次码解决。
主页明明上百个作品,只抓到二三十条。 最可能原因:翻页触发了风控。 修复:确认browser_fallback.enabled: true且headless: false,弹窗浏览器里手动完成验证,别急着关窗口。
下载到一半断了,担心要全部重来。 最可能原因:不需要担心,这是正常情况。 修复:重跑python run.py -c config.yml,完整性校验只补缺失部分。
批量下载时内存、流量占用明显偏高。 最可能原因:并发开太大。 修复:改成thread: 3,按 50~100 个作品分批执行,开跑前先确认磁盘余量。
同一个作品被下载了两遍。 最可能原因:增量开关没开。 修复:确认database: true,且对应的increase模式是true。
锦上添花的扩展能力
这些能力都不是必须完成的步骤,用到了再开。
- REST API 服务模式:想把它嵌进自己的自动化脚本时用。
pip install fastapi uvicorn之后运行python run.py --serve --serve-port 8000,通过接口提交下载任务、查询状态,服务逻辑在 server/ 目录里。 - 完成通知推送:
notifications.providers支持 Bark、Telegram 和企业微信 Webhook,长任务跑完手机立刻知道结果。 - 视频语音转写:
transcript.enabled: true并提供 OpenAI Key 后,每个视频生成xxx.transcript.txt和xxx.transcript.json,把视频内容变成可检索的文字。 - 桌面客户端:同一套后端,粘贴链接即可开始下载,关注列表同步、进度可视化,适合不想碰命令行的人。
第一次用的人,从单条保存那条短链开始,先把"克隆—扫码—配置—运行"整条链路走一遍。已经跑通的人,把database和increase两个开关打开,让整页备份按增量跑起来。抖音上的内容随时可能下架,把真正在意的东西稳妥留在本地,才是最踏实的收藏方式。
【免费下载链接】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),仅供参考