Skip to content

Documentation

yongquan edited this page Apr 27, 2024 · 35 revisions
TikTokDownloader

TikTokDownloader 文档

GitHub GitHub forks GitHub Repo stars GitHub code size in bytes
GitHub release (with filter) GitHub all releases

🔥 TikTok 主页/视频/图集/原声;抖音主页/视频/图集/收藏/直播/原声/合集/评论/账号/搜索/热榜数据采集工具:完全开源,基于 AIOHTTP 模块实现的免费工具;批量下载抖音账号发布、喜欢、收藏作品;批量下载 TikTok 账号发布作品;下载抖音链接或 TikTok 链接作品;获取抖音直播推流地址;下载抖音直播视频;采集抖音作品评论数据;批量下载抖音合集作品;采集抖音账号详细数据;采集抖音用户 / 作品 / 直播搜索结果;采集抖音热榜数据。

项目文档正在完善中,如有发现任何错误或描述模糊之处,请告知作者以便改进!


快速入门

  1. 下载 EXE 程序 或者 配置运行环境
      下载程序运行
    1. 下载 Releases 发布的 EXE 程序压缩包或安装包
    2. 解压或安装后打开程序文件夹,双击运行 main.exe
      通过源码运行
    1. 安装不低于 3.12 版本的 Python 解释器
    2. 下载最新的源码或 Releases 发布的源码至本地
    3. 运行 python -m venv venv 命令创建虚拟环境(可选)
    4. 运行 .\venv\Scripts\activate.ps1 或者 venv\Scripts\activate 命令激活虚拟环境(可选)
    5. 运行 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt 命令安装程序所需模块
    6. 运行 python .\main.py 或者 python main.py 命令启动 TikTokDownloader
  2. 阅读 TikTokDownloader 的免责声明,根据提示输入内容
  3. 将 Cookie 信息写入配置文件
      手动复制粘贴 Cookie(推荐)
    1. 参考 Cookie 提取教程,复制所需 Cookie 至剪贴板
    2. 选择 复制粘贴写入 Cookie 选项,按照提示将 Cookie 写入配置文件
      从浏览器获取 Cookie(推荐)
    1. 选择 从浏览器获取 Cookie 选项,按照提示选择浏览器类型
      扫码登录获取 Cookie(停用)
    1. 选择 扫码登录获取 Cookie 选项,程序会显示登录二维码图片,并使用默认应用打开图片
    2. 使用抖音 APP 扫描二维码并登录账号
    3. 按照提示操作,将 Cookie 写入配置文件
  4. 返回程序界面,依次选择 终端交互模式 -> 批量下载链接作品(通用) -> 手动输入待采集的作品链接
  5. 输入抖音或 TikTok 作品链接即可下载作品文件

获取 Cookie

点击查看 Cookie 获取教程,无效 / 过期的 Cookie 会导致程序获取数据失败或者无法下载高分辨率的视频文件;目前尚无主动判断 Cookie 无效 / 过期的方法,更多 Cookie 说明

入门说明

关于终端

⭐ 推荐使用 Windows 终端(Windows 11 自带默认终端)运行程序以便获得最佳彩色交互显示效果!

链接类型

链接格式 链接内容
https://v.douyin.com/分享码/ 账号、视频、图集、直播、合集、话题
https://vm.tiktok.com/分享码/ 账号、视频、图集
https://www.douyin.com/note/作品ID 图集
https://www.douyin.com/video/作品ID 视频
https://www.douyin.com/collection/合集ID 合集
https://www.douyin.com/search/关键词?modal_id=作品ID 视频、图集
https://www.douyin.com/discover?modal_id=作品ID 视频、图集
https://www.douyin.com/user/账号ID?modal_id=作品ID 账号、视频、图集
https://live.douyin.com/直播ID 直播
https://www.tiktok.com/@TikTok号 账号
https://www.tiktok.com/@TikTok号/video/作品ID 账号、视频、图集
https://www.douyin.com/channel/分区ID?modal_id=作品ID 视频、图集
https://www.douyin.com/lvdetail/作品ID 视频(暂不支持)
  • 账号/作品/直播完整链接:使用浏览器打开抖音或 TikTok 链接时,地址栏所显示的 URL 地址。
  • 分享链接:点击 APP 或网页版的分享按钮得到的 URL 地址,抖音平台以 https://v. 开头,掺杂中文和其他字符;TikTok 平台以 https://vm 开头,不掺杂其他字符;使用时不需要手动去除中文和其他字符,程序会自动提取 URL 链接。

数据储存

  • 配置文件 settings.jsonstorage_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 环境,ffmpeg.exe 可前往 官方网站 获取。

功能简介

程序功能 功能类型
批量下载账号作品 文件下载, 数据采集
批量下载链接作品 文件下载, 数据采集
获取直播推流地址 文件下载, 数据提取
采集作品评论数据 数据采集
批量下载合集作品 文件下载, 数据采集
采集账号详细数据 数据采集
采集搜索结果数据 数据采集
采集抖音热榜数据 数据采集
批量下载收藏作品 文件下载,数据采集
批量下载收藏夹作品 文件下载,数据采集

