资讯详情

资讯详情

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你打开一个博主主页2000 条作品想把近半年的视频留在本地顺手还要评论和原声。手动一条条保存不现实裸奔脚本直接打接口翻个 20 条页就吃空响应。douyin-downloader 就是干这个的抖音批量下载工具给它一个主页链接它负责翻页、去重、限速、落盘撞上风控还能自动切真实浏览器兜底拿到的全程是无水印源覆盖视频、图文、合集和音乐。工作台界面左侧粘贴主页或作品链接即可发起下载右侧任务列表实时显示每个任务的状态同一套后端也驱动了这个桌面版 它能干什么单个作品下载视频、图文note、合集mix、音乐自动选无水印源作者主页批量抓取post/like/mix/music四种模式跨模式同作品不重复下短链v.douyin.com自动解析live.douyin.com房间链接可直接录直播SQLite 加本地文件名双重去重增量模式只抓新增作品start_time/end_time按发布时间过滤number.*给每种模式设数量上限可选能力按作品采评论、视频转写、Bark/Telegram/Webhook 通知、REST API 服务模式参数默认值说明thread5并发下载数命令行-t可临时覆盖retry_times3失败重试次数退避间隔 1s/2s/5sdatabasetrue开启去重库默认生成dy_downloader.dbvideo_qualityhighest画质档位original会额外探测上传原片browser_fallback.enabledtrue翻页被风控时启动浏览器、人工过验证码⏱️ 五分钟跑通首次任务前提是 Python 3.8每一步都是可以直接复制的命令git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml # 弹浏览器登录抖音后回终端按 Enter python run.py -c config.ymlcookie 那步会把登录态自动写进config.yml之后就不用再管。示例配置本身就带一条真实的主页链接且number.post: 1表示只下 1 条作品正好拿来试跑所以不用改任何内容就能直接执行最后一行。此时你应该看到终端出现 Rich 进度条当前目录下./Downloaded/里生成一个以作者名命名的子目录post/下是按日期_标题_作品ID命名的文件夹里面有.mp4和封面旁边还有download_manifest.jsonl记录本次结果。 它凭什么做到原理拆解限速为什么批量跑不封问题抖音按请求频率风控批量任务连发请求翻页翻到 20 条左右就吃空响应。方案rate_limiter.py 里的RateLimiter把所有请求串行化硬约束每秒最多 2 个且每次放行后再加一段 0~0.5 秒的随机抖动——间隔看起来像人点页面而不是机器定时调度async def acquire(self): async with self._lock: current time.time() time_since_last current - self.last_request if time_since_last self.min_interval: wait_time self.min_interval - time_since_last await asyncio.sleep(wait_time) # 抖动必须放在锁内下一个请求基于真实发送时刻等待 await asyncio.sleep(random.uniform(0, 0.5)) self.last_request time.time()路由一条入口怎么接住八种链接问题单视频、主页、合集、直播的数据结构和解析路径各不相同入口不该关心这些差异。方案url_parser.py 先把链接归类成url_typevideo/user/collection/music/live……再由 downloader_factory.py 的DownloaderFactory.create()按类型实例化对应下载器限速器、重试器这些依赖统一注入if url_type video: return VideoDownloader(**common_args) elif url_type user: return UserDownloader(**common_args) elif url_type live: return LiveDownloader(**common_args) # ...collection 走 MixDownloadermusic 走 MusicDownloader想接新内容类型就是加一个分支加一个下载器子类入口和主循环不用动。去重为什么跑第二遍不重下问题批量任务隔天再跑已下载的几百条又下一遍。方案是双保险database.py 的is_downloaded(aweme_id)查库同时BaseDownloader扫本地文件名——命名模板强制包含{id}变量文件名里就带着作品 ID所以即使数据库丢了本地文件依然拦得住重复下载。两边都命中才跳过任何一边漏记都不会浪费带宽。 按场景配参数场景一定时抓某创作者的全部新作品link: - https://www.douyin.com/user/MS4wLjABAAAA6O7EZyfDRYXxJrUTpf91K3tmB4rBROkAw-nYMfld8ss mode: - post number: post: 0 # 0 不限量定时任务靠时间条件兜底而不是条数 start_time: 2026-03-01 # 按发布时间划死边界太老的内容没有存档价值 increase: post: true # 只抓上次之后的新作品旧的全部跳过 thread: 3 # 低于默认 5夜间无人值守时稳定比速度重要 database: true # 增量去重依赖库里记录关掉等于每次全量 video_quality: highest # 定时任务不追原画省流量也省磁盘把它挂进 crontab每天执行一次python run.py -c config.yml每次只拉新作品下过的自动跳过磁盘里的内容随天数单调增长。场景二单作品评论和全量元数据入库分析link: - https://www.douyin.com/video/7604129988555574538 json: true # 存原始 JSON结构化字段留着给后续分析 cover: true # 封面一起带走做素材时能对上画面 comments: enabled: true include_replies: true # 二级回复也抓观点数据完整但请求量翻倍 max_comments: 500 # 封顶防止爆款作品把请求量打爆 thread: 2 # 单作品任务低并发就够同时压低风控概率跑完后作品目录里会多出*_comments.json和*_data.json两个文件都是标准 JSON可以直接喂给脚本做统计。⚠️ 高频坑与修法主页下载停在 20 条左右你看到的现象进度条卡住日志里页面返回空。根因一句话翻页接口触发风控接口不再给新数据。修复确认配置里browser_fallback.enabled: true且headless: false必须可见窗口弹出来的验证码要人点然后重跑python run.py -c config.yml过完验证别关窗口已下载的部分会被增量跳过。想重新下载某条作品却被跳过你看到的现象文件明明删了重跑还是显示已存在跳过。根因一句话库记录和文件名双重判定只动一边不一定生效。排查/修复先把该作品的库记录清掉再确认本地文件已删两者都干净才会重下sqlite3 dy_downloader.db DELETE FROM aweme WHERE aweme_id 7604129988555574538;某天起请求突然全返回空你看到的现象之前一直正常突然视频 404、接口空数据。根因一句话cookie 里的 msToken/ttwid 有有效期过期后请求失去身份。修复命令python -m tools.cookie_fetcher --config config.yml登录完按 Enter新 cookie 自动写回config.yml无需手工搬。 往哪延伸想接新内容类型照 downloader_factory.py 的模式加一个分支再写一个继承BaseDownloader的子类分页、重试、去重全是基类白送的。想让团队共用下载服务pip install fastapi uvicorn后执行python run.py --serve --serve-port 8000POST/api/v1/download提交 URL、GET/api/v1/jobs/{job_id}查进度接口实现在 server/app.py。想调画质策略或去重口径多档码率挑选和原画探测集中在 downloader_base.py去重判定在 storage/database.py 的is_downloaded两处都配了独立测试改完跑python -m pytest -q验证。桌面版任务中心同一个后端逻辑也支持可视化管理——查看每个任务的结果、对失败项单独重试、一键打开输出目录douyin-downloader 是一个能在生产里稳定跑的抖音批量下载工具单作品和主页批量共用同一套引擎。问题和建议走项目 Issue代码改动提 PR架构取舍可以看docs/superpowers/specs/里的设计文档。【免费下载链接】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),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →