抖音批量下载工具 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 这个开源抖音批量下载工具,就是来帮你把这些遗憾,变成硬盘里整整齐齐的本地资产。这篇完整上手教程,会带你从装好工具一路走到"素材库自由"。
先花半分钟,看清它到底能替你存下什么
在动手之前,先用一句话认识它的每一项能力:
- 单个下载:视频、图文、合集、音乐都能存,
v.douyin.com短链也会自动解析成真实链接; - 批量下载:给一个作者主页,就能把他的作品、点赞、合集、原声一次拉完,还能下自己收藏夹里的内容;
- 直播录制:支持 FLV / HLS 两种流格式,主播中途下播、网络断开甚至你按 Ctrl+C,已录的数据都会被保留;
- 智能去重:SQLite 数据库加本地文件双重检查,同一个作品换哪种模式都不会重复入库;
- 增量下载:开启后只补新内容,像给资源库装了个"记账本";
- 贴心兜底:翻页被风控时自动唤起浏览器,人工过一下验证码就能继续;
- 更多玩法:热搜榜导出、关键词搜索、完成推送通知、REST API 接口、视频转写,还有桌面版。
能力很全,但别急着记。接下来我用"从下载到整理"的一条完整工作流,把最常用的部分逐个讲透,你跟着走一遍就全明白了。
从零到能跑:三条命令装好环境
项目对系统几乎没要求,Windows、macOS、Linux 都能跑,只要 Python 3.8 及以上。先把它克隆下来,进入主程序目录,装好依赖:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader # 拉取项目代码 cd douyin-downloader/douyin-downloader # 主程序在这个子目录里 pip install -r requirements.txt # 安装全部依赖如果你希望后面遇到翻页风控时能用浏览器兜底、或者用自动方式获取 Cookie,再补装一个 Playwright:
pip install playwright # 安装浏览器控制库 python -m playwright install chromium # 下载 Chromium 浏览器内核这一步不是必须的,可以先用起来,等真用得上再回头装。最后复制一份配置文件,后面所有个性化设置都写在这里:
cp config.example.yml config.yml # 生成属于你自己的配置环境到此就绪,但先别急着跑,还有最关键的一关——认证。
认证这一关:从"手抄 Cookie"变成"登录一次"
很多抖音下载工具劝退用户的地方,就是手动复制 Cookie:打开浏览器开发者工具,在一堆请求头里翻半天,还容易复制不全。douyin-downloader 把这件事做成了傻瓜式操作:
python -m tools.cookie_fetcher --config config.yml # 自动获取认证信息并写入配置运行后会自动弹出一个浏览器窗口,你像平时一样登录一次抖音,回到终端按一下回车,程序就把认证信息写进 config.yml 了。全程不用碰任何技术细节,几十秒搞定。
第一单生意:把一条视频收进硬盘
工具装好了,认证也过了,现在从最简单的开始——下载一条你刚刷到的视频:
python run.py -c config.yml -u "https://www.douyin.com/video/1234567890123456789"-c指定配置文件,-u后面跟你想保存的链接。跑完后,程序会在下载目录里为这个作品建一个独立文件夹,里面除了视频本体,还有封面图、背景音乐、作者头像和一份 JSON 元数据,方便你以后回溯这个作品的完整信息:
Downloaded/ └── 作者名/ └── post/ └── 2024-02-07_作品标题_aweme_id/ ├── ..._cover.jpg # 封面图 ├── ..._music.mp3 # 背景音乐 ├── ..._avatar.jpg # 作者头像 ├── ..._data.json # 完整元数据 └── ...mp4 # 视频本体注意文件夹命名带着作品发布日期和标题,一眼就能认出内容。单条下载只是热身,真正的重头戏在下一幕。
换个链接,把整个博主主页搬走
手动保存是"点一个存一个",批量下载则是"一句话,抵别人存一年"。你只需要把配置里的链接换成博主的主页地址,再告诉它要下哪些内容:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 博主主页链接 mode: - post # 下载他发布的作品 - like # 下载他点赞过的作品 - mix # 下载他的合集 - music # 下载他用的原声 number: post: 50 # 下载 50 个发布作品;0 表示不限制,全部下载这段配置在做什么?mode决定"下载哪几类内容",number决定"每类最多下多少"。填好后运行python run.py -c config.yml,程序就会自动按作者名建目录,把作品、点赞、合集、音乐分门别类放好,默认 5 个线程并发下载,全程带进度条。
上图是批量下载进行中的真实样子:成百条视频排着队被拉下来,进度逐个刷到 100%。下载完它还会给出一份统计,告诉你这次共抓取了多少个作品、跳过了多少已存在的、总共花了多久:
"自动抓到 274 个作品、按时间范围过滤、已存在的直接跳过"——这种体验,手动整理给不了。
直播这类"过期不候"的内容,自己动手录
短视频可以事后下载,直播却不一样:结束就是结束,官方不一定有回放。知识分享、教学、赛事这类内容,错过一场可能再也补不回来。douyin-downloader 的直播录制功能,就是为这个场景准备的。在配置文件里加上直播链接和录制参数:
link: - https://live.douyin.com/123456789 # 直播间地址 live: max_duration_seconds: 3600 # 最多录 1 小时;0 表示录到主播下播 chunk_size: 65536 # 流分块大小,一般保持默认 idle_timeout_seconds: 30 # 流空闲 30 秒判定为结束运行后它会自动解析出直播流地址,支持 FLV 和 HLS 两种格式,还会顺手保存直播间标题、在线人数等信息快照。更贴心的是,就算主播中途下播、网络断开,或者你手动按 Ctrl+C 中断,已经录下的内容也会被保留,绝不会白录一场:
录好的文件存放在Downloaded/作者名/live/目录下,附带一份直播间元数据。到这里,你其实已经能覆盖"视频 + 博主主页 + 直播"三大内容形态了。但下载只是前半场,后半场同样重要——整理。
下载完不是终点,整理才是这台工具的主场
批量下载最怕什么?重复。同一个视频今天下过,明天换个模式又下一遍,硬盘白占空间,目录还乱成一团。douyin-downloader 用"数据库记录 + 本地文件扫描"双重检查来兜底:
database: true # 开启 SQLite 去重和历史记录 increase: post: true # 增量模式:只下载新发布的作品 like: true mix: true这段配置在做什么?database: true让每个作品的下载记录都落在本地数据库里,下次再遇到相同作品直接跳过;increase开启增量后,工具就像给你的资源库装了记账本——上次下到哪一集、哪些已经存过,它心里有数,下次只补新内容。
配合默认的规范化命名,每个作品独立一个文件夹、带日期和标题,你的素材库会一直保持清爽:
这种秩序感,手动整理是给不了的。想回顾下载历史也不用翻目录,一条 SQL 直接查:
sqlite3 dy_downloader.db "SELECT aweme_id, title, author_name FROM aweme ORDER BY download_time DESC LIMIT 20;"四个小开关,把工具调成你的专属管家
基础流程跑顺了,下面几个进阶配置能再省你不少事。
按时间筛选:只想存某段时间内的内容,加两行配置,范围之外的作品一概不碰:
start_time: "2024-01-01" # 只下载这个日期之后发布的作品 end_time: "2024-12-31" # 只下载这个日期之前发布的作品下载完成自动通知:批量下载动辄几十分钟,不用干等,跑完直接推送到手机:
notifications: enabled: true providers: - type: bark # 也支持 Telegram、企业微信、飞书、钉钉 Webhook url: https://api.day.app/YOUR_DEVICE_KEY热搜榜与关键词搜索:想追热点或找某一类内容,不用打开 App 慢慢翻,命令行直接拉:
python run.py --hot-board 30 # 拉取抖音热搜榜前 30 条 python run.py --search "猫咪" --search-max 100 # 搜索关键词相关内容结果会以 JSONL 文件导出,方便后续做数据分析或内容选题。
REST API 服务模式:把下载能力包装成 HTTP 接口,集成进自己的系统:
pip install fastapi uvicorn # 一次性可选依赖 python run.py --serve --serve-port 8000之后就能通过接口提交下载任务、查询任务状态,适合有自动化需求的进阶玩家。
不想敲命令?还有桌面版 Douzy 在等你
命令行适合自动化,但如果你只是偶尔下载几个视频,更想要"打开就能用"的体验,项目还基于同一套后端做了桌面版客户端 Douzy,目前处于内测期。粘贴链接、检测类型、勾选要下载的内容,点点鼠标就能完成:
下载过程中,任务进度、剩余时间、事件日志都可视化地摆在眼前,再也不用盯着黑底白字的终端:
历史任务也能在任务中心统一管理,查看详情、打开目录、删除记录都是点一下的事。命令行和桌面版共用一套内核,怎么顺手怎么来。
新手最容易踩的坑,提前帮你排掉
问:为什么只能抓到 20 条作品?这是抖音翻页风控的常见现象。解决办法是确认配置里browser_fallback.enabled: true且headless: false,浏览器窗口弹出后手动过一下验证码,别急着关窗口,程序会自己继续翻页。
问:Cookie 失效了怎么办?重新跑一次自动获取命令就行,几十秒搞定:
python -m tools.cookie_fetcher --config config.yml问:下载速度慢怎么优化?把配置里的thread从默认 5 调到 8 试试;另外尽量在网络状况好的时段下载,差异很明显。
问:想重新下载某个作品?工具靠"数据库记录 + 本地文件"双重判断是否跳过,要重下就得两边一起清理——删掉对应文件夹,再在数据库里删除这条记录。
更完整的配置说明,可以随时翻看仓库里的 README.zh-CN.md,每个配置项都有对应的解释。
现在就可以开始
工具本身不复杂,难的只是迈出第一步。你只需要做三件事:
- 克隆项目并安装依赖(就是开头那三条命令);
- 跑一次 Cookie 自动获取,完成身份认证;
- 挑一个链接,从单个视频下载开始,体验一把"一条命令收进硬盘"的痛快。
最后再叮嘱一句:下载能力归工具,版权归属归创作者。请把下载的内容用在个人学习、资料留存等正当用途上,遵守平台规则,尊重原作者。好的工具加上正确的使用方式,才能让这份便利长久地为你服务。
准备好了就动手吧。下一次,当你再刷到想保存的内容,或者重要的直播即将开场时,你不再是那个"手动复制、逐个保存"的人,而是有自己的工具、有自己的素材库的人。打开终端,敲下第一行命令,剩下的交给它——你的素材库,从今天开始。
【免费下载链接】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),仅供参考