自动更新 Cookie 参数

程序会周期性更新抖音与 TikTok Cookie 的部分参数,以保持 Cookie 的有效性。

该功能无法防止 Cookie 失效,Cookie 失效后需要重新写入!

使用者可自行启用或禁用该功能,如果您不需要使用该平台的功能,建议禁用该平台的自动更新功能!

配置文件

配置文件:项目根目录下的 settings.json 文件,可以自定义设置程序部分运行参数。

cookie 参数为必需参数,必须设置该参数才能正常使用程序;其余参数可以根据实际需求进行修改!

如果您的计算机没有合适的程序编辑 JSON 文件,建议使用 JSON 在线工具 编辑配置文件内容。

注意: 手动修改 settings.json 后需要重新运行程序才会生效!

参数含义

参数 类型 说明
mark str 账号/合集标识, 设置为空字符串代表使用账号昵称/合集标题, 属于 accounts_urls、mix_urls 和 owner_url 子参数
url str 账号主页/合集作品链接, 批量下载时使用
属于 accounts_urls、mix_urls 和 owner_url 子参数
tab str 批量下载类型, post 代表发布作品, favorite 代表喜欢作品
需要账号喜欢作品公开可见, 属于 Accounts_Urls 子参数
earliest str 作品最早发布日期, 格式: 2023/1/1, 设置为空字符串代表不限制, 属于 accounts_urls 子参数
latest str 作品最晚发布日期, 格式: 2023/1/1, 设置为空字符串代表不限制, 属于 accounts_urls 子参数
accounts_urls[mark, url, tab, earliest, latest] list[dict[str, str, str, str, str]] 抖音平台:账号标识, 账号链接, 批量下载类型, 最早发布日期, 最晚发布日期; 批量下载账号作品时使用, 支持多账号, 以字典格式包含五个参数
mix_urls[mark, url] list[dict[str, str]] 抖音平台:合集标识, 合集链接或作品链接, 批量下载合集作品时使用
支持多合集, 以字典格式包含两个参数
owner_url[mark, url] dict[str, str] 抖音平台:已登录 Cookie 的账号标识, 账号主页链接, 批量下载收藏作品时使用
用于获取账号昵称和 UID, 以字典格式包含两个参数
(即将生效)accounts_urls_tiktok[mark, url, tab, earliest, latest] list[dict[str, str, str, str, str]] TikTok 平台:账号标识, 账号链接, 批量下载类型, 最早发布日期, 最晚发布日期; 批量下载账号作品时使用, 支持多账号, 以字典格式包含五个参数
(未生效)mix_urls_tiktok[mark, url] list[dict[str, str]] TikTok 平台:合集标识, 合集链接或作品链接, 批量下载合集作品时使用
支持多合集, 以字典格式包含两个参数
(未生效)owner_url_tiktok[mark, url] dict[str, str] TikTok 平台:已登录 Cookie 的账号标识, 账号主页链接, 批量下载收藏作品时使用
用于获取账号昵称和 UID, 以字典格式包含两个参数
root str 作品文件和数据记录保存路径, 建议使用绝对路径,默认值: 项目根路径
folder_name str 下载单独链接作品时, 保存文件夹的名称, 默认值: Download
name_format str 文件保存时的命名规则, 值之间使用空格分隔
默认值: 发布时间-作品类型-账号昵称-描述
id: 作品 ID, desc: 作品描述, create_time: 发布时间
nickname: 账号昵称, mark: 账号标识, uid: 账号 ID, type: 作品类型
date_format str 日期时间格式, 默认值: 年-月-日 时:分:秒
split str 文件命名的分隔符, 默认值: -
folder_mode bool 是否将每个作品的文件储存至单独的文件夹,文件夹名称格式与 name_format 参数保持一致,默认值: false
music bool 是否下载作品音乐, 默认值: false
storage_format str 采集数据持久化储存格式, 设置为空字符串代表不保存
支持: csvxlsxsql(SQLite)
cookie dict | str 抖音网页版 Cookie, 必需参数; 建议通过程序写入配置文件,亦可手动编辑
cookie_tiktok dict | str TikTok 网页版 Cookie, 必需参数; 建议通过程序写入配置文件,亦可手动编辑
dynamic_cover bool 是否下载动态封面图, 默认值: false
original_cover bool 是否下载静态封面图, 默认值: false
proxies str 抖音请求代理地址, 设置为空字符串代表不使用代理
proxies_tiktok str TikTok 请求代理地址, 设置为空字符串代表不使用代理
download bool 是否打开下载功能, 如果关闭, 程序将不会下载任何文件; 默认值: true
max_size int 作品文件大小限制, 单位字节, 超出大小限制的作品文件将会跳过下载
设置为 0 代表无限制
chunk int 每次从服务器接收的数据块大小, 单位字节; 默认值:1048576(1 MB)
max_retry int 发送请求获取数据发生异常时重试的最大次数
设置为 0 代表关闭重试, 默认值: 10
max_pages int 批量下载账号喜欢作品、收藏作品或者采集作品评论数据时
请求数据的最大次数(不包括异常重试),默认值: 0 代表不限制
default_mode str 设置程序启动的默认模式,相当于模拟用户输入序号(多个序号使用空格分隔)
ffmpeg str ffmpeg.exe 路径,下载直播时使用,如果系统环境存在 ffmpeg 或者不想使用 ffmpeg,可以不设置该参数
update_cookie bool 是否启用自动更新抖音 Cookie 参数功能,默认值: true
update_cookie_tiktok bool 是否启用自动更新 TikTok Cookie 参数功能,默认值: true

