抖音批量下载工具 douyin-downloader:从安装到深度定制的一次完整上手
抖音批量下载工具 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周五晚上十点剪辑师小林接到一个急活客户要在 48 小时内交付一条美食盘点视频素材是某位博主过去半年发布的 120 条作品。他原以为得一条条复制链接、再找网页去水印干到天亮都未必收得完结果用抖音批量下载工具 douyin-downloader 配置了一次半小时后 120 条无水印素材已经按博主、按日期整整齐齐躺在硬盘里。这篇文章不打算按痛点罗列—解决方案的套路写而是沿着小林这次从零上手的完整旅程来展开先看这工具能干什么再走一遍安装、第一次下载、批量下载接着聊它怎么应对风控和断网最后讲如何按自己的习惯深度定制。你读完就能照着走完一遍也能明白每个配置项背后是什么逻辑。第一章 先看它到底能干什么一张功能地图douyin-downloader 本质上是一个链接进来、文件出去的转换器你给它一个抖音链接它把对应的内容解析出来下载到本地。关键在于它支持的链接类型覆盖了抖音几乎所有的内容形态你粘贴的链接下载到的内容/video/{id}单个视频无水印源优先/note/{id}、/gallery/{id}单个图文含多图/collection/{id}、/mix/{id}整个合集/music/{id}音乐原声文件/user/{sec_uid}作者主页批量下载发布/喜欢/合集/音乐live.douyin.com/{房间号}直播录制FLV/HLSv.douyin.com/...短链自动解析还原和单纯下载视频的工具不同它下载的是一套完整素材视频、封面、音乐、作者头像、JSON 元数据甚至是评论。项目里core/目录按内容类型拆成了多个下载器video_downloader.py、mix_downloader.py、music_downloader.py、live_downloader.py等职责分明这也是它功能面广却不乱的原因。桌面版的主界面把粘贴链接—检测内容—选择下载类型压缩成了三步。不过命令行版才是这个项目的完全体接下来我们用命令行走一遍完整流程。第二章 三步完成 douyin-downloader 环境配置小林的第一次上手只用了三个命令。下面这段代码解决把项目代码和环境准备好的问题git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt如果你打算用到浏览器兜底或自动获取 Cookie 的能力再多装一个 Playwright 浏览器内核pip install playwright python -m playwright install chromium环境就绪后先复制一份示例配置再改。这段代码解决生成一份可以编辑的配置文件的问题cp config.example.yml config.yml最后一步是关键中的关键抖音的接口需要登录态也就是 Cookie。项目推荐用自动方式获取这段代码解决自动登录抖音并把 Cookie 写进配置的问题python -m tools.cookie_fetcher --config config.yml运行后会弹出浏览器窗口你正常扫码登录回到终端按一下回车程序就把 Cookie 写进config.yml了。这一步做了后面所有下载都不会再碰未登录的墙。第三章 把第一个链接交给它从单条到批量小林的第一个测试链接是博主主页。先看最小可用的配置长什么样这段配置解决指定下载谁的哪些内容、存到哪里的问题link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 作者主页支持多个链接 path: ./Downloaded/ # 保存目录 mode: - post # post发布作品可再加 like/mix/music number: post: 50 # 下载条数0 表示不限 thread: 5 # 并发数 retry_times: 3 # 失败重试次数 database: true # 开启 SQLite 去重然后运行python run.py -c config.yml终端里会看到逐条作品的进度条每条视频下载完成后状态变绿。小林这次下的是 50 条用时不到十分钟——如果手动操作光找到视频—复制链接—粘贴—下载—重命名这一套动作50 条就要折腾两三个小时。命令行也支持临时追加参数适合不常改的场景。这段命令解决不改配置文件、临时加一个链接并调整并发的问题python run.py -c config.yml \ -u https://www.douyin.com/video/7604129988555574538 \ -t 8 \ -p ./Downloaded到这里你可能已经能跑通日常下载了。但批量下载跑得多了会遇到两类很现实的问题翻页被风控、网络半路断掉。下一章就讲工具怎么处理这两件事。第四章 翻页被限制时如何让下载自动兜底小林第一次批量下载时就撞了墙一个作者主页只抓到 20 条就停了。这是抖音翻页风控的典型表现——接口在持续翻页时会要求验证。工具的处理方式是API 优先、浏览器兜底默认走官方接口速度最快一旦发现翻页受限自动拉起一个浏览器窗口你手动过一下滑块验证它接着往下翻。这段配置解决开启浏览器兜底并让它停在可见窗口的问题browser_fallback: enabled: true # 开启兜底 headless: false # 显示浏览器窗口方便手动过验证 max_scrolls: 240 # 最多滚动页数 idle_rounds: 8 # 连续无新内容几轮后停止 wait_timeout_seconds: 600另外两类下载到一半的问题也有对应机制失败重试默认按 1 秒、2 秒、5 秒的指数退避重试retry_times不是傻乎乎地立刻重来完整性校验下载完成后比对 Content-Length文件不完整会自动清理并重下不会留下一个播到一半就卡住的残废文件。在control/目录里可以找到这些机制的实现retry_handler.py、rate_limiter.py它们共同保证了批量任务在无人值守时也能跑完。第五章 用命名模板和数据库让文件各就各位素材下多了第二个问题就来了文件乱。小林第一天下完 50 条第二天再去看全是VID_2024xxx这种默认名根本分不清哪条是哪条。这个问题的解法是命名模板。这段配置解决让每个作品按作者和日期自动归档的问题folderstyle: true path: ./Downloaded/{author}/{year}-{month}/{date}_{title}_{aweme_id}/命名模板支持的变量有 15 个作者、日期、标题、作品 ID、合集名、清晰度等桌面版的设置页里可以直接点选命令行版写在path里即可。模板里的{aweme_id}是最重要的一环——它是每个作品的唯一编号写进目录名后天然防重名。与之配套的是 SQLite 去重。工具默认把下载记录写进dy_downloader.db下次运行时先查数据库、再查本地文件两头都对上才跳过。这意味着同一个链接、同一个作者主页重复跑几十次也不会重复下载。想要增量更新也很简单这段配置解决只下载上次之后新发布的作品的问题database: true database_path: dy_downloader.db increase: post: true # 只下载新发布的作品 like: true # 只下载新喜欢的作品 mix: true # 只下载合集里新增的内容下载历史本身也是数据资产可以随时查询。这段命令解决查看最近的下载记录的问题sqlite3 dy_downloader.db SELECT aweme_id, title, author_name, datetime(download_time, unixepoch, localtime) FROM aweme ORDER BY download_time DESC LIMIT 20;第六章 直播、评论、热搜把工具当内容采集器用小林的需求跑顺之后陆续发现了几个超出下载的用法。第一个是直播录制。这段配置解决定时录制一场直播并保留已录数据的问题link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 0 表示录到主播下播 chunk_size: 65536 idle_timeout_seconds: 30录制的 FLV 会存到Downloaded/{作者}/live/目录并附带一份*_room.json直播间元数据。主播下播、网络空闲或你按 CtrlC 中断时已录制的字节都会被保留下来——不会出现录了两小时一个 CtrlC 全没了的惨剧。第二个是评论采集。这段配置解决把作品的评论区也一并抓下来的问题comments: enabled: true include_replies: false # 设为 true 会多抓二级回复 max_comments: 500 # 0 表示不限量 page_size: 20抓取结果会生成{date}_{title}_{aweme_id}_comments.json和媒体文件放在同一个目录方便后续做舆情分析或内容复盘。第三个是热搜和搜索。这两条命令解决不下载视频、只导出榜单和搜索结果数据的问题python run.py --hot-board 30 -p ./Downloaded # 输出./Downloaded/hot_board/20260424_221530.jsonl python run.py --search 猫咪 --search-max 100 -p ./Downloaded # 输出./Downloaded/search/猫咪_20260424_221530.jsonl如果你想把下载能力集成进自己的系统它还提供 REST API 服务模式python run.py --serve --serve-port 8000通过POST /api/v1/download提交链接、GET /api/v1/jobs/{job_id}查询进度源码在server/目录。下载完成后还能推送到 Bark、Telegram 或 Webhook跑完一批素材手机立刻收到通知。第七章 不想敲命令桌面版同样能完成抖音批量下载命令行功能全但小林觉得日常维护素材时还是有个界面更直观。项目基于同一套后端做了桌面版主界面支持粘贴链接检测、同步关注列表、可视化的任务中心以及一个能按博主、关键词、时间筛选的作品档案。任务中心把每个任务的进行中/成功/失败数量列得清清楚楚右侧可以直接打开下载目录或查看详情。关注列表页则支持批量筛选从未下载过的博主一键把某位创作者的最新作品全部拉下来。不过要注意一点命令行版始终是功能最全的形态桌面版适合日常高频操作遇到需要精细调参命名模板、增量策略、代理设置的场景还是回到config.yml更顺手。两者共享同一套后端逻辑不冲突。结尾 回到小林的周五夜晚回到开头那个周五小林最终在周六中午就交了素材比截止时间提前了整整一天。他后来把config.yml里的increase.post: true打开每周跑一次增量更新那位博主的素材库从此自动保持最新再也没手动点过一条链接。如果你想复刻小林的这套工作流步骤很直接从https://gitcode.com/GitHub_Trending/do/douyin-downloader克隆项目按第二章的流程装环境、取 Cookie然后把你的链接写进config.example.yml复制出的那份配置里运行python run.py -c config.yml即可。遇到问题可以翻项目里的docs/目录和测试用例tests/下有 40 多个覆盖各模块的测试文件大多数边界情况都有对应的测试代码可以参照。最后说一句理性的提醒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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考