一行命令提取抖音视频原声,批量收集 BGM 素材: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
刷到一段反复出现的 BGM 却查不到歌名,或想把某位创作者主页里的原声全部存下来?这类需求正对应一个本地运行的抖音音乐下载工具:douyin-downloader 可直接获取作品附带的音频流,完成单条 BGM 下载与抖音原声提取,也能按作者主页批量下载抖音音乐,免费完成抖音背景音乐免费下载与归档。
工具画像:douyin-downloader 是什么
它是一个 Python 命令行下载器,围绕"把作品内容完整落到本地"设计:
- 不只是抽音频,也覆盖视频、图文、合集、收藏夹、直播流等类型,音频场景只是其中一类;
- 音频走作品自带的原声流,不做录屏转码,得到的 mp3 就是作品里播放的那一条;
- 文件按"作品发布时间"命名并分层存放(作者/模式/作品目录),重复运行靠 SQLite 数据库加本地文件双重去重跳过已下载项;
- 默认带并发、指数退避重试、每秒请求数限制,翻页受限时可启用浏览器兜底。
适合三类人:需要背景素材的短视频创作者、想长期保存某位创作者原声的听众、需要批量归档内容做研究或运营的团队。总体架构与数据落盘策略见 PROJECT_SUMMARY.md,完整参数表在 README.zh-CN.md。
最短上手路径:三步完成首次抖音音乐下载
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt第二步是 Cookie。访问抖音 API 需要登录态,推荐用内置脚本自动获取(需先装 playwright):
pip install playwright python -m playwright install chromium python -m tools.cookie_fetcher --config config.yml浏览器弹出并登录后回到终端按 Enter,Cookie 会自动写入配置。实现代码在 tools/cookie_fetcher.py。
第三步,准备一份最小配置并运行:
link: - https://www.douyin.com/video/7604129988555574538 path: ./Downloaded/ video: false music: truepython run.py -c config.ymlmusic: true表示保留原声(生成*_music.mp3),video: false表示不下载视频本体,只取音频。默认值定义在 config/default_config.py,缺省只存视频,做纯音乐下载时这两个开关要改。
同一后端也驱动了一个叫 Douzy 的桌面客户端,粘贴链接即可提交下载任务,适合不想碰命令行的场景:
能力地图:按使用场景挑下载方式
单条作品 BGM 提取:music 开关就够
除视频链接外,短链(https://v.douyin.com/...)可自动解析。如果已经拿到的是音乐链接(https://www.douyin.com/music/{music_id}),会优先取该音乐的原始音频文件,缺失时回退到使用这条音乐的首条作品。
批量下载抖音音乐:整页收集作者原声
把链接换成用户主页,并把mode设为music,即可按创作者维度收集:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - music number: music: 0 # 0 表示不限数量也可以同时开post/like/mix/music多个模式,同一个作品跨模式只下载一次。mode各策略的实现在 core/user_modes/。
收藏与喜欢:同步自己账号的 BGM 合集
collect/collectmix模式可抓取当前登录账号的收藏夹与收藏合集(入口链接为https://www.douyin.com/user/self?showTab=favorite_collection),只针对自己账号,且不能与其他模式混用。桌面版里这一页有图形化界面,可以按合集整体下载:
直播间音频录制:下播也不丢已录数据
live.douyin.com/{room_id}链接触发直播录制,FLV 流保存于Downloaded/{作者}/live/并附直播间元数据;主播下播、网络空闲或手动中断时,已写入的.tmp分片会自动提升为正式文件。HLS 源目前只保存 playlist,需要 ffmpeg 后处理。录制参数在配置的live节,属于实验性功能。
配置深水区:并发、时间筛选与增量
批量收集时真正需要调的参数不多,核心几项:
| 参数 | 作用 |
|---|---|
thread | 并发下载数,默认 5 |
rate_limit | 每秒请求上限,默认 2 |
retry_times | 失败重试次数,默认 3,指数退避 |
start_time/end_time | 按作品发布时间筛选,格式YYYY-MM-DD |
increase | 增量开关,配合database: true二次运行只补新作品 |
number.{mode} | 各模式数量上限,0 为不限 |
proxy | API 与媒体请求统一走代理 |
notifications | 完成后推送 Bark / Telegram / Webhook |
目录组织由folderstyle控制,文件与目录名默认是{date}_{title}_{id},其中的日期取作品发布时间而非下载时间,方便事后按时间线整理素材。批量任务跑完后的状态(成功数、失败项、打开目录)也可以在桌面版任务中心里查看和重试:
踩坑与排障:常见故障清单
- Cookie 失效、接口频繁 403:重跑一次
python -m tools.cookie_fetcher --config config.yml即可,无需改代码。 - 主页只能抓到约 20 条就停:属于翻页风控。确认
browser_fallback.enabled: true且headless: false,浏览器弹出后手动完成验证,验证期间不要关窗口。注意浏览器兜底目前只对post模式做过完整验证,like/mix/music主要依赖 API 正常分页。 - 想重下某条作品:去重是"数据库记录 + 本地文件"双通道,只删一边不一定会触发重下;稳妥做法是同时删掉
Downloaded/作者/{模式}/*_{aweme_id}/目录和dy_downloader.db中对应记录(README 里有现成的 sqlite3 语句)。 - 进度刷屏影响阅读:默认
progress.quiet_logs: true已在进度阶段静默日志,调试时才加-v或--show-warnings。 - 磁盘空间紧张:
video: true且批量跑音乐场景时体积会明显变大,纯收 BGM 记得关掉视频。
延伸与边界:定时任务、API 服务与版权红线
定时收集适合写进 crontab,例如每周日凌晨只补增量(increase开启时):
0 3 * * 0 cd /path/to/douyin-downloader && python run.py -c config.yml >> music_download.log 2>&1服务端集成方面,--serve可以把工具以 REST API 方式暴露(需另装 fastapi 与 uvicorn):POST /api/v1/download提交链接、GET /api/v1/jobs/{job_id}查进度,任务模型代码在 server/。代码结构上,core/ 负责下载主流程与策略,auth/ 管 Cookie 与 token,storage/ 管文件与数据库,control/ 管限速、重试和并发队列,按需深入即可。
边界也要说清楚:直播录制属实验性功能;收藏夹模式仅服务当前登录账号;平台接口策略变化可能导致功能暂时失效,这属于该品类工具的常态风险。最后,下载的原声与视频受平台版权保护,建议仅用于个人学习、研究与收藏,商业使用前取得相应授权——仓库的免责声明与 MIT 许可证见 LICENSE。
【免费下载链接】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),仅供参考