配置示例

{
  "accounts_urls": [
    {
      "mark": "账号标识-1",
      "url": "账号主页链接-1",
      "tab": "post",
      "earliest": "2023/1/1",
      "latest": "2023/6/1"
    },
    {
      "mark": "",
      "url": "账号主页链接-2",
      "tab": "favorite",
      "earliest": "2023/7/1",
      "latest": ""
    }
  ],
  "accounts_urls_tiktok": "参数规则与 accounts_urls 一致",
  "mix_urls": [
    {
      "mark": "",
      "url": "合集链接或者作品链接"
    },
    {
      "mark": "合集标识-2",
      "url": "合集链接或者作品链接"
    }
  ],
  "mix_urls_tiktok": "参数规则与 mix_urls 一致",
  "owner_url": {
    "mark": "已登录 Cookie 的账号标识,可以设置为空字符串(可选)",
    "url": "已登录 Cookie 的账号主页链接(可选)"
  },
  "owner_url_tiktok": "参数规则与 owner_url 一致",
  "root": "C:\\TikTokDownloader",
  "folder_name": "SOLO",
  "name_format": "create_time uid id",
  "date_format": "%Y-%m-%d",
  "split": " @ ",
  "folder_mode": false,
  "music": false,
  "storage_format": "xlsx",
  "cookie": {
    "passport_csrf_token": "demo",
    "passport_csrf_token_default": "demo",
    "odin_tt": "demo"
  },
  "cookie_tiktok": "参数规则与 cookie 一致",
  "dynamic_cover": false,
  "original_cover": false,
  "proxies": "http://127.0.0.1:9999",
  "proxies_tiktok": "参数规则与 proxies 一致",
  "download": true,
  "max_size": 104857600,
  "chunk": 10485760,
  "max_retry": 10,
  "max_pages": 2,
  "default_mode": "4 2 1",
  "ffmpeg": "C:\\TikTokDownloader\\ffmpeg.exe",
  "update_cookie": true,
  "update_cookie_tiktok": true
}

服务器部署模式:cookieproxiesmax_retry 参数生效,其余参数均不生效,但仍需正确编辑配置文件。

参数详解

下载喜欢作品

{
  "accounts_urls": [
    {
      "mark": "",
      "url": "账号主页链接-1",
      "tab": "favorite",
      "earliest": "",
      "latest": ""
    },
    {
      "mark": "",
      "url": "账号主页链接-2",
      "tab": "post",
      "earliest": "",
      "latest": ""
    },
    {
      "mark": "",
      "url": "账号主页链接-3",
      "tab": "favorite",
      "earliest": "",
      "latest": ""
    }
  ]
}

将待下载的抖音账号信息写入配置文件,每个账号对应一个对象/字典,tab 参数设置为 favorite 代表批量下载喜欢作品,支持多账号。

批量下载账号喜欢作品需要使用已登录的 Cookie,否则可能无法获取正确的账号信息!

发布日期限制

{
  "accounts_urls": [
    {
      "mark": "账号标识",
      "url": "账号主页链接",
      "tab": "post",
      "earliest": "2023/12/1",
      "latest": ""
    }
  ]
}

如果已经采集某账号的全部发布作品,建议设置 earliestlatest 参数以减少后续采集请求次数。

例如:将 earliest 参数设置为 2023/12/1,程序获取账号发布作品数据时,无需获取早于 2023/12/1 的作品数据,可减少请求次数提高运行效率。

文件储存路径

{
  "root": "C:\\TikTokDownloader",
  "folder_name": "SOLO"
}

程序会将下载的文件和记录的数据储存至 C:\TikTokDownloader 文件夹内,链接下载的作品文件会储存至 C:\TikTokDownloader\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 页数据;用于解决批量下载账号喜欢作品、收藏作品需要获取全部数据的问题,以及作品评论数据数量过多的采集问题。

不影响批量下载账号发布作品,如需控制账号发布作品数据获取次数,可使用 earliestlatest 参数实现。

默认启动模式

{
  "default_mode": "4 2 1"
}

运行程序自动依次进入 终端交互模式 -> 批量下载账号作品(抖音) -> 使用 accounts_urls 参数的账号链接(推荐)

