TikTokDownloader
TikTok 发布/喜欢/合辑/直播/视频/图集/音乐;抖音发布/喜欢/收藏/收藏夹/视频/图集/实况/直播/音乐/合集/评论/账号/搜索/热榜数据采集工具/下载工具
Install / Use
/learn @JoeanAmier/TikTokDownloaderREADME
<div align="center">
<img src="./static/images/DouK-Downloader.png" alt="DouK-Downloader" height="256" width="256"><br>
<h1>DouK-Downloader</h1>
<p>简体中文 | <a href="README_EN.md">English</a></p>
<a href="https://trendshift.io/repositories/6222" target="_blank"><img src="https://trendshift.io/api/badge/repositories/6222" alt="" style="width: 250px; height: 55px;" width="250" height="55"/></a>
<br>
<img alt="GitHub" src="https://img.shields.io/github/license/JoeanAmier/TikTokDownloader?style=flat-square">
<img alt="GitHub forks" src="https://img.shields.io/github/forks/JoeanAmier/TikTokDownloader?style=flat-square&color=55efc4">
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/JoeanAmier/TikTokDownloader?style=flat-square&color=fda7df">
<img alt="GitHub code size in bytes" src="https://img.shields.io/github/languages/code-size/JoeanAmier/TikTokDownloader?style=flat-square&color=a29bfe">
<br>
<img alt="Static Badge" src="https://img.shields.io/badge/Python-3.12-b8e994?style=flat-square&logo=python&labelColor=3dc1d3">
<img alt="GitHub release (with filter)" src="https://img.shields.io/github/v/release/JoeanAmier/TikTokDownloader?style=flat-square&color=48dbfb">
<img src="https://img.shields.io/badge/Sourcery-enabled-884898?style=flat-square&color=1890ff" alt="">
<img alt="Static Badge" src="https://img.shields.io/badge/Docker-badc58?style=flat-square&logo=docker">
<img alt="GitHub all releases" src="https://img.shields.io/github/downloads/JoeanAmier/TikTokDownloader/total?style=flat-square&color=ffdd59">
</div>
<br>
<p>🔥 <b>TikTok 发布/喜欢/合辑/直播/视频/图集/音乐;抖音发布/喜欢/收藏/收藏夹/视频/图集/实况/直播/音乐/合集/评论/账号/搜索/热榜数据采集工具:</b>完全开源,基于 HTTPX 模块实现的免费数据采集和文件下载工具;批量下载抖音账号发布、喜欢、收藏、收藏夹作品;批量下载 TikTok 账号发布、喜欢作品;下载抖音链接或 TikTok 链接作品;获取抖音直播拉流地址;下载抖音直播视频;获取 TikTok 直播拉流地址;下载 TikTok 直播视频;采集抖音作品评论数据;批量下载抖音合集作品;批量下载 TikTok 合辑作品;采集抖音账号详细数据;采集抖音用户 / 作品 / 直播搜索结果;采集抖音热榜数据。</p>
<p>⭐ 本项目历史名称:<code>TikTokDownloader</code></p>
<p>📣 本项目将于未来进行代码结构重构,目标是让代码更加稳健,并具备更好的可维护性与扩展性;如果你对项目设计、实现方式或优化思路有想法,欢迎提出建议或参与讨论!</p>
<hr>
📝 项目功能
<details> <summary>功能列表(点击展开)</summary> <ul> <li>✅ 下载抖音视频/图集</li> <li>✅ 下载抖音实况/动图</li> <li>✅ 下载最高画质视频文件</li> <li>✅ 下载 TikTok 视频原画</li> <li>✅ 下载 TikTok 视频/图集</li> <li>✅ 下载抖音账号发布/喜欢/收藏/收藏夹作品</li> <li>✅ 下载 TikTok 账号发布/喜欢作品</li> <li>✅ 采集抖音 / TikTok 详细数据</li> <li>✅ 批量下载链接作品</li> <li>✅ 多账号批量下载作品</li> <li>✅ 自动跳过已下载的文件</li> <li>✅ 持久化保存采集数据</li> <li>✅ 支持 CSV/XLSX/SQLite 格式保存数据</li> <li>✅ 下载动态/静态封面图</li> <li>✅ 获取抖音直播拉流地址</li> <li>✅ 获取 TikTok 直播拉流地址</li> <li>✅ 调用 ffmpeg 下载直播</li> <li>✅ Web UI 交互界面</li> <li>✅ 采集抖音作品评论数据</li> <li>✅ 下载抖音合集作品</li> <li>✅ 下载 TikTok 合辑作品</li> <li>✅ 记录点赞收藏等统计数据</li> <li>✅ 筛选作品发布时间</li> <li>✅ 支持账号作品增量下载</li> <li>✅ 支持使用代理采集数据</li> <li>✅ 支持局域网远程访问</li> <li>✅ 采集抖音账号详细数据</li> <li>✅ 作品统计数据更新</li> <li>✅ 支持自定义账号/合集标识</li> <li>✅ 自动更新账号昵称/标识</li> <li>✅ 部署至私有服务器</li> <li>✅ 部署至公开服务器</li> <li>✅ 采集抖音搜索数据</li> <li>✅ 采集抖音热榜数据</li> <li>✅ 记录已下载作品 ID</li> <li>☑️ <del>扫码登陆获取 Cookie</del></li> <li>✅ 从浏览器读取 Cookie</li> <li>✅ 支持 Web API 调用</li> <li>✅ 支持多线程下载作品</li> <li>✅ 文件完整性处理机制</li> <li>✅ 自定义规则筛选作品</li> <li>✅ 按文件夹归档保存作品文件</li> <li>✅ 自定义设置文件大小上限</li> <li>✅ 支持文件断点续传下载</li> <li>✅ 监听剪贴板链接下载作品</li> </ul> </details>💻 程序截图
<p><a href="https://www.bilibili.com/video/BV1d7eAzTEFs/">前往 bilibili 观看演示</a>;<a href="https://youtu.be/yMU-RWl55hg">前往 YouTube 观看演示</a></p>终端交互模式
<p>建议通过配置文件管理账号,更多介绍请查阅 <a href="https://github.com/JoeanAmier/TikTokDownloader/wiki/Documentation">文档</a></p>


