Skip to content

Repository files navigation

DouK-Downloader Logo

DouK-Downloader

抖音、TikTok 与哔哩哔哩素材下载及数据采集工具

Python License Stars Issues

Important

本项目仅供技术研究、个人备份和已获授权的内容处理。请遵守平台服务条款、著作权规则及所在地法律法规,不得用于侵权、批量滥用或商业盗采。

项目简介

DouK-Downloader 提供统一的桌面图形界面,可直接粘贴分享文案或链接,完成抖音单个素材、抖音主页作品以及哔哩哔哩视频下载;同时保留关键词搜索、评论和账号信息采集等能力。

本分支重点增强了以下体验:

  • 重新设计的桌面 GUI,统一色彩、层级、按钮和状态反馈。
  • 单个抖音素材下载,支持视频、图集、实况及可选封面。
  • 哔哩哔哩视频下载,支持画质选择和音视频自动合并。
  • 根据实际目标文件判重:文件被删除后可以重新下载。
  • 主页批量下载支持账号选择、作品预览和分类下载。
  • 运行日志、任务状态、下载目录和登录状态集中展示。

界面预览

单个素材下载

单个素材下载界面

主页作品批量下载

主页作品批量下载界面

功能一览

模块 能力
单个素材 自动识别完整分享文案中的抖音或哔哩哔哩链接
抖音下载 视频、图集、实况、静态封面,无水印媒体下载
哔哩哔哩下载 最佳画质、1080P、720P、480P、360P,自动合并 MP4
主页批量 多主页解析、作品统计、账号勾选、分类下载
搜索采集 按关键词、发布时间、时长、内容形式等条件采集
评论采集 多作品评论与回复采集,可限制页数
账号采集 批量采集抖音账号基础信息与统计数据
数据导出 CSV、XLSX、SQL 等格式
任务反馈 实时日志、状态栏、登录状态与结果路径展示

环境要求

  • Python 3.12
  • Windows 10/11、macOS 或 Linux
  • 可访问目标平台的网络环境
  • 抖音部分接口需要有效 Cookie
  • 哔哩哔哩高画质可能受账号权限、地区和视频本身清晰度限制

项目依赖中的 imageio-ffmpeg 会提供可用的 FFmpeg;哔哩哔哩音视频分离流会自动合并,无需手工处理。

快速开始

Windows

git clone https://github.com/wyg916/DouK-Downloader.git
cd DouK-Downloader

py -3.12 -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt

python gui_main.py

安装完成后也可以双击:

run_douk_downloader.bat

macOS / Linux

git clone https://github.com/wyg916/DouK-Downloader.git
cd DouK-Downloader

python3.12 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt

python gui_main.py

终端交互模式

需要使用原有完整终端菜单时:

python main.py

GUI 使用说明

1. 设置工作区

在顶部“工作区设置”中选择下载根目录。所有下载和采集结果都会保存到该目录或其子目录。

数据格式用于搜索、评论和账号信息导出,可选择:

  • xlsx
  • csv
  • sql

2. 登录或更新抖音 Cookie

点击“登录 / 更新抖音 Cookie”,按照程序提示完成登录。Cookie 只保存在本机运行目录的配置文件中。

Warning

Cookie 等同于登录凭证。不要截图分享,不要提交到 Git,不要发送给任何人。

3. 下载单个素材

切换到“单个素材”TAB,可直接粘贴 App 中复制的完整分享文案,例如:

复制打开抖音,看看这个作品…… https://v.douyin.com/example/

或直接粘贴:

https://www.bilibili.com/video/BVxxxxxxxxx

程序会自动提取 URL 并识别平台。

抖音选项:

  • 支持视频、图集和实况。
  • 可选择同时下载静态封面。
  • 单素材下载以目标目录中实际存在的文件为准进行判重。
  • 如果手工删除已下载文件,再次执行会重新下载。

哔哩哔哩选项:

  • 支持短链 b23.tv 和标准视频链接。
  • 可选择最佳画质或指定画质上限。
  • 自动选择目标画质以内的最佳视频流和音频流。
  • 下载完成后自动合并为 MP4。

4. 批量下载主页作品

切换到“主页批量”TAB:

  1. 粘贴一个或多个抖音主页链接。
  2. 点击“获取预览”。
  3. 查看作品数量和前 5 条作品摘要。
  4. 选择需要处理的账号。
  5. 勾选图集、视频、封面等类型。
  6. 点击“下载所选内容”。

“下载前清空账号文件夹”会覆盖该账号之前的本地结果,请谨慎使用。

5. 数据采集

  • “搜索采集”:填写关键词、页数和筛选条件。
  • “评论采集”:输入一个或多个作品链接,可采集评论回复。
  • “账号信息”:输入一个或多个主页链接,批量导出账号信息。