其他示例:4 2 代表依次进入 终端交互模式 -> 批量下载账号作品(抖音)6代表进入Web API 模式

程序代理设置

{
  "proxies": "http://127.0.0.1:9999"
}

程序获取网络数据时使用 http://127.0.0.1:9999 作为代理;程序会自动验证代理是否可用,如果代理不可用,则 proxies 参数不生效。

如果您的电脑使用了代理工具且未修改默认端口,可以尝试以下设置:

  • Clash: http://127.0.0.1:7890
  • v2rayN: http://127.0.0.1:10809

高级配置

如果想要进一步修改程序功能,可以编辑 src/custom 文件夹内容(仅适用于通过源码运行项目),按照注释指引和实际需求进行自定义修改。

部分可自定义设置的功能:
  • 设置作品文件下载的最大线程数量
  • 设置文件名称的作品描述长度限制
  • 设置非法字符替换规则
  • 开启服务器模式局域网访问功能
  • 设置服务器模式主机及端口
  • 设置 Cookie 参数更新间隔
  • 设置彩色交互提示颜色
  • 设置请求数据时间间隔
  • 设置作品下载记录数据备份间隔
  • 设置获取数据失败时的处理策略
  • 设置自定义作品筛选规则
  • 设置分批获取数据策略
  • 设置服务器模式参数验证

功能介绍

复制粘贴写入 Cookie

参考 Cookie 提取教程,手动从浏览器复制所需 Cookie 至剪贴板,按照程序提示输入 Cookie 后回车确认,程序会自动处理 Cookie 并写入配置文件。

如果粘贴 Cookie 至终端后无响应,可能是 Cookie 文本长度超出终端最大文本长度限制,请考虑更换终端或者其他写入方式。

从浏览器获取 Cookie

自动读取本地浏览器的 Cookie 数据,并提取所需 Cookie 写入配置文件,需要完全关闭对应浏览器才能读取 Cookie 数据。

扫码登录获取 Cookie

程序自动获取抖音登录二维码,随后会在终端输出二维码,并使用系统默认图片浏览器打开二维码图片,使用者通过抖音 APP 扫码并登录账号,操作后关闭二维码图片窗口,程序会自动检查登录结果并将登录后的 Cookie 写入配置文件。

注意:扫码登录可能会导致抖音账号被风控,未来可能禁用该功能!

终端交互模式

功能最全面的模式,支持全部功能。

批量下载账号作品(抖音)

  1. 使用 settings.jsonaccounts_urls 参数中的账号链接。
  2. 手动输入待采集的账号链接;此选项仅支持批量下载账号发布页作品,暂不支持参数设置。
  3. 输入文本文档路径,读取文件包含的账号链接;此选项仅支持批量下载账号发布页作品,暂不支持参数设置。

支持链接格式:

  • https://v.douyin.com/分享码/
  • https://www.douyin.com/user/账号ID
  • https://www.douyin.com/user/账号ID?modal_id=作品ID

如果需要大批量采集账号作品,建议启用 src/custom/function.py 文件的 suspend 函数。

如果当前账号昵称或账号标识不是有效的文件夹名称时,程序会提示用户输入临时的账号标识,以便程序继续处理账号。

处理多个账号时,如果某个账号获取数据失败,程序会询问用户是否继续处理(可编辑 src/custom/function.py 文件修改功能)

每个账号的作品会下载至 root 参数路径下的账号文件夹,账号文件夹格式为 UID123456789_mark_类型 或者 UID123456789_账号昵称_类型

批量下载链接作品(抖音)

  1. 手动输入待采集的作品链接。
  2. 输入文本文档路径,读取文件包含的作品链接。

支持链接格式:

  • https://v.douyin.com/分享码/
  • https://vm.tiktok.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.tiktok.com/@账号昵称/video/作品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 下载直播时,关闭 TikTokDownloader 不会影响直播下载。
  • 程序调用内置下载器下载直播时,需要保持 TikTokDownloader 运行直到直播结束。
  • 程序询问是否下载直播时,输入直播清晰度或者对应序号即可下载,例如:下载最高清晰度输入 FULL_HD1 或者 1 均可。
  • 程序调用内置下载器下载的直播文件,视频时长会显示为直播总时长,实际视频内容从下载时间开始,靠后部分的片段无法播放。
  • 直播视频会下载至 root 参数路径下的 Live 文件夹

采集作品评论数据(抖音)

  1. 手动输入待采集的作品链接。
  2. 输入文本文档路径,读取文件包含的作品链接。

支持链接格式:

  • 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_评论数据

批量下载合集作品(抖音)

  1. 使用 settings.jsonmix_urls 参数中的合集链接或作品链接。
  2. 输入合集链接,或者属于合集的任意一个作品链接。
  3. 输入文本文档路径,读取文件包含的作品链接或合集链接;该选项暂不支持设置合集标识。

支持链接格式:

  • 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 函数。

如果当前合集标题或合集标识不是有效的文件夹名称时,程序会提示用户输入临时的合集标识,以便程序继续处理合集。

处理多个合集时,如果某个合集获取数据失败,程序会询问用户是否继续处理(可编辑 src/custom/function.py 文件修改功能)

每个合集的作品会下载至 root 参数路径下的合集文件夹,合集文件夹格式为 MIX123456789_mark_合集作品 或者 MIX123456789_合集标题_合集作品

采集账号详细数据(抖音)

  1. 使用 settings.jsonaccounts_urls 参数中的账号链接。
  2. 手动输入待采集的账号链接。
  3. 输入文本文档路径,读取文件包含的账号链接。

支持链接格式:

  • https://v.douyin.com/分享码/
  • https://www.douyin.com/user/账号ID
  • https://www.douyin.com/user/账号ID?modal_id=作品ID

重复获取相同账号数据时会储存为新的数据行,不会覆盖原有数据;必须设置 storage_format 参数才能正常使用。

采集搜索结果数据

搜索条件输入格式

格式:关键词 搜索类型 页数 排序规则 时间筛选

  • 搜索类型:综合搜索 视频搜索 用户搜索 直播搜索(可省略 “ 搜索 ” 字符)
  • 排序依据:综合排序 最多点赞 最新发布
  • 时间筛选:0:不限;1:一天内;7:一周内;182:半年内

参数之间使用空格分隔,搜索类型排序规则 支持输入中文或者对应索引,页数时间筛选 仅支持输入整数。

程序采集的抖音搜索结果会储存至文件,储存名称格式:搜索数据_搜索时间_搜索类型_关键词_排序依据_时间筛选;不支持直接下载搜索结果作品;必须设置 storage_format 参数才能正常使用。

用户搜索直播搜索 不需要输入排序依据和时间筛选!

输入示例

输入:猫咪

含义: 关键词:猫咪;搜索类型:综合搜索;页数:1;排序依据:综合排序;时间筛选:不限


输入:猫咪 1 2 1 等效于 猫咪 视频搜索 2 最多点赞

含义: 关键词:猫咪;搜索类型:视频搜索;页数:2;排序依据:最多点赞;时间筛选:不限


输入:猫咪 0 10 0 7 等效于 猫咪 综合搜索 10 综合排序 7

含义: 关键词:猫咪;搜索类型:综合搜索;页数:10;排序依据:综合排序;时间筛选:一周内


输入:猫咪 1 5 2 182 等效于 猫咪 视频搜索 5 最新发布 182

含义: 关键词:猫咪;搜索类型:视频搜索;页数:5;排序依据:最新发布;时间筛选:半年内


输入:猫咪 2 2 等效于 猫咪 用户搜索 2

含义: 关键词:猫咪;搜索类型:用户搜索;页数:2


输入:猫咪 3 2 等效于 猫咪 直播搜索 2

含义: 关键词:猫咪;搜索类型:直播搜索;页数:2

采集抖音热榜数据(抖音)

无需输入,采集 抖音热榜娱乐榜社会榜挑战榜 数据并储存至文件;必须设置 storage_format 参数才能正常使用。

储存名称格式:热榜数据_采集时间_热榜名称

批量下载话题作品(抖音)

尚未支持!

批量下载收藏作品(抖音)

无需输入,需要在配置文件写入已登录的 Cookie,并在 owner_url 参数填入对应的账号主页链接和账号标识(可选);目前仅支持采集当前 Cookie 对应账号的收藏作品。

如果未设置 owner_url 参数,程序会使用临时字符串作为账号昵称和 UID。

账号文件夹格式为 UID123456789_mark_收藏作品 或者 UID123456789_账号昵称_收藏作品

批量下载收藏夹作品(抖音)

尚未支持!

批量下载账号作品(TikTok)

目前仅支持下载账号发布作品,即将支持下载账号喜欢作品。

  1. 使用 settings.jsonaccounts_urls_tiktok 参数中的账号链接。
  2. 手动输入待采集的账号链接;此选项仅支持批量下载账号发布页作品,暂不支持参数设置。
  3. 输入文本文档路径,读取文件包含的账号链接;此选项仅支持批量下载账号发布页作品,暂不支持参数设置。

支持链接格式:

  • https://www.tiktok.com/@TikTok号
  • https://www.tiktok.com/@TikTok号/video/作品ID

如果需要大批量采集账号作品,建议启用 src/custom/function.py 文件的 suspend 函数。

如果当前账号昵称或账号标识不是有效的文件夹名称时,程序会提示用户输入临时的账号标识,以便程序继续处理账号。

处理多个账号时,如果某个账号获取数据失败,程序会询问用户是否继续处理(可编辑 src/custom/function.py 文件修改功能)

每个账号的作品会下载至 root 参数路径下的账号文件夹,账号文件夹格式为 UID123456789_mark_类型 或者 UID123456789_账号昵称_类型

批量下载链接作品(TikTok)

  1. 手动输入待采集的作品链接。
  2. 输入文本文档路径,读取文件包含的作品链接。