Web UI 交互模式
项目代码已重构,该模式代码尚未更新,未来开发完成重新开放!
Web API 接口模式


启动该模式后,访问
http://127.0.0.1:5555/docs或者http://127.0.0.1:5555/redoc可以查阅自动生成的文档!
API 调用示例代码
from httpx import post
from rich import print
def demo():
headers = {"token": ""}
data = {
"detail_id": "0123456789",
"pages": 2,
}
api = "http://127.0.0.1:5555/douyin/comment"
response = post(api, json=data, headers=headers)
print(response.json())
demo()
📋 项目说明
快速入门
<p>⭐ Mac OS、Windows 10 及以上用户可前往 <a href="https://github.com/JoeanAmier/TikTokDownloader/releases/latest">Releases</a> 或者 <a href="https://github.com/JoeanAmier/TikTokDownloader/actions">Actions</a> 下载已编译的程序,开箱即用!</p> <p>⭐ 本项目包含自动构建可执行文件的 GitHub Actions,使用者可以随时使用 GitHub Actions 将最新源码构建为可执行文件!</p> <p>⭐ 自动构建可执行文件教程请查阅本文档的 <code>构建可执行文件指南</code> 部分;如果需要更加详细的图文教程,请 <a href="https://mp.weixin.qq.com/s/TorfoZKkf4-x8IBNLImNuw">查阅文章</a>!</p> <p><strong>注意:由于 Mac OS 平台的可执行文件 <code>main</code> 未经过代码签名,首次运行时会受到系统安全限制。请先在终端执行 <code>xattr -cr 项目文件夹路径</code> 命令移除安全标记,执行一次后即可正常运行。</strong></p> <hr> <ol> <li><b>运行可执行文件</b> 或者 <b>配置环境运行</b>(二选一) <ol><b>运行可执行文件</b> <li>下载 <a href="https://github.com/JoeanAmier/TikTokDownloader/releases/latest">Releases</a> 或者 Actions 构建的可执行文件压缩包</li> <li>解压后打开程序文件夹,双击运行 <code>main</code></li> </ol> <ol><b>配置环境运行</b> <li>安装 <code>3.12</code> 版本的 <a href="https://www.python.org/">Python</a> 解释器</li> <li>下载最新的源码或 <a href="https://github.com/JoeanAmier/TikTokDownloader/releases/latest">Releases</a> 发布的源码至本地</li> <ol><b>使用 pip 安装项目依赖</b> <li>运行 <code>python -m venv venv</code> 命令创建虚拟环境(可选)</li> <li>运行 <code>.\venv\Scripts\activate.ps1</code> 或者 <code>venv\Scripts\activate</code> 命令激活虚拟环境(可选)</li> <li>运行 <code>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt</code> 命令安装程序所需模块</li> <li>运行 <code>python .\main.py</code> 或者 <code>python main.py</code> 命令启动 DouK-Downloader</li> </ol> <ol><b>使用 uv 安装项目依赖(推荐)</b> <li>运行 <code>uv sync --no-dev</code> 命令同步环境依赖</li> <li>运行 <code>uv run main.py</code> 命令启动 DouK-Downloader</li> </ol> </ol> </li> <li>阅读 DouK-Downloader 的免责声明,根据提示输入内容</li> <li>将 Cookie 信息写入配置文件 <ol><b>从剪贴板读取 Cookie(推荐)</b> <li>参考 <a href="https://github.com/JoeanAmier/TikTokDownloader/blob/master/docs/Cookie%E8%8E%B7%E5%8F%96%E6%95%99%E7%A8%8B.md">Cookie 提取教程</a>,复制所需 Cookie 至剪贴板</li> <li>选择 <code>从剪贴板读取 Cookie</code> 选项,程序会自动读取剪贴板的 Cookie 并写入配置文件</li> </ol> <ol><b>从浏览器读取 Cookie</b> <li>选择 <code>从浏览器读取 Cookie</code> 选项,按照提示输入浏览器类型或序号</li> </ol> <ol><b><del>扫码登录获取 Cookie</del>(失效)</b> <li><del>选择 <code>扫码登录获取 Cookie</code> 选项,程序会显示登录二维码图片,并使用默认应用打开图片</del></li> <li><del>使用抖音 APP 扫描二维码并登录账号</del></li> <li><del>按照提示操作,程序会自动将 Cookie 写入配置文件</del></li> </ol> </li> <li>返回程序界面,依次选择 <code>终端交互模式</code> -> <code>批量下载链接作品(通用)</code> -> <code>手动输入待采集的作品链接</code></li> <li>输入抖音作品链接即可下载作品文件(TikTok 平台需要更多初始设置,详见文档)</li> <li>更多详细说明请查看 <b><a href="https://github.com/JoeanAmier/TikTokDownloader/wiki/Documentation">项目文档</a></b></li> </ol> <p>⭐ 推荐使用 <a href="https://learn.microsoft.com/zh-cn/windows/terminal/install">Windows 终端</a>(Windows 11 自带默认终端)</p>Docker 容器
<ol> <li>获取镜像</li> <ul> <li>方式一:使用 <code>Dockerfile</code> 文件构建镜像</li> <li>方式二:使用 <code>docker pull joeanamier/tiktok-downloader</code> 命令拉取镜像</li> <li>方式三:使用 <code>docker pull ghcr.io/joeanamier/tiktok-downloader</code> 命令拉取镜像</li> </ul> <li>创建容器:<code>docker run --name 容器名称(可选) -p 主机端口号:5555 -v tiktok_downloader_volume:/app/Volume -it <镜像名称></code> </li> <br><b>注意:</b>此处的 <code><镜像名称></code> 需与您在第一步中使用的镜像名称保持一致(例如 <code>joeanamier/tiktok-downloader</code> 或 <code>ghcr.io/joeanamier/tiktok-downloader</code>) <li>运行容器 <ul> <li>启动容器:<code>docker start -i 容器名称/容器 ID</code></li> <li>重启容器:<code>docker restart -i 容器名称/容器 ID</code></li> </ul> </li> </ol> <p>Docker 容器无法直接访问宿主机的文件系统,部分功能不可用,例如:<code>从浏览器读取 Cookie</code>;其他功能如有异常请反馈!</p> <hr>关于 Cookie
<hr>
Cookie 仅需在失效后重新写入配置文件,并非每次运行程序都要写入配置文件!
Cookie 会影响下载的视频文件分辨率,如果无法下载最高分辨率的视频文件,请尝试更新 Cookie!
程序获取数据失败时,可以尝试更新 Cookie 或者使用已登录的 Cookie!
其他说明
<ul> <li>程序提示用户输入时,直接回车代表返回上级菜单,输入 <code>Q</code> 或 <code>q</code> 代表结束运行</li> <li>由于获取账号喜欢作品和收藏作品数据仅返回喜欢 / 收藏作品的发布日期,不返回操作日期,因此程序需要获取全部喜欢 / 收藏作品数据再进行日期筛选;如果作品数量较多,可能会花费较长的时间;可通过 <code>max_pages</code> 参数控制请求次数</li> <li>获取私密账号的发布作品数据需要登录后的 Cookie,且登录的账号需要关注该私密账号</li> <li>批量下载账号作品或合集作品时,如果对应的昵称或标识发生变化,程序会自动更新已下载作品文件名称中的昵称和标识</li> <li>程序下载文件时会先将文件下载至临时文件夹,下载完成后再移动至储存文件夹;程序运行结束时会清空临时文件夹</li> <li><code>批量下载收藏作品模式</code> 目前仅支持下载当前已登录 Cookie 对应账号的收藏作品,暂不支持多账号</li> <li>如果想要程序使用代理请求数据,必须在 <code>settings.json</code> 设置 <code>proxy</code> 参数,否则程序不会使用代理</li> <li>如果您的计算机没有合适的程序编辑 JSON 文件,建议使用 <a href="https://www.toolhelper.cn/JSON/JSONFormat">在线工具</a> 编辑配置文件内容,修改后需要重启软件才能生效。</li> <li>当程序请求用户输入内容或链接时,请注意避免输入的内容或链接包含换行符,这可能会导致预期之外的问题</li> <li>本项目不会支持付费作品下载,请勿反馈任何关于付费作品下载的问题</li> <li>Windows 系统需要以管理员身份运行程序才能读取 Chromium、Chrome、Edge 浏览器 Cookie</li> <li>本项目并未针对程序多开的情况进行优化,如需程序多开,请复制整个项目的文件夹,避免出现预期之外的问题</li> <li>程序运行过程中,如需终止程序或 <code>ffmpeg</code>,请按下 <code>Ctrl + C</code> 终止运行,不要直接点击终端窗口的关闭按钮</li> </ul> <h2>构建可执行文件指南</h2> <details> <summary><b>构建可执行文件指南(点击展开)</b></summary>本指南将引导您通过 Fork 本仓库并执行 GitHub Actions 自动完成基于最新源码的程序构建和打包!
使用步骤
1. Fork 本仓库
- 点击项目仓库右上角的 Fork 按钮,将本仓库 Fork 到您的个人 GitHub 账户中
- 您的 Fork 仓库地址将类似于:
https://github.com/your-username/this-repo
2. 启用 GitHub Actions
- 前往您 Fork 的仓库页面
- 点击顶部的 Settings 选项卡
- 点击右侧的 Actions 选项卡
- 点击 General 选项
- 在 Actions permissions 下,选择 Allow all actions and reusable workflows 选项,点击 Save 按钮
3. 手动触发打包流程
- 在您 Fork 的仓库中,点击顶部的 Actions 选项卡
- 找到名为 构建可执行文件 的工作流
- 点击右侧的 Run workflow 按钮:
- 选择 master 或者 develop 分支
- 点击 Run workflow
4. 查看打包进度
- 在 Actions 页面中,您可以看到触发的工作流运行记录
- 点击运行记录,查看详细的日志以了解打包进度和状态
5. 下载打包结果
- 打包完成后,进入对应的运行记录页面
- 在页面底部的 Artifacts 部分,您将看到打包的结果文件
- 点击下载并保存到本地,即可获得打包好的程序
注意事项
-
资源使用:
- Actions 的运行环境由 GitHub 免费提供,普通用户每月有一定的免费使用额度(2000 分钟)
-
代码修改:
- 您可以自由修改 Fork 仓库中的代
