-
Notifications
You must be signed in to change notification settings - Fork 2k
Documentation
🔥 TikTok 发布/喜欢/合辑/直播/视频/图集/音乐;抖音发布/喜欢/收藏/收藏夹/视频/图集/实况/直播/音乐/合集/评论/账号/搜索/热榜数据采集工具:完全开源,基于 HTTPX 模块实现的免费数据采集和文件下载工具;批量下载抖音账号发布、喜欢、收藏、收藏夹作品;批量下载 TikTok 账号发布、喜欢作品;下载抖音链接或 TikTok 链接作品;获取抖音直播推流地址;下载抖音直播视频;获取 TikTok 直播推流地址;下载 TikTok 直播视频;采集抖音作品评论数据;批量下载抖音合集作品;批量下载 TikTok 合辑作品;采集抖音账号详细数据;采集抖音用户 / 作品 / 直播搜索结果;采集抖音热榜数据。
⭐ 项目版本:5.7 Stable
;文档更新日期:2025/8/19
⭐ 项目文档正在完善,如果发现任何错误或描述模糊之处,请告知作者以便改进!本项目历史名称:TikTokDownloader
⭐ 本项目包含手动构建可执行文件的 GitHub Actions,使用者可以随时使用 GitHub Actions 将最新源码构建为可执行文件!
⭐ 自动构建可执行文件教程请查阅本文档的 构建可执行文件指南
部分;如果需要更加详细的图文教程,请 查阅文章!
-
运行可执行文件 或者 配置环境运行
-
运行可执行文件
- 下载 Releases 或者 Actions 构建的可执行文件压缩包
- 解压后打开程序文件夹,双击运行
main
-
配置环境运行
- 安装
3.12
版本的 Python 解释器 - 下载最新的源码或 Releases 发布的源码至本地
- 运行
python -m venv venv
命令创建虚拟环境(可选) - 运行
.\venv\Scripts\activate.ps1
或者venv\Scripts\activate
命令激活虚拟环境(可选) - 运行
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
命令安装程序所需模块 - 运行
python .\main.py
或者python main.py
命令启动 DouK-Downloader
- 阅读 DouK-Downloader 的免责声明,根据提示输入内容
- 将 Cookie 信息写入配置文件
-
从剪贴板读取 Cookie
- 参考 Cookie 提取教程,复制所需 Cookie 至剪贴板
- 选择
从剪贴板读取 Cookie
选项,程序会自动读取剪贴板的 Cookie 并写入配置文件
-
从浏览器读取 Cookie
- 选择
从浏览器读取 Cookie
选项,按照提示输入浏览器类型或序号
选择扫码登录获取 Cookie
选项,程序会显示登录二维码图片,并使用默认应用打开图片使用抖音 APP 扫描二维码并登录账号按照提示操作,程序会自动将 Cookie 写入配置文件
扫码登录获取 Cookie(失效) - 返回程序界面,依次选择
终端交互模式
->批量下载链接作品(抖音)
->手动输入待采集的作品链接
- 输入抖音作品链接即可下载作品文件
TikTok 平台功能需要额外设置配置文件 browser_info_tiktok
的 device_id
参数,否则 TikTok 平台功能可能无法正常使用!参数获取方式与 Cookie 类似,详见 Cookie 获取教程
- 获取镜像
- 方式一:使用
Dockerfile
文件构建镜像 - 方式二:使用
docker pull joeanamier/tiktok-downloader
命令拉取镜像 - 方式三:使用
docker pull ghcr.io/joeanamier/tiktok-downloader
命令拉取镜像 - 创建容器:
docker run --name 容器名称(可选) -p 主机端口号:5555 -v tiktok_downloader_volume:/app/Volume -it <镜像名称>
- 运行容器
- 启动容器:
docker start -i 容器名称/容器 ID
- 重启容器:
docker restart -i 容器名称/容器 ID
- 启动容器:
注意:此处的
<镜像名称>
需与您在第一步中使用的镜像名称保持一致(例如 joeanamier/tiktok-downloader
或 ghcr.io/joeanamier/tiktok-downloader
)
Docker 容器无法直接访问宿主机的文件系统,部分功能不可用,例如:从浏览器读取 Cookie
;其他功能如有异常请反馈!
点击查看 Cookie 获取教程;无效或失效的 Cookie 会导致程序获取数据失败!
- Cookie 仅需在失效后重新写入配置文件,并非每次运行程序都要写入配置文件!
Cookie 会影响下载的视频文件分辨率,如果无法下载最高分辨率的视频文件,请尝试更新 Cookie!
- 程序获取数据失败时,可以尝试更新 Cookie 或者使用已登录的 Cookie!
⭐ 推荐使用 Windows 终端(Windows 11 自带默认终端)运行程序以便获得最佳彩色交互显示效果!
- 完整链接:使用浏览器打开抖音或 TikTok 链接时,地址栏所显示的 URL 地址。
- 分享链接:点击 APP 或网页版的分享按钮得到的 URL 地址,抖音平台以
https://v.
开头,掺杂中文和其他字符;TikTok 平台以https://vm.
或https://vt.
开头,不掺杂其他字符;使用时不需要手动去除中文和其他字符,程序会自动提取 URL 链接。
- 项目支持使用
CSV
、XLSX
、SQLite
格式文件储存采集数据。 - 配置文件
settings.json
的storage_format
参数可设置数据储存格式类型,如果不设置该参数,程序不会储存任何数据至文件。 -
采集作品评论数据
、采集账号详细数据
、采集搜索结果数据
、采集抖音热榜数据
模式必须设置storage_format
参数才能正常使用。 - 程序所有数据均储存至配置文件
root
参数路径下的Data
文件夹。
项目部分功能支持从文本文档(TXT)读取链接,如需使用,请在计算机任意路径创建一个空白文本文档,然后编辑文件内容,每行输入单个链接,编辑完成后保存文件。
文本文档编码:UTF-8
https://www.douyin.com/user/abcd?vid=123456789
https://www.douyin.com/search/key?modal_id=123456789
https://www.douyin.com/video/123456789
https://www.douyin.com/note/123456789
获取直播推流地址
功能需要调用 ffmpeg
下载直播文件;程序会优先调用系统环境的 ffmpeg
,其次调用 ffmpeg
参数指定的 ffmpeg
,如果 ffmpeg
不可用,程序将不支持直播下载!
建议前往 官方网站 或者 FFmpeg-Builds 获取 ffmpeg
程序!
项目开发时所用的 FFmpeg 版本信息如下,不同版本的 FFmpeg 可能会有差异;若功能异常,请向作者反馈!
ffmpeg version n7.1.1-6-g48c0f071d4-20250405 Copyright (c) 2000-2025 the FFmpeg developers built with gcc 14.2.0 (crosstool-NG 1.27.0.18_7458341)
程序功能 | 功能类型 |
---|---|
批量下载账号作品(发布、喜欢) | 文件下载, 数据采集 |
批量下载链接作品 | 文件下载, 数据采集 |
获取直播推流地址 | 文件下载, 数据采集 |
采集作品评论数据 | 数据采集 |
批量下载合集作品 | 文件下载, 数据采集 |
采集账号详细数据 | 数据采集 |
采集搜索结果数据 | 数据采集 |
采集抖音热榜数据 | 数据采集 |
批量下载收藏作品 | 文件下载,数据采集 |
批量下载收藏夹作品 | 文件下载,数据采集 |
批量下载收藏音乐作品 | 文件下载,数据采集 |
本项目支持抖音平台和 TikTok 平台的数据采集和文件下载功能,平台功能默认开启,如果不需要使用平台的任何功能,可以编辑配置文件关闭平台功能。
本项目内置参数更新机制,程序会周期性更新抖音与 TikTok 请求的部分参数,以保持参数的有效性(或许没有效果?),该功能无法防止参数失效,参数失效后需要重新写入 Cookie;关闭平台功能后,对应平台的参数更新功能将会禁用!
配置文件:项目根目录下的 ./Volume/settings.json
文件,可以自定义设置程序部分运行参数。
若无特殊需求,大部分配置参数无需修改,直接使用默认值即可。
cookie
、cookie_tiktok
与 device_id
参数为必需参数,必须设置该参数才能正常使用程序;其余参数可以根据实际需求进行修改!
如果您的计算机没有合适的程序编辑 JSON 文件,建议使用 JSON 在线工具 编辑配置文件内容。
注意: 手动修改 settings.json
后需要重新运行程序才会生效!
参数 | 类型 | 说明 | 默认 |
---|---|---|---|
mark | str | 1账号/合集标识,用于区分账号/合集;属于 accounts_urls、mix_urls 和 owner_url 子参数 | 账号昵称/合集标题 |
url | str | 账号主页/合集作品链接;属于 accounts_urls、mix_urls 和 owner_url 子参数 | 无 |
tab | str |
2主页标签,post 代表发布作品、favorite 代表喜欢作品;属于 accounts_urls 子参数
|
发布作品 |
earliest | str | float | int | 作品最早发布日期,格式:2023/1/1 、整数 、浮点数 ;设置为数值代表基于 latest 参数的前 XX 天,属于 accounts_urls 子参数
|
不限制 |
latest | str | float | int | 作品最晚发布日期,格式:2023/1/1 、整数 、浮点数 ;设置为数值代表基于当天的前 XX 天,属于 accounts_urls 子参数
|
不限制 |
enable | bool | 参数对象是否启用,设置为 false 时程序会跳过处理;属于 accounts_urls 和 mix_urls 子参数
|
启用 |
accounts_urls[mark, url, tab, earliest, latest, enable] | list[dict[str, str, str, Any, str, bool]] |
3抖音平台:账号标识,账号链接,主页标签,最早发布日期,最晚发布日期,是否启用;作为 批量下载账号作品 模式选项,支持多账号,以字典格式包含六个参数 |
无 |
mix_urls[mark, url, enable] | list[dict[str, str, bool]] |
3抖音平台:合集标识,合集链接或作品链接,是否启用;作为 批量下载合集作品 模式选项,支持多合集,以字典格式包含三个参数 |
无 |
owner_url[mark, url] | dict[str, str] |
3抖音平台:当前登录 Cookie 的账号标识,账号主页链接;批量下载收藏作品 模式下用于获取账号信息,以字典格式包含两个参数 |
无 |
accounts_urls_tiktok[mark, url, tab, earliest, latest, enable] | list[dict[str, str, str, Any, str, bool]] |
3TikTok 平台;参数规则与 accounts_urls 一致 |
无 |
mix_urls_tiktok[mark, url, enable] | list[dict[str, str, bool]] |
3TikTok 平台;参数规则与 mix_urls 一致 |
无 |
owner_url_tiktok[mark, url](未生效) | dict[str, str] |
3TikTok 平台;参数规则与 owner_url 一致 |
无 |
root | str | 作品文件和数据记录保存路径;建议使用绝对路径 | 项目根路径/Volume |
folder_name | str | 批量下载链接作品时,保存文件夹的名称 | Download |
name_format | str | 文件保存时的命名规则,值之间使用空格分隔,支持:id :作品 ID;desc :作品描述;create_time :发布时间;nickname :账号昵称;mark :账号标识;uid :账号 ID;type :作品类型 |
发布时间-作品类型-账号昵称-描述 |
desc_length | int | 作品文件名中描述字段的最大字符数;超过限制的描述字段将折叠处理 | 64 |
name_length | int | 作品文件名称的最大字符数;超过限制的文件名称将折叠处理 | 128 |
date_format | str | 日期时间格式;点击查看设置规则 | 年-月-日 时:分:秒 |
split | str | 文件命名的分隔符 | - |
folder_mode | bool | 是否将每个作品的文件储存至单独的文件夹,文件夹名称格式与 name_format 参数一致 |
false |
music | bool | 是否下载作品音乐 | false |
truncate | int | 文件下载进度条中描述字符串的最大长度,该参数用于调整显示效果 | 64 |
storage_format | str |
3采集数据持久化储存格式,支持:csv 、xlsx 、sql (SQLite) |
不保存 |
cookie | dict | str | 4抖音网页版 Cookie, 必需参数; 建议通过程序写入配置文件,亦可手动编辑 | 无 |
cookie_tiktok | dict | str | 4TikTok 网页版 Cookie, 必需参数; 建议通过程序写入配置文件,亦可手动编辑 | 无 |
dynamic_cover | bool | 是否下载视频作品动态封面图 | false |
static_cover | bool | 是否下载视频作品静态封面图 | false |
proxy | str | 抖音请求代理地址 | 不使用代理 |
proxy_tiktok | str | TikTok 请求代理地址 | 不使用代理 |
twc_tiktok | str | TikTok Cookie 的 ttwid 值,一般情况下无需设置 | 无 |
download | bool | 是否开启项目的下载功能,如果关闭,程序将不会下载任何文件 | true |
max_size | int | 作品文件大小限制,单位字节,超出大小限制的作品文件将会跳过下载 | 无限制 |
chunk | int | 每次从服务器接收的数据块大小,单位字节 | 2097152(2 MB) |
timeout | int | 请求数据的超时限制,单位秒 | 10 |
max_retry | int | 发送请求获取数据发生异常时重试的最大次数,设置为 0 代表关闭重试 |
10 |
max_pages | int | 批量下载账号喜欢作品、收藏作品或者采集作品评论数据时,请求数据的最大次数(不包括异常重试) | 不限制 |
run_command | str | 设置程序启动执行的默认命令,相当于模拟用户输入序号或内容(多个序号或内容之间使用空格分隔) | 无 |
ffmpeg | str |
3ffmpeg.exe 路径,下载直播时使用,如果系统环境存在 ffmpeg 或者不想使用 ffmpeg ,无需设置该参数 |
无 |
live_qualities | str |
3下载直播时的默认清晰度,支持设置为清晰度或者序号;当设置了该参数时,获取直播推流地址将会直接下载指定清晰度的直播文件,不再提示输入清晰度;参数示例:FULL_HD1 、HD1 、1 、2 等 |
无 |
douyin_platform | bool | 5是否启用抖音平台功能 | true |
tiktok_platform | bool | 5是否启用 TikTok 平台功能 | true |
browser_info | dict | 抖音平台浏览器信息,一般情况下无需修改 | 内置参数 |
browser_info_tiktok | dict | TikTok 平台浏览器信息,一般情况下仅需修改 device_id 参数,获取方式查阅 Cookie 获取教程
|
内置参数 |
补充说明:
- 详见标识参数说明
- 设置为
favorite
时,需要确保账号喜欢作品公开可见,或者配置对应账号的登录 Cookie - 该参数仅在部分模式和功能中生效,如果不需要使用相应的模式和功能,无需设置该参数
- 必须设置平台的 Cookie 才能使用该平台的数据采集和文件下载功能
- 如果不需要使用该平台的任何功能,可以将该参数设置为
false
{
"accounts_urls": [
{
"mark": "账号A",
"url": "https://www.douyin.com/user/aaa",
"tab": "post",
"earliest": "2024/3/1",
"latest": "2024/7/1",
"enable": true
},
{
"mark": "账号B",
"url": "https://v.douyin.com/bbb",
"tab": "favorite",
"earliest": 30,
"latest": "",
"enable": false
}
],
"accounts_urls_tiktok": "参数规则与 accounts_urls 一致",
"mix_urls": [
{
"mark": "",
"url": "https://v.douyin.com/ccc",
"enable": true
},
{
"mark": "合集B",
"url": "https://www.douyin.com/video/123",
"enable": false
}
],
"mix_urls_tiktok": "参数规则与 mix_urls 一致",
"owner_url": {
"mark": "已登录 Cookie 的账号标识,可以设置为空字符串",
"url": "已登录 Cookie 的账号主页链接"
},
"owner_url_tiktok": "参数规则与 owner_url 一致",
"root": "C:\\DouK-Downloader",
"folder_name": "SOLO",
"name_format": "create_time uid id",
"desc_length": 64,
"name_length": 128,
"date_format": "%Y-%m-%d",
"split": " ",
"folder_mode": false,
"music": false,
"truncate": 32,
"storage_format": "xlsx",
"cookie": {
"key-1": "value-1",
"key-2": "value-2",
"key-3": "value-3"
},
"cookie_tiktok": "参数规则与 cookie 一致",
"dynamic_cover": false,
"static_cover": false,
"proxy": "http://127.0.0.1:9999",
"proxy_tiktok": "参数规则与 proxy 一致",
"twc_tiktok": "",
"download": true,
"max_size": 104857600,
"chunk": 10485760,
"timeout": 5,
"max_retry": 10,
"max_pages": 2,
"run_command": "6 2 1",
"ffmpeg": "C:\\DouK-Downloader\\ffmpeg.exe",
"live_qualities": "1",
"douyin_platform": true,
"tiktok_platform": true,
"browser_info": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36",
"pc_libra_divert": "Windows",
"browser_language": "zh-SG",
"browser_platform": "Win32",
"browser_name": "Chrome",
"browser_version": "139.0.0.0",
"engine_name": "Blink",
"engine_version": "139.0.0.0",
"os_name": "Windows",
"os_version": "10",
"webid": ""
},
"browser_info_tiktok": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36",
"app_language": "zh-Hans",
"browser_language": "zh-SG",
"browser_name": "Mozilla",
"browser_platform": "Win32",
"browser_version": "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36",
"language": "zh-Hans",
"os": "windows",
"priority_region": "CN",
"region": "US",
"tz_name": "Asia/Shanghai",
"webcast_language": "zh-Hans",
"device_id": "0123456789"
}
}
{
"accounts_urls": [
{
"mark": "",
"url": "https://www.douyin.com/user/aaa",
"tab": "favorite",
"earliest": "",
"latest": "",
"enable": true
},
{
"mark": "",
"url": "https://v.douyin.com/bbb",
"tab": "post",
"earliest": "",
"latest": "",
"enable": true
},
{
"mark": "",
"url": "https://www.douyin.com/user/ccc",
"tab": "favorite",
"earliest": "",
"latest": "",
"enable": false
}
]
}
将待下载的账号信息写入配置文件,每个账号对应一个对象/字典,tab
参数设置为 favorite
代表批量下载喜欢作品,支持多账号;accounts_urls_tiktok
参数规则一致。
下载账号喜欢作品需要确保账号喜欢作品公开可见,或者配置对应账号的登录 Cookie!
下载账号喜欢作品需要使用已登录的 Cookie,否则可能无法获取正确的账号信息!
{
"accounts_urls": [
{
"mark": "账号A",
"url": "https://v.douyin.com/aaa",
"tab": "post",
"earliest": "2023/12/1",
"latest": "",
"enable": true
},
{
"mark": "",
"url": "https://v.douyin.com/bbb",
"tab": "post",
"earliest": 30,
"latest": "2024/12/1",
"enable": true
}
]
}
如果已经采集某账号的全部发布作品,建议设置 earliest
和 latest
参数以减少后续采集请求次数,提高程序运行效率;accounts_urls_tiktok
参数规则一致。
示例:将 earliest
参数设置为 2023/12/1
,程序获取账号发布作品数据时,不会获取早于 2023/12/1
的作品数据。
示例:将 earliest
参数设置为 30
,latest
参数设置为 2024/12/1
,程序获取账号发布作品数据时,仅获取 2024 年 12 月 1 日当天及之前 30 天内发布的作品数据。
示例:将 earliest
参数设置为 15
,latest
参数设置为 5
,程序获取账号发布作品数据时,仅获取前 5 天 ~ 前 20 天之间发布的作品数据。
{
"root": "C:\\DouK-Downloader",
"folder_name": "SOLO"
}
程序会将账号作品和合集作品的文件 和 记录的数据储存至 C:\DouK-Downloader
文件夹内,链接作品的文件会储存至 C:\DouK-Downloader\SOLO
文件夹内。
{
"name_format": "create_time uid id",
"split": " @ "
}
作品文件名称格式为: 发布时间 @ 作者UID @ 作品ID
- 如果作品没有描述,文件名称的描述内容将替换为作品 ID。
- 批量下载链接作品时,如果在
name_format
参数中设置了mark
字段,程序会自动替换为nickname
字段。
{
"date_format": "%Y-%m-%d"
}
发布时间格式为:XXXX年-XX月-XX日,详细设置规则可以 查看文档
{
"storage_format": "xlsx"
}
使用 XLSX
格式储存程序采集数据。
{
"max_size": 104857600
}
作品文件大小限制为 104857600 字节(100 MB),超过该大小的作品文件会自动跳过下载;直播文件不受限制。
{
"chunk": 10485760
}
下载文件时每次从服务器接收 10485760 字节 (10 MB)的数据块。
- 影响下载速度:较大的 chunk 会增加每次下载的数据量,从而提高下载速度。相反,较小的 chunk 会降低每次下载的数据量,可能导致下载速度稍慢。
- 影响内存占用:较大的 chunk 会一次性加载更多的数据到内存中,可能导致内存占用增加。相反,较小的 chunk 会减少每次加载的数据量,从而降低内存占用。
{
"max_pages": 2
}
下载账号喜欢作品、收藏作品以及采集作品评论数据时,仅获取前 2
页数据;用于解决下载账号喜欢作品、收藏作品需要获取全部数据的问题,以及作品评论数据数量过多的采集问题。
不影响下载账号发布作品,如需控制账号发布作品数据获取次数,请使用 earliest
和 latest
参数实现。
{
"run_command": "6 1 1 Q"
}
上述命令表示运行程序自动依次执行 终端交互模式
-> 批量下载账号作品(抖音)
-> 使用 accounts_urls 参数的账号链接(推荐)
-> 退出程序
该参数可以实现设置默认启动模式、运行功能后自动退出、自动读取浏览器 Cookie 等高级自动化功能!
- 其他示例:
-
6 2
:代表依次执行终端交互模式
->批量下载账号作品(抖音)
-
8
:代表执行Web API 模式
-
2 7
:代表依次执行从浏览器读取 Cookie (抖音)
->Edge
{
"proxy": "http://127.0.0.1:9999"
}
程序获取网络数据时使用 http://127.0.0.1:9999
作为代理;程序会自动验证代理是否可用,如果代理不可用,则 proxy
参数不生效。
如果您的电脑使用了代理工具且未修改默认端口,可以尝试以下设置:
- Clash:
http://127.0.0.1:7890
- v2rayN:
http://127.0.0.1:10809
如果想要进一步修改程序功能,可以编辑 src/custom
文件夹内容(不适用于可执行文件),按照注释指引和实际需求进行自定义修改。
- 设置作品文件下载的最大线程数量
- 设置非法字符替换规则
- 开启服务器模式局域网访问功能
- 设置服务器模式主机及端口
- 设置平台参数更新间隔
- 设置彩色交互提示颜色
- 设置请求数据延时间隔
- 设置自定义作品筛选规则
- 设置分批获取数据策略
- 设置服务器模式参数验证
参考 Cookie 提取教程,手动从浏览器复制所需 Cookie 内容至剪贴板,再按照程序提示操作;程序会自动读取剪贴板的内容并将有效的 Cookie 写入配置文件。
成功写入配置文件后,程序会提示当前 Cookie 登录状态!
自动读取本地浏览器的 Cookie 数据,并提取所需 Cookie 写入配置文件。
成功写入配置文件后,程序会提示当前 Cookie 登录状态!
Windows 系统需要以管理员身份运行程序才能读取 Chromium、Chrome、Edge 浏览器 Cookie!
程序自动获取抖音登录二维码,随后会在终端输出二维码,并使用系统默认图片浏览器打开二维码图片,使用者通过抖音 APP 扫码并登录账号,操作后关闭二维码图片窗口,程序会自动检查登录结果并将登录后的 Cookie 写入配置文件。
注意:扫码登录可能会导致抖音账号被风控,该功能仅限学习研究,未来可能禁用或移除该功能!
功能最全面的模式,支持全部功能。
- 使用
settings.json
的accounts_urls
参数中的账号链接。 - 手动输入待采集的账号链接;此选项仅支持批量下载账号发布页作品,暂不支持参数设置。
- 输入文本文档路径,读取文件包含的账号链接;此选项仅支持批量下载账号发布页作品,暂不支持参数设置。
支持链接格式:
https://v.douyin.com/分享码/
https://www.douyin.com/user/账号ID
https://www.douyin.com/user/账号ID?modal_id=作品ID
如果需要大批量采集账号作品,建议启用 (默认启用)src/custom/function.py
文件的 suspend
方法。
下载账号喜欢作品时需要使用已登录的 Cookie,否则程序可能无法正常获取账号消息!
如果当前账号昵称或账号标识不是有效的文件夹名称时,程序会自动替换为账号 ID。
每个账号的作品会下载至 root
参数路径下的账号文件夹,账号文件夹格式为 UID123456789_mark_类型
或者 UID123456789_账号昵称_类型
- 手动输入待采集的作品链接。
- 输入文本文档路径,读取文件包含的作品链接。
支持链接格式:
https://v.douyin.com/分享码/
https://www.douyin.com/note/作品ID
https://www.douyin.com/video/作品ID
https://www.douyin.com/discover?modal_id=作品ID
https://www.douyin.com/user/账号ID?modal_id=作品ID
https://www.douyin.com/search/关键词?modal_id=作品ID
https://www.douyin.com/channel/分区ID?modal_id=作品ID
作品会下载至 root
参数和 folder_name
参数拼接成的文件夹。
输入直播链接,不支持已结束的直播。
支持链接格式:
https://live.douyin.com/直播ID
https://v.douyin.com/分享码/
https://www.douyin.com/follow?webRid=直播ID
下载说明:
- 程序会询问用户是否下载直播视频,支持同时下载多个直播视频。
- 程序调用
ffmpeg
下载直播时,关闭 DouK-Downloader 不会影响直播下载。 程序调用内置下载器下载直播时,需要保持 DouK-Downloader 运行直到直播结束。- 程序询问是否下载直播时,输入直播清晰度或者对应序号即可下载,例如:下载最高清晰度输入
FULL_HD1
或者1
均可。 程序调用内置下载器下载的直播文件,视频时长会显示为直播总时长,实际视频内容从下载时间开始,靠后部分的片段无法播放。- 直播视频会下载至
root
参数路径下的Live
文件夹。 - 按下
Ctrl + C
终止程序或ffmpeg
并不会导致已下载文件丢失或损坏,但无法继续下载。
评论回复采集功能暂不开放!
- 手动输入待采集的作品链接。
- 输入文本文档路径,读取文件包含的作品链接。
支持链接格式:
https://v.douyin.com/分享码/
https://www.douyin.com/note/作品ID
https://www.douyin.com/video/作品ID
https://www.douyin.com/discover?modal_id=作品ID
https://www.douyin.com/user/账号ID?modal_id=作品ID
https://www.douyin.com/search/关键词?modal_id=作品ID
https://www.douyin.com/channel/分区ID?modal_id=作品ID
支持采集评论回复、评论表情、评论图片;必须设置 storage_format
参数才能正常使用。
储存名称格式:作品123456789_评论数据
- 使用
settings.json
的mix_urls
参数中的合集链接或作品链接。 - 获取当前登录 Cookie 的收藏合集信息,并由使用者选择需要下载的合集;该选项暂不支持设置合集标识。
- 输入合集链接,或者属于合集的任意一个作品链接;该选项暂不支持设置合集标识。
- 输入文本文档路径,读取文件包含的作品链接或合集链接;该选项暂不支持设置合集标识。
支持链接格式:
https://v.douyin.com/分享码/
https://www.douyin.com/note/作品ID
https://www.douyin.com/video/作品ID
https://www.douyin.com/discover?modal_id=作品ID
https://www.douyin.com/user/账号ID?modal_id=作品ID
https://www.douyin.com/search/关键词?modal_id=作品ID
https://www.douyin.com/collection/合集ID
https://www.douyin.com/channel/分区ID?modal_id=作品ID
如果需要大批量采集合集作品,建议启用 (默认启用)src/custom/function.py
文件的 suspend
方法。
如果当前合集标题或合集标识不是有效的文件夹名称时,程序会自动替换为合集 ID。
每个合集的作品会下载至 root
参数路径下的合集文件夹,合集文件夹格式为 MIX123456789_mark_合集作品
或者 MIX123456789_合集标题_合集作品
- 使用
settings.json
的accounts_urls
参数中的账号链接。 - 手动输入待采集的账号链接。
- 输入文本文档路径,读取文件包含的账号链接。
支持链接格式:
https://v.douyin.com/分享码/
https://www.douyin.com/user/账号ID
https://www.douyin.com/user/账号ID?modal_id=作品ID
重复获取相同账号数据时会储存为新的数据行,不会覆盖原有数据;必须设置 storage_format
参数才能正常使用。
-
综合搜索参数顺序:
关键词
;总页数
;排序依据
;发布时间
;视频时长
;搜索范围
;内容格式
-
视频搜索参数顺序:
关键词
;总页数
;排序依据
;发布时间
;视频时长
;搜索范围
-
用户搜索参数顺序:
关键词
;总页数
;粉丝数量
;用户类型
-
直播搜索参数顺序:
关键词
;总页数
- 排序依据:
0
:综合排序;1
:最多点赞;2
:最新发布 - 发布时间:
0
:不限;1
:一天内;7
:一周内;180
:半年内 - 视频时长:
0
:不限;1
:一分钟以内;2
:一到五分钟;3
:五分钟以上 - 搜索范围:
0
:不限;1
:最近看过;2
:还未看过;3
:关注的人 - 内容形式:
0
:不限;1
:视频;2
:图文 - 粉丝数量:
0
:不限;1
:1000以下;2
:1000-1W;3
:1W-10W;4
:10W-100W;5
:100W以上 - 用户类型:
0
:不限;1
:普通用户;2
:企业认证;3
:个人认证
参数之间使用两个空格分隔;除了搜索关键词以外的参数均只支持输入数值;未输入的参数均视为 0
程序采集的搜索结果数据会储存至文件;暂不支持直接下载搜索结果作品;必须设置 storage_format
参数才能正常使用。
输入:猫咪
含义 | 关键词 | 总页数 | 排序依据 | 发布时间 | 视频时长 | 搜索范围 | 内容形式 |
---|---|---|---|---|---|---|---|
猫咪 | 1 | 不限 | 不限 | 不限 | 不限 | 不限 |
输入:猫咪 2 2 7 0 1
含义 | 关键词 | 总页数 | 排序依据 | 发布时间 | 视频时长 | 搜索范围 | 内容形式 |
---|---|---|---|---|---|---|---|
猫咪 | 2 | 最新发布 | 一周内 | 不限 | 最近看过 | 不限 |
输入:猫咪 10 0 0 0 3
含义 | 关键词 | 总页数 | 排序依据 | 发布时间 | 视频时长 | 搜索范围 | 内容形式 |
---|---|---|---|---|---|---|---|
猫咪 | 10 | 不限 | 不限 | 不限 | 关注的人 | 不限 |
输入:猫咪 白 5 0 180
含义 | 关键词 | 总页数 | 排序依据 | 发布时间 | 视频时长 | 搜索范围 | 内容形式 |
---|---|---|---|---|---|---|---|
猫咪 白 | 5 | 不限 | 半年内 | 不限 | 不限 | 不限 |
输入:小姐姐 10 0 0
含义 | 关键词 | 总页数 | 粉丝数量 | 用户类型 |
---|---|---|---|---|
小姐姐 | 10 | 不限 | 不限 |
输入:小姐姐 5 4 3
含义 | 关键词 | 总页数 | 粉丝数量 | 用户类型 |
---|---|---|---|---|
小姐姐 | 5 | 10W-100W | 个人认证 |
输入:跳舞 10
含义 | 关键词 | 总页数 |
---|---|---|
跳舞 | 10 |
无需输入任何内容;采集 抖音热榜
、娱乐榜
、社会榜
、挑战榜
数据并储存至文件;必须设置 storage_format
参数才能正常使用。
储存名称格式:热榜数据_采集时间_热榜名称
暂不支持!
无需输入任何内容;需要在配置文件写入已登录的 Cookie,并在 owner_url
参数填入对应的账号主页链接和账号标识(可选参数);目前仅支持采集当前 Cookie 对应账号的收藏作品。
文件夹格式为 UID123456789_mark_收藏作品
或者 UID123456789_账号昵称_收藏作品
无需输入任何内容;需要在配置文件写入已登录的 Cookie,程序会自动获取当前 Cookie 账号的收藏夹数据并展示,根据程序提示输入收藏夹序号下载对应收藏夹作品文件,输入 ALL
下载全部收藏夹作品。
文件夹格式为 CID123456789_收藏夹名称_收藏作品
- 使用
settings.json
的accounts_urls_tiktok
参数中的账号链接。 - 手动输入待采集的账号链接;此选项仅支持批量下载账号发布页作品,暂不支持参数设置。
- 输入文本文档路径,读取文件包含的账号链接;此选项仅支持批量下载账号发布页作品,暂不支持参数设置。
支持链接格式:
https://www.tiktok.com/@TikTok号
https://www.tiktok.com/@TikTok号/video/作品ID
如果需要大批量采集账号作品,建议启用 (默认启用)src/custom/function.py
文件的 suspend
方法。
如果当前账号昵称或账号标识不是有效的文件夹名称时,程序会自动替换为账号 ID。
每个账号的作品会下载至 root
参数路径下的账号文件夹,账号文件夹格式为 UID123456789_mark_类型
或者 UID123456789_账号昵称_类型
- 手动输入待采集的作品链接。
- 输入文本文档路径,读取文件包含的作品链接。
支持链接格式:
https://vm.tiktok.com/分享码/
https://www.tiktok.com/@TikTok号/video/作品ID
作品会下载至 root
参数和 folder_name
参数拼接成的文件夹。
- 使用
settings.json
的mix_urls_tiktok
参数中的合集链接。 - 输入合集链接;该选项暂不支持设置合集标识。
- 输入文本文档路径,读取文件包含的合集链接;该选项暂不支持设置合集标识。
支持链接格式:
https://vt.tiktok.com/分享码/
https://www.tiktok.com/@TikTok号/playlist/合辑信息
https://www.tiktok.com/@TikTok号/collection/合辑信息
如果需要大批量采集合集作品,建议启用 (默认启用)src/custom/function.py
文件的 suspend
方法。
如果当前合集标题或合集标识不是有效的文件夹名称时,程序会自动替换为合集 ID。
每个合集的作品会下载至 root
参数路径下的合集文件夹,合集文件夹格式为 MIX123456789_mark_合集作品
或者 MIX123456789_合集标题_合集作品
输入直播链接,不支持已结束的直播。
支持链接格式:
https://vt.tiktok.com/分享码/
https://www.tiktok.com/@TikTok号/live
下载说明:
- 程序会询问用户是否下载直播视频,支持同时下载多个直播视频。
- 程序调用
ffmpeg
下载直播时,关闭 DouK-Downloader 不会影响直播下载。 程序调用内置下载器下载直播时,需要保持 DouK-Downloader 运行直到直播结束。- 程序询问是否下载直播时,输入直播清晰度或者对应序号即可下载,例如:下载最高清晰度输入
FULL_HD1
或者1
均可。 程序调用内置下载器下载的直播文件,视频时长会显示为直播总时长,实际视频内容从下载时间开始,靠后部分的片段无法播放。- 直播视频会下载至
root
参数路径下的Live
文件夹。 - 按下
Ctrl + C
终止程序或ffmpeg
并不会导致已下载文件丢失或损坏,但无法继续下载。
注意:本功能为实验性功能,依赖第三方 API 服务,可能不稳定或存在限制!
- 手动输入待采集的作品链接。
- 输入文本文档路径,读取文件包含的作品链接。
支持链接格式:
https://vm.tiktok.com/分享码/
https://www.tiktok.com/@TikTok号/video/作品ID
作品会下载至 root
参数和 folder_name
参数拼接成的文件夹。
程序会自动检测并提取剪贴板中的抖音和 TikTok 作品链接,并自动下载作品文件;如需关闭,请按下 Ctrl+C,或将剪贴板内容设置为“close”以停止监听!
启动服务器,提供 API 调用功能;支持局域网远程访问,可以部署至私有服务器或者公开服务器,远程部署建议设置参数验证,防止恶意请求!
默认禁用局域网访问,如需开启,请修改 src/custom/static.py
文件的 SERVER_HOST
变量。
启动该模式后,访问 http://127.0.0.1:5555/docs
或者 http://127.0.0.1:5555/redoc
可以查阅自动生成的文档!
from httpx import post from rich import printdef 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()
项目代码已重构,该模式代码尚未更新,未来开发完成重新开放!
- 启用该功能:程序会记录下载成功的作品 ID,如果对作品文件进行移动、重命名或者删除操作,程序不会重复下载该作品,如果想要重新下载该作品,需要删除记录数据中对应的作品 ID。
- 禁用该功能:程序会在下载文件前检测文件是否存在,如果文件存在会自动跳过下载该作品,如果对作品文件进行移动、重命名或者删除操作,程序将会重新下载该作品。
数据路径: ./Volume/DouK-Downloader.db
的 download_data
数据表。
输入作品 ID 或者作品完整链接(多个作品之间使用空格分隔,支持混合输入),删除作品下载记录中对应的数据,如果输入 all
,代表清空作品下载记录数据!
是否将程序运行日志记录保存到文件,默认关闭,日志文件保存路径:./Volume/Log
如果在使用过程中发现程序 Bug,可以及时告知作者,并附上日志文件,日志记录有助于作者分析 Bug 原因和修复 Bug。
程序会向 https://github.com/JoeanAmier/TikTokDownloader/releases/latest
发送请求获取最新 Releases
版本号,并提示是否存在新版本。
如果检查新版本失败,可能是访问 GitHub 超时,并非功能异常;如果存在新版本会提示新版本的 URL
地址,不会自动下载更新。
批量下载账号作品
、批量下载链接作品
、获取直播推流地址
、采集作品评论数据
、批量下载合集作品
、采集账号详细数据
功能支持单次输入多个链接,实现批量下载 / 提取功能;支持完整链接与分享链接混合输入;输入多个链接时,需要使用空格分隔;无需对复制的链接进行额外处理,程序会自动提取输入文本中的有效链接。
-
name_format
参数中没有使用nickname
时,mark
设置没有限制。 -
name_format
参数中使用了nickname
时,mark
与nickname
不能设置为包含关系的字符串。
标识示例:
- ✔️
nickname
:ABC,mark
:DEF - ✔️
nickname
:ABC,mark
:BCD - ❌
nickname
:ABC,mark
:AB - ❌
nickname
:BC,mark
:ABC
- 账号标识
mark
参数相当于账号备注,便于用户识别账号作品文件夹,避免账号昵称修改导致无法识别已下载作品问题。 -
批量下载账号作品
模式下,如果设置了mark
参数,下载的作品将会保存至UID123456789_mark_发布作品
或UID123456789_mark_喜欢作品
文件夹内。 -
批量下载账号作品
模式下,如果mark
参数设置为空字符串,程序将会使用账号昵称作为账号标识,下载的作品将会保存至UID123456789_账号昵称_发布作品
或UID123456789_账号昵称_喜欢作品
文件夹内。
与账号标识作用一致。
修改账号标识: 修改 accounts_urls
或 accounts_urls_tiktok
的 mark
参数,再次运行 批量下载账号作品
模式,程序会自动应用新的账号标识。
修改合集标识: 修改 mix_urls
或 mix_urls_tiktok
的 mark
参数,再次运行 批量下载合集作品
模式,程序会自动应用新的账号标识。
在 批量下载账号作品
和 批量下载合集作品
模式下,程序会自动判断账号昵称/合集标题是否发生变化,如果发生变化,程序会自动识别已下载作品文件名称中的账号昵称/合集标题,并修改至最新账号昵称/合集标题。
程序会优先使用账号标识/合集标识进行更新处理,如果账号标识/合集标识为空字符串,程序会自动使用账号昵称/合集标题进行更新处理。
数据路径: ./Volume/DouK-Downloader.db
的 mapping_data
数据表;
用于记录账号 / 合集标识和账号昵称,当账号 / 合集标识或账号昵称发生变化时,程序会对相应的文件夹和文件进行重命名更新处理。
缓存数据仅供程序读取和修改,不建议手动编辑数据内容。
本指南将引导您通过 Fork 本仓库并执行 GitHub Actions 自动完成基于最新源码的程序构建和打包!
- 点击项目仓库右上角的 Fork 按钮,将本仓库 Fork 到您的个人 GitHub 账户中
- 您的 Fork 仓库地址将类似于:
https://github.com/your-username/this-repo
- 前往您 Fork 的仓库页面
- 点击顶部的 Settings 选项卡
- 点击右侧的 Actions 选项卡
- 点击 General 选项
- 在 Actions permissions 下,选择 Allow all actions and reusable workflows 选项,点击 Save 按钮
- 在您 Fork 的仓库中,点击顶部的 Actions 选项卡
- 找到名为 手动构建可执行文件 的工作流
- 点击右侧的 Run workflow 按钮:
- 选择 master 或者 develop 分支
- 点击 Run workflow
- 在 Actions 页面中,您可以看到触发的工作流运行记录
- 点击运行记录,查看详细的日志以了解打包进度和状态
- 打包完成后,进入对应的运行记录页面
- 在页面底部的 Artifacts 部分,您将看到打包的结果文件
- 点击下载并保存到本地,即可获得打包好的程序
-
资源使用:
- Actions 的运行环境由 GitHub 免费提供,普通用户每月有一定的免费使用额度(2000 分钟)
-
代码修改:
- 您可以自由修改 Fork 仓库中的代码以定制程序打包流程
- 修改后重新触发打包流程,您将得到自定义的构建版本
-
与主仓库保持同步:
- 如果主仓库更新了代码或工作流,建议您定期同步 Fork 仓库以获取最新功能和修复
A: 请确认您已按照步骤 启用 Actions,否则 GitHub 会禁止运行工作流
A:
- 检查运行日志,了解失败原因
- 确保代码没有语法错误或依赖问题
- 如果问题仍未解决,可以在本仓库的 Issues 页面 提出问题
A: 由于权限限制,您无法直接触发主仓库的 Actions。请通过 Fork 仓库的方式执行打包流程
可能是 Cookie 无效或者接口失效;请尝试清除 DNS 缓存,更新 Cookie,如果仍然无法解决,可能是接口失效,请考虑向作者反馈!
TikTok 平台的 Cookie ttwid 值无效;可能是当前账号被风控,请考虑更换账号,或者尝试设置 twc_tiktok
参数。
twc_tiktok
参数设置教程:
- 以无痕模式打开浏览器
- 按
F12
打开开发人员工具 - 选择
网络
选项卡 - 访问
https://www.tiktok.com/
- 在
筛选器
输入框输入ttwid
- 在开发人员工具窗口选择任意一个数据包(如果无数据包,刷新网页)
- 检查
响应标头
->Set-Cookie
- 复制
ttwid=XXX
内容 - 粘贴至配置文件的
twc_tiktok
参数
Set-Cookie
的内容格式为:ttwid=XXX; Path=/; Domain=tiktok.com; Max-Age=31536000; HttpOnly; Secure; SameSite=None
,复制时只需要复制 ttwid=XXX
部分,而不是复制全部内容!
将配置文件的 download
参数设置为 false
,并设置 storage_format
参数,程序将不会下载任何文件,仅采集数据。
网络异常;如果您的网络需要使用代理才能访问 TikTok,请在配置文件设置 proxy
参数!
请把配置文件的 owner_url
参数修改为实际的抖音主页链接,获取方式请查阅 issue
- 使用者对本项目的使用由使用者自行决定,并自行承担风险。作者对使用者使用本项目所产生的任何损失、责任、或风险概不负责。
- 本项目的作者提供的代码和功能是基于现有知识和技术的开发成果。作者按现有技术水平努力确保代码的正确性和安全性,但不保证代码完全没有错误或缺陷。
- 本项目依赖的所有第三方库、插件或服务各自遵循其原始开源或商业许可,使用者需自行查阅并遵守相应协议,作者不对第三方组件的稳定性、安全性及合规性承担任何责任。
- 使用者在使用本项目时必须严格遵守 GNU General Public License v3.0 的要求,并在适当的地方注明使用了 GNU General Public License v3.0 的代码。
- 使用者在使用本项目的代码和功能时,必须自行研究相关法律法规,并确保其使用行为合法合规。任何因违反法律法规而导致的法律责任和风险,均由使用者自行承担。
- 使用者不得使用本工具从事任何侵犯知识产权的行为,包括但不限于未经授权下载、传播受版权保护的内容,开发者不参与、不支持、不认可任何非法内容的获取或分发。
- 本项目不对使用者涉及的数据收集、存储、传输等处理活动的合规性承担责任。使用者应自行遵守相关法律法规,确保处理行为合法正当;因违规操作导致的法律责任由使用者自行承担。
- 使用者在任何情况下均不得将本项目的作者、贡献者或其他相关方与使用者的使用行为联系起来,或要求其对使用者使用本项目所产生的任何损失或损害负责。
- 本项目的作者不会提供 DouK-Downloader 项目的付费版本,也不会提供与 DouK-Downloader 项目相关的任何商业服务。
- 基于本项目进行的任何二次开发、修改或编译的程序与原创作者无关,原创作者不承担与二次开发行为或其结果相关的任何责任,使用者应自行对因二次开发可能带来的各种情况负全部责任。
- 本项目不授予使用者任何专利许可;若使用本项目导致专利纠纷或侵权,使用者自行承担全部风险和责任。未经作者或权利人书面授权,不得使用本项目进行任何商业宣传、推广或再授权。
- 作者保留随时终止向任何违反本声明的使用者提供服务的权利,并可能要求其销毁已获取的代码及衍生作品。
- 作者保留在不另行通知的情况下更新本声明的权利,使用者持续使用即视为接受修订后的条款。