支持链接格式:

  • https://www.tiktok.com/@TikTok号/video/作品ID

作品会下载至 root 参数和 folder_name 参数拼接成的文件夹。

批量下载合集作品(TikTok)

尚未支持!

获取直播推流地址TikTok)

尚未支持!

后台监测模式

敬请期待!

Web API 接口模式

启动服务器,提供 API 调用功能;支持局域网远程访问,可以部署至私有服务器或者公开服务器,远程部署建议设置参数验证。

默认禁用局域网访问,如需开启,请修改 src/custom/static.py 文件的 SERVER_HOST 变量。

部分接口支持传入临时 cookie 参数,如果传入临时 cookie 参数,本次 API 请求会使用临时 cookie 向抖音服务器获取数据,如果没有传入 cookie 参数,程序会使用配置文件的 cookie 参数;需要注意临时 cookie 和配置文件 cookie 参数的有效性;程序不会储存临时 cookie 内容。

目前支持调用 API 获取数据,暂不支持调用 API 下载文件!

API 接口通用说明:

  • 请求类型:POST
  • 请求格式:JSON
  • 响应格式:JSON

代码示例:

import requests

params = {
    "url": "https://www.douyin.com/note/12345678910",
    "source": True
}
response = requests.post("http://localhost:5000/detail/", json=params)
print(response.json())

配置文件修改接口

修改 settings.json 配置文件;无需发送全部参数,仅需发送想要修改的参数;参数格式要求与配置文件格式要求保持一致。

请求接口:/settings/

请求参数(可选)

{
  "root": "可选参数",
  "folder_name": "可选参数",
  "name_format": "可选参数",
  "date_format": "可选参数",
  "split": "可选参数",
  "folder_mode": "可选参数",
  "music": "可选参数",
  "storage_format": "可选参数",
  "cookie": "可选参数",
  "dynamic_cover": "可选参数",
  "original_cover": "可选参数",
  "proxies": "可选参数",
  "download": "可选参数",
  "max_size": "可选参数",
  "chunk": "可选参数",
  "max_retry": "可选参数",
  "max_pages": "可选参数",
  "default_mode": "可选参数",
  "ffmpeg": "可选参数",
  "token": "自定义参数"
}

响应参数

返回 settings.json 配置文件所有参数

账号作品数据接口

获取账号发布作品或者喜欢作品数据

请求接口:/account/

请求参数

{
  "url": "账号主页链接,字符串,必需参数",
  "tab": "发布作品或者喜欢作品,字符串,可选参数,默认值: post",
  "earliest": "作品最早发布日期,字符串,可选参数",
  "latest": "作品最晚发布日期,字符串,可选参数",
  "pages": "账号喜欢作品数据最大请求次数,整数,可选参数",
  "source": "是否返回原始数据,布尔值,可选参数,默认值: false",
  "cookie": "抖音 cookie,字符串,可选参数",
  "token": "自定义参数"
}

响应参数

{
  "data": [
    "作品数据-1,JSON 格式",
    "作品数据-2,JSON 格式",
    "..."
  ],
  "message": "success"
}

链接作品数据接口

获取作品详细数据;支持 TikTok 平台。

请求接口:/detail/

请求参数

{
  "url": "作品链接,支持多作品,字符串,必需参数",
  "source": "是否返回原始数据,布尔值,可选参数,默认值: false",
  "cookie": "抖音 cookie,字符串,可选参数",
  "token": "自定义参数"
}

响应参数

{
  "data": [
    "作品数据-1,JSON 格式",
    "作品数据-2,JSON 格式",
    "..."
  ],
  "message": "success"
}

直播推流数据接口

获取直播推流数据

请求接口:/live/

请求参数

{
  "url": "直播链接,支持多直播,字符串,必需参数",
  "source": "是否返回原始数据,布尔值,可选参数,默认值: false",
  "cookie": "抖音 cookie,字符串,可选参数",
  "token": "自定义参数"
}

响应参数

{
  "data": [
    "直播数据-1,JSON 格式",
    "直播数据-2,JSON 格式",
    "..."
  ],
  "message": "success"
}

作品评论数据接口

获取作品评论数据

请求接口:/comment/

请求参数

{
  "url": "作品链接,字符串,必需参数",
  "pages": "作品评论数据最大请求次数,整数,可选参数",
  "source": "是否返回原始数据,布尔值,可选参数,默认值: false",
  "cookie": "抖音 cookie,字符串,可选参数",
  "token": "自定义参数"
}

响应参数

{
  "data": [
    "评论数据-1,JSON 格式",
    "评论数据-2,JSON 格式",
    "..."
  ],
  "message": "success"
}

合集作品数据接口

获取合集作品数据

请求接口:/mix/

请求参数

{
  "url": "属于合集的作品链接,字符串,必需参数",
  "source": "是否返回原始数据,布尔值,可选参数,默认值: false",
  "cookie": "抖音 cookie,字符串,可选参数",
  "token": "自定义参数"
}