任务进度、警告和异常会显示在底部“运行日志”区域。

下载目录示例

实际目录会根据平台、账号和配置略有不同:

你选择的下载目录/
├─ Download/            # 抖音单个素材或作品
├─ Bilibili/            # 哔哩哔哩视频
├─ 账号昵称或账号标识/   # 主页批量下载
└─ 数据文件              # 搜索、评论、账号信息导出

隐私与安全

公开仓库不会包含以下本地内容:

  • config_simple.yml
  • cookies.txt
  • Volume/
  • settings.json
  • 浏览器 Cookie、登录令牌和代理信息
  • 下载的视频、图片、日志、数据库和缓存
  • 本机虚拟环境及本地打包文件

这些路径已经加入 .gitignore。提交代码前仍建议执行一次秘密扫描,并检查:

git status
git diff --cached

如果 Cookie 曾经被提交到任何公开仓库,应立即在对应平台退出全部会话并重新登录,使旧 Cookie 失效;仅从 Git 历史删除文件并不能撤销已经泄露的凭证。

常见问题

删除文件后仍提示“存在下载记录”

当前 GUI 的单素材下载会忽略全局下载记录,以目标目录中的实际文件为准。如果目标文件已经删除,再次执行应重新下载。

批量任务仍可使用记录机制避免重复抓取;需要覆盖本地内容时,请在主页批量页使用对应覆盖选项。

哔哩哔哩下载只有画面或只有声音

哔哩哔哩高画质通常采用音视频分离流。本项目会下载两条媒体流并自动合并;请等待日志出现最终 MP4 路径后再打开文件。

目标画质不可用

程序会选择指定画质以内的最佳可用清晰度。实际画质取决于视频本身、登录状态、账号权限和地区限制。

抖音解析失败

可依次检查:

  1. 分享链接是否仍有效。
  2. 是否已经登录或更新 Cookie。
  3. 网络是否可以正常访问抖音。
  4. 运行日志中是否出现风控、验证码或接口变化提示。

下载目录为空

确认顶部显示的下载根目录与实际查看的目录一致。单个哔哩哔哩视频默认位于 Bilibili/ 子目录,抖音素材通常位于 Download/ 或账号目录。

开发与测试

安装开发依赖:

pip install -r requirements.txt
pip install pytest ruff

运行测试:

python -m pytest -q

代码检查:

ruff check gui_main.py src/downloader/bilibili.py src/downloader/download.py \
  src/tools/console.py src/config/settings.py src/custom/internal.py
python -m compileall -q gui_main.py src

当前单素材测试覆盖:

  • 分享文案 URL 提取与平台识别
  • 抖音实际文件判重
  • 哔哩哔哩格式选择
  • ANSI 日志清理
  • 分块下载与重试相关逻辑

项目结构

DouK-Downloader/
├─ gui_main.py                 # 桌面 GUI
├─ main.py                     # 终端模式入口
├─ src/
│  ├─ application/             # 应用编排
│  ├─ downloader/              # 抖音与哔哩哔哩下载
│  ├─ interface/               # 数据采集接口
│  ├─ manager/                 # 缓存、数据库与记录
│  ├─ storage/                 # CSV/XLSX/SQL 等存储
│  ├─ testers/                 # 自动化测试
│  └─ tools/                   # 通用工具
├─ static/                     # 图标与运行时静态资源
├─ locale/                     # 本地化资源
├─ requirements.txt
├─ pyproject.toml
└─ LICENSE

贡献

欢迎提交 Issue 和 Pull Request。提交前请:

  1. 确保没有包含 Cookie、下载内容、日志或个人路径。
  2. 为新增逻辑补充或更新测试。
  3. 运行测试和代码检查。
  4. 在 PR 中说明改动目的、影响范围和验证方式。

上游与许可证

本项目基于 JoeanAmier/TikTokDownloader 继续开发,感谢原作者及所有贡献者。

本仓库中的改动主要包括桌面 GUI、单个抖音素材下载、哔哩哔哩视频下载、实际文件判重和相关稳定性优化。项目继续遵循 GNU General Public License v3.0。分发修改版本时请保留许可证、源码和上游归属说明。

免责声明

  • 本工具不提供内容授权,也不绕过付费、访问控制或数字版权保护。
  • 使用者应确认自己拥有下载、保存、分析和处理目标内容的合法权利。
  • 平台接口可能随时变化,项目不保证所有功能永久可用。
  • 因使用本项目产生的账号、数据、版权或法律风险由使用者自行承担。

About

抖音、TikTok 与哔哩哔哩素材下载及数据采集工具,提供统一桌面 GUI

Topics

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages