douyin-downloader 开源抖音下载工具全解析:把复制链接变成一条自动化批量下载流水线

📅 2026/8/20 11:02:01
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-downloaderdouyin-downloader 是一款开源的抖音批量下载工具面向需要长期收集、整理和备份抖音内容的个人创作者、内容运营与研究者。它通过命令行完成任务去水印下载、SQLite 去重、浏览器兜底等能力一应俱全核心价值在于让存视频这件事从一次次手动劳动变成一条可以反复运行的流水线。批量下载时终端里整齐排列的进度条就是这条流水线的实时仪表盘。为什么要把存视频当成一条流水线来做先想一个真实场景你关注了一位每两天更新一条作品的博主打算把他的内容全部留档。手动操作的话你每天要打开主页、逐条点进视频、等加载、找下载按钮、命名文件、拖进文件夹——一条视频两分钟一年下来就是几百次重复。这还没算那些更麻烦的类型想存某首音乐的原声、想备份整个合集、想连评论区一起带走。douyin-downloader 的出发点很简单把这些动作拆成标准工序由程序自动执行人只负责给原料和验收结果。它把下载当作一条生产流水线来设计而不是一堆零散脚本的拼凑——这一点从它的代码组织方式就能看出来。走进这条流水线核心工作流程与代码布局打开仓库重构后的 V2.0 主代码集中在douyin-downloader/子目录cli/、core/、storage/、utils/几个包把职责分得很清楚url_parser负责原料分拣识别你丢进来的链接是什么类型短链自动展开再路由到对应的处理策略core/user_modes/存放不同内容类型的下载策略post_strategy、like_strategy、mix_strategy、music_strategy、collect_strategy每种策略知道该调什么接口、拉多少页storage/database承担记账职责每次下载都写进 SQLite下次运行靠它判断这个作品存过没有control/里的 rate_limiter 和 retry_handler 是流水线的安全阀默认 2 请求/秒的限速失败后按 1s、2s、5s 指数退避重试这套分层不是摆设。当你同时跑作品 点赞 合集 音乐四种模式时解析层分拣、策略层执行、记账层去重各司其职同一个作品在四种模式下只会落地一次。第一次点火十分钟跑通第一个下载任务安装和启动都很直白。克隆仓库后进入 V2.0 主代码目录装依赖git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader/douyin-downloader pip install -r requirements.txt如果之后要用到浏览器兜底或自动获取 Cookie再补两个命令pip install playwright python -m playwright install chromium接着复制示例配置跑一下自动获取 Cookie 的脚本登录抖音后回到终端按回车配置就被自动写入了cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml然后放一个链接进去点火link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: - post number: post: 50python run.py -c config.yml第一次跑通后你会看到Downloaded/下按作者、按模式、按日期分好了目录。每一部作品都是一个独立文件夹视频本体优先无水印源、封面、原声音乐、JSON 元数据按需落位。命名规则由filename_template控制默认是{date}_{title}_{id}变量包括作者、日期、点赞数、评论数等嫌不够可以自己改。从下载一个到批量生产主页与多种内容类型下载器认识九种以上的链接形态/video/、/note/、/gallery/、/collection/、/mix/、/music/还有v.douyin.com短链。单条下载是它的基本功真正的生产模式在主页批量。把链接换成用户主页后mode决定这条流水线跑哪几档工序link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post # 作品 - like # 点赞 - mix # 合集 - music # 音乐原声 number: post: 0 # 0 表示全量 like: 0number控制各模式数量上限置 0 就是全量抓取。另一个常用的开关是increase开启后第二次运行只拉新增内容相当于给流水线装了只补货不重做的逻辑。如果你想备份自己账号的收藏夹把链接换成/user/self?showTabfavorite_collection用collect或collectmix模式即可注意这两种模式要单独使用不能和 post 等混跑。每条任务的实时状态、失败原因和重试记录都清晰可见方便你随时巡检。记账本与风控SQLite 去重、增量下载和浏览器兜底批量下载最怕两件事重复下载浪费流量以及翻页翻到一半被平台风控拦下。针对重复下载器做的是数据库 本地文件双重记账。SQLite 里的aweme表记录每个作品的下载时间与作者本地文件扫描时则通过文件名里的 aweme_id 识别。哪怕你把数据库删了只要文件还在它也能认出来不重下反过来数据库有记录但文件没了它会补下。想要强制重下一个作品把对应文件和数据库记录清掉即可。针对风控最典型的现象是只能抓到 20 条作品。这是翻页接口被限流的常见表现官方给的应对是浏览器兜底API 翻页受限时自动拉起浏览器模拟滚动并允许人工过验证码。相关开关在browser_fallback段browser_fallback: enabled: true headless: false # 非无头模式弹窗后手动完成验证 max_scrolls: 240验证码弹出来的时候手动点一下再放它继续跑通常就能把后面的页数补回来。Cookie 失效则简单粗暴——重新执行一次python -m tools.cookie_fetcher --config config.yml就好。下载之外评论采集、热搜搜索、转写与完成通知这条流水线的末端不只是文件。几个选配工序值得单独拿出来说评论采集。开启后每个作品旁会多出一份*_comments.json包含点赞数与二级回复适合做舆情分析或素材库标注comments: enabled: true include_replies: false max_comments: 500 page_size: 20热搜榜与关键词搜索。不想下载具体某个人可以先摸清现在什么火python run.py --hot-board 30 -p ./Downloaded python run.py --search 猫咪 --search-max 100 -p ./Downloaded两者都输出带时间戳的 JSONL 快照落盘在hot_board/和search/目录很适合做趋势追踪的底稿。视频转写。调用 OpenAI Transcriptions API 给视频生成文字稿启用后产出*.transcript.txt和*.transcript.jsontranscript: enabled: true model: gpt-4o-mini-transcribe response_formats: - txt - json api_key_env: OPENAI_API_KEY完成通知。长任务跑完自动推送 Bark / Telegram / Webhook人不用一直盯着终端notifications: enabled: true on_success: true on_failure: true providers: - type: bark url: https://api.day.app/YOUR_DEVICE_KEY进阶玩法直播录制与 REST API 服务模式流水线还能接两个平时想不到的活。一是直播录制。把链接换成https://live.douyin.com/{room_id}配置live段即可录制 FLV/HLS 流。主播下播、网络空闲或手动 CtrlC 中断时已录制的字节会被保留下来不会白忙一场link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 0 表示录到主播下播 chunk_size: 65536 idle_timeout_seconds: 30二是REST API 服务模式。安装fastapi和uvicorn后一条命令把下载能力变成 HTTP 接口pip install fastapi uvicorn python run.py --serve --serve-port 8000接口只有四个POST /api/v1/download提交链接返回 job_idGET /api/v1/jobs/{job_id}查询状态GET /api/v1/jobs列出最近任务GET /api/v1/health做健康检查。完成态的任务会按 TTL默认 24 小时自动清理运行中的任务永不被裁掉。这意味着你可以把下载器嵌进自己的采集系统、定时任务甚至微信群机器人而不必每次都手动敲命令。把它变成你的日常工具回看整个设计douyin-downloader 最难得的不是某个单项功能而是把解析、抓取、落盘、记账、重试、兜底这些琐碎环节真正串成了流水线。你的日常操作从每天手动存几条变成写一次配置之后定期跑增量。开始动手的顺序也很简单clone 下来 → 装依赖 → 自动获取一次 Cookie → 用config.example.yml做底子改出你自己的配置 → 先拿一个小主页跑通 → 再逐步加上 like/mix/music、评论采集、增量开关。遇到抓取不全先开浏览器兜底遇到重复下载先查dy_downloader.db剩下的大部分问题官方 README 和config.example.yml里的注释都能回答你。工具只是把重复交给机器判断和取舍始终在你手里。用它之前记得读一眼仓库里的免责声明在合法合规的前提下让这条流水线替你省下那些本该花在更有价值事情上的时间。【免费下载链接】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),仅供参考