响应参数

{
  "data": [
    "作品数据-1,JSON 格式",
    "作品数据-2,JSON 格式",
    "..."
  ],
  "message": "success"
}

账号详细数据接口

获取账号详细数据

请求接口:/user/

请求参数

{
  "url": "账号主页链接,支持多账号,字符串,必需参数",
  "source": "是否返回原始数据,布尔值,可选参数,默认值: false",
  "cookie": "抖音 cookie,字符串,可选参数",
  "token": "自定义参数"
}

响应参数

{
  "data": [
    "账号详细数据-1,JSON 格式",
    "账号详细数据-2,JSON 格式",
    "..."
  ],
  "message": "success"
}

搜索结果数据接口

获取抖音搜索结果数据

请求接口:/search/

请求参数

{
  "keyword": "关键词,字符串,必需参数",
  "type": "搜索类型,字符串,可选参数",
  "pages": "结果页数,字符串,可选参数",
  "sort_type": "排序依据,字符串,可选参数",
  "publish_time": "发布时间,字符串,可选参数",
  "source": "是否返回原始数据,布尔值,可选参数,默认值: false",
  "cookie": "抖音 cookie,字符串,可选参数",
  "token": "自定义参数"
}

响应参数

{
  "data": [
    "搜索结果数据-1,JSON 格式",
    "搜索结果数据-2,JSON 格式",
    "..."
  ],
  "message": "success"
}

抖音热榜数据接口

获取抖音热榜数据

请求接口:/hot/

请求参数

{
  "source": "是否返回原始数据,布尔值,可选参数,默认值: false",
  "token": "自定义参数"
}

响应参数

{
  "time": "热榜采集时间",
  "data": [
    {
      "抖音热榜": [
        "热榜数据-1,JSON 格式",
        "热榜数据-2,JSON 格式",
        "..."
      ]
    },
    {
      "娱乐榜": [
        "热榜数据-1,JSON 格式",
        "热榜数据-2,JSON 格式",
        "..."
      ]
    },
    {
      "社会榜": [
        "热榜数据-1,JSON 格式",
        "热榜数据-2,JSON 格式",
        "..."
      ]
    },
    {
      "挑战榜": [
        "热榜数据-1,JSON 格式",
        "热榜数据-2,JSON 格式",
        "..."
      ]
    }
  ],
  "message": "success"
}

Web UI 交互模式

提供浏览器可视化交互界面,支持 批量下载链接作品获取直播推流地址 功能,支持局域网远程访问,可以部署至私有服务器,不可直接部署至公开服务器。

服务器部署模式

提供浏览器可视化交互界面,支持 批量下载链接作品 功能,默认启用局域网访问,用于部署至公开服务器,为网站访客提供作品下载服务,建议设置参数验证。

支持远程修改 settings.json 配置文件,请参考 配置文件修改接口

启用/禁用检查更新功能

启用检查更新功能后,运行程序时会向 https://github.com/JoeanAmier/TikTokDownloader/releases/latest 发送请求获取最新 Releases 版本号,并提示是否存在新版本。

如果检查新版本失败,可能是访问 GitHub 超时,并非功能异常;如果存在新版本会提示新版本的 URL 地址,不会自动下载更新。

启用/禁用作品下载记录

  • 启用该功能:程序会记录下载成功的作品 ID,如果对作品文件进行移动、重命名或者删除操作,程序不会重复下载该作品,如果想要重新下载该作品,需要删除记录文件中对应的作品 ID 后保存文件并重新运行程序。
  • 禁用该功能:程序会在下载文件前检测文件是否存在,如果文件存在会自动跳过下载该作品,如果对作品文件进行移动、重命名或者删除操作,程序将会重新下载该作品。

程序会周期性备份作品下载记录数据,当作品下载记录数据丢失时,程序会尝试通过备份文件恢复数据,备份周期可以通过 src/custom/static.py 文件设置。

记录文件路径: ./cache/IDRecorder.txt

不建议在程序运行过程中访问记录文件!

删除指定下载记录

输入作品 ID 或者作品完整链接(多个作品之间使用空格分隔,支持混合输入),删除作品下载记录中对应的数据,如果输入 all,代表清空作品下载记录数据!

作品下载记录数据将在程序结束运行后保存至文件!

启用/禁用运行日志记录

是否将程序运行日志记录保存到文件,默认关闭,日志文件保存路径:./Log

如果在使用过程中发现程序 Bug,可以及时告知作者,并附上日志文件,日志记录有助于作者分析 Bug 原因和修复 Bug。

其他功能说明

单次输入多个链接

批量下载账号作品批量下载链接作品获取直播推流地址采集作品评论数据批量下载合集作品采集账号详细数据 功能支持单次输入多个链接,实现批量下载 / 提取功能;单次输入多个链接时,链接类型需要保持一致,不支持完整链接与分享链接混合输入。

输入示例

