douyin-downloader:抖音批量下载,从5小时压到10分钟
【免费下载链接】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
为了存下100条抖音视频,你得逐条打开页面、等播放器加载、右键保存、再改名归档,5个小时就这么过去了。douyin-downloader 是一款抖音批量下载工具,支持视频、图集、合集、原声音乐与创作者主页的无水印批量下载,能把同样的活压缩到10分钟左右。
手工收集败在哪:时间、质量、管理三个瓶颈
| 瓶颈 | 手工/在线解析的典型表现 | 本工具的破解方式 |
|---|---|---|
| 时间 | 逐条打开链接,零并发,全靠人肉等加载 | 配置文件一次提交多个链接,thread线程并发(默认5),100条约10分钟 |
| 质量 | 二次解析站点压缩画质,文件下载到一半就断 | 直接请求源流,断点续传+自动重试3次,文件完整可播 |
| 管理 | 文件名随机、重复下载、素材靠回忆找 | SQLitedata.db记录去重,时间戳_标题文件夹自动归档,元数据落盘_result.json |
表里"10分钟"的算法:工具侧5线程并发,单个作品的文件落盘加封面、原声获取约10~20秒,100个÷5线程=20个串行批次×20秒≈7分钟,加上按35条/页翻页的接口请求2~3分钟;手工侧按每条视频3分钟(打开、等加载、保存、改名)×100条=5小时。5小时÷10分钟≈30倍。
它不是一段单点解析脚本,而是分层清晰的方案:apiproxy/douyin/负责接口请求与下载主流程,apiproxy/douyin/core/负责限速、队列与进度统计,apiproxy/douyin/strategies/管理接口、浏览器与重试三类策略。
🚀 怎么把第一次批量下载任务跑起来
第一步:拿到项目并装依赖。一条命令克隆,一条命令装好运行所需的全部库:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt第二步:获取Cookie。首次使用必须登录一次,程序会拉起浏览器,扫码登录抖音后回到终端:
python cookie_extractor.py自动方式拿不到时,从浏览器按F12打开开发者工具,在任意抖音请求头里复制整串Cookie,贴进config.yml的cookies字段(键值对形式,如msToken: xxx)。
第三步:写最小配置。把项目里的config.example.yml复制为config.yml,只保留这几项:
link: - https://www.douyin.com/user/你的sec_uid path: ./Downloaded/ mode: - post number: post: 10 thread: 5 database: true第四步:运行。不需要任何参数,程序自动读取同目录的config.yml:
python DouYinCommand.py第五步:核对结果。运行结束后看三处:Downloaded/user_昵称_sec_uid/post/下每个作品一个独立文件夹,命名是"发布时间戳_标题",里面有_video.mp4、_cover.jpeg、_music_标题.mp3和_result.json;终端弹出"下载完成 成功: 10/10"的统计面板;项目根目录生成data.db,记下了本次下载历史,为增量更新做准备。
三个真实场景:竞品监控、案例库、BGM收集
内容运营:如何只拉竞品的新增作品
需求是每天盯几个竞品博主,只下新内容、不重复劳动。把多个主页放进link,并开启增量:
link: - https://www.douyin.com/user/竞品A的sec_uid - https://www.douyin.com/user/竞品B的sec_uid mode: - post increase: post: true database: trueincrease靠data.db记住"哪些下过",第二次运行只抓新作品,每天几分钟跑完,素材自动落到各自博主的文件夹里,省掉手动归档。
教培机构:如何把案例库收敛到三个月内的50条
需求是只要时间线清晰、数量可控的素材,用时间窗加数量上限一步到位:
mode: - post number: post: 50 start_time: "2026-05-01" end_time: "now"end_time写now表示到今天为止。配合默认的folderstyle: true,每个作品一个文件夹,文件夹名自带时间戳,案例库天然就是一条时间线,检索效率远高于散落一地的文件。
音乐人:如何收齐某条原声下的全部作品
需求是收集使用某条BGM的热门作品做编曲参考,直接填原声页链接即可:
link: - https://www.douyin.com/music/1234567890 number: music: 100程序识别出这是音乐链接后,按35条/页逐页抓取使用该原声的作品,统一存进Downloaded/music_标题_id/。
四个值得打开的进阶能力
- 元数据与附件随主体一起落盘。每个作品文件夹默认连封面、原声、作者头像和完整元数据JSON一起保存,复盘素材时不用再回网页翻:
folderstyle: true json: true cover: true music: true- 断点续传与自动重试。网络中断不用从头再来:失败自动重试,V2.0 的
retry_times可调,重试之间按1秒/2秒/5秒递增等待,已下载的字节通过 Range 头续传:
retry_times: 3- 并发一行可调。默认5线程,网络稳定时可以提到8,估算下来100条能从约10分钟再省3分钟左右:
thread: 8- V2.0单命令入口。只下某个博主主页时连配置都不用写,
downloader.py支持自动获取Cookie:
python downloader.py -u "https://www.douyin.com/user/你的sec_uid" --auto-cookie📌 高频问题速查:先判断根因再动手
现象一:想重下某个作品,程序提示"跳过已存在"就不动了
根因:程序用"SQLite记录 + 本地文件"双重去重,两个条件都缺失才会重新下载。这是保护机制,不是坏掉了。解法:删掉该作品的文件夹,并清理data.db中对应记录(在t_user_post表按作品ID定位),两边都清掉后才会重下。只删文件、或只清数据库记录,单独操作都不会生效。
现象二:提示获取作品信息失败,或返回数据为空
根因:Cookie 过期,接口不再返回完整数据,这是常态。解法:重跑python cookie_extractor.py刷新一次,或把浏览器里新复制的整串Cookie贴进config.yml的cookies字段再运行。
现象三:大文件下载中途频繁断掉
根因:网络波动导致连接中断。这个工具对此有兜底:每次失败自动重试3次,且下一轮从已下载的字节继续(断点续传),大文件不必重新排队下载;若仍反复失败,优先检查网络环境。
项目结构与参与方式
两个入口分工明确:DouYinCommand.py是V1.0稳定版,适合单作品与配置文件驱动的批量任务;downloader.py是V2.0,适合主页批量并带自动Cookie。apiproxy/tiktok/目录已预留,后续平台扩展可以留意。想参与贡献,可以从apiproxy/douyin/strategies/的下载策略改起,也可以提交你在使用中遇到的问题。
最后:回到那30倍的差距
手工5小时对工具10分钟,这个30倍不是某一次运气,而是并发、增量与双重去重每天都能复现的结果。它的价值可以浓缩为四点:
- 效率:5线程并发加
increase增量,重复运行只抓新作品; - 完整:源流直连加断点续传加重试,文件可直接投入使用;
- 管理:
data.db去重加时间戳文件夹加_result.json元数据,历史可查、可追溯; - 稳定:限速、指数退避重试、双重去重,长任务基本不用盯屏。
下一步很具体:克隆仓库、装好依赖,先下10条作品走一遍完整流程,跑通后再把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),仅供参考