输入多个链接时,需要使用空格分隔;无需对复制的链接进行额外处理,程序会自动提取输入文本中的有效链接。

  • 支持:https://v.douyin.com/abc/ https://v.douyin.com/abc/
  • 支持:https://www.douyin.com/video/123456789 https://www.douyin.com/note/123456789
  • 支持:https://www.douyin.com/collection/123456789 https://www.douyin.com/collection/123456789
  • 支持:https://www.douyin.com/user/ABC?modal_id=123456789 https://www.douyin.com/note/123456789
  • 不支持:https://v.douyin.com/abc/ https://www.douyin.com/video/123456789
  • 不支持:https://www.douyin.com/collection/123456789 https://www.douyin.com/video/123456789
  • 不支持:https://www.douyin.com/video/123456789 https://www.tiktok.com/@ABC/video/123456789

账号/合集标识

标识设置规则

  • name_format 参数中没有使用 nickname 时,mark 设置没有限制。
  • name_format 参数中使用了 nickname 时,marknickname 不能设置为包含关系的字符串。

标识示例:

  • ✔️ 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_urlsmark 参数,再次运行 批量下载账号作品 模式,程序会自动应用新的账号标识。

修改合集标识: 修改 mix_urlsmark 参数,再次运行 批量下载合集作品 模式,程序会自动应用新的账号标识。

账户昵称修改

批量下载账号作品批量下载合集作品 模式下,程序会判断账号昵称是否有修改,如果有修改,程序会自动识别已下载作品文件名称中的账户昵称,并修改至最新账户昵称。

AccountCache.json

缓存文件 用于记录账号 / 合集标识和账号昵称,当账号 / 合集标识或账号昵称发生变化时,程序会读取文件内容,并对相应的文件夹和文件进行重命名更新处理,如果该文件不存在或者删除该文件,程序首次运行不会判断账号 / 合集标识和账号昵称是否发生变化,程序运行结束后会生成新的缓存文件,之后程序才能监控账号 / 合集标识和账号昵称变化。

缓存文件仅供程序读取和写入,不建议手动编辑文件内容。

服务器部署模式二次开发

API 文档

请求URL:/single/

请求类型:POST

请求格式:JSON

请求参数:

{
  "url": "抖音作品链接或 TikTok 作品链接",
  "token": "自定义参数"
}

后端会自动处理 url 参数中的作品链接,可以不在前端对 url 参数进行额外处理。

支持链接:

  • https://v.douyin.com/分享码/
  • https://vm.tiktok.com/分享码/
  • https://www.douyin.com/note/作品ID
  • https://www.douyin.com/video/作品ID
  • https://www.douyin.com/user/账号ID?modal_id=作品ID
  • https://www.tiktok.com/@账号昵称/video/作品ID

响应格式:JSON

响应参数:

{
  "text": "解析结果提示, 字符串",
  "author": "作者昵称, 字符串; 失败时返回 null",
  "describe": "作品描述, 字符串; 失败时返回 null",
  "download": "作品下载地址, 视频返回字符串, 图集返回由下载地址成的数组; 失败时返回 false",
  "music": "原声下载地址, 字符串, 失败时返回 false",
  "origin": "静态封面图地址, 字符串; 失败时返回 false",
  "dynamic": "动态封面图地址, 字符串; 失败时返回 false",
  "preview": "作品预览图地址, 字符串, 视频返回静态封面图, 图集返回首张图片; 失败时返回空白预览图地址"
}

免责声明

  • 使用者对本项目的使用由使用者自行决定,并自行承担风险。作者对使用者使用本项目所产生的任何损失、责任、或风险概不负责。
  • 本项目的作者提供的代码和功能是基于现有知识和技术的开发成果。作者尽力确保代码的正确性和安全性,但不保证代码完全没有错误或缺陷。
  • 使用者在使用本项目时必须严格遵守 GNU General Public License v3.0 的要求,并在适当的地方注明使用了 GNU General Public License v3.0 的代码。
  • 使用者在任何情况下均不得将本项目的作者、贡献者或其他相关方与使用者的使用行为联系起来,或要求其对使用者使用本项目所产生的任何损失或损害负责。
  • 使用者在使用本项目的代码和功能时,必须自行研究相关法律法规,并确保其使用行为合法合规。任何因违反法律法规而导致的法律责任和风险,均由使用者自行承担。
  • 本项目的作者不会提供 TikTokDownloader 项目的付费版本,也不会提供与 TikTokDownloader 项目相关的任何商业服务。
  • 基于本项目进行的任何二次开发、修改或编译的程序与原创作者无关,原创作者不承担与二次开发行为或其结果相关的任何责任,使用者应自行对因二次开发可能带来的各种情况负全部责任。
在使用本项目的代码和功能之前,请您认真考虑并接受以上免责声明。如果您对上述声明有任何疑问或不同意,请不要使用本项目的代码和功能。如果您使用了本项目的代码和功能,则视为您已完全理解并接受上述免责声明,并自愿承担使用本项目的一切风险和后果。
Clone this wiki locally