Skip to content

Latest commit

 

History

History
78 lines (55 loc) · 3.47 KB

README.md

File metadata and controls

78 lines (55 loc) · 3.47 KB

nodespider_tiktok

一个用 Node.js 写的批量去水印多线程下载抖音用户发布/喜欢列表视频的爬虫

Features

  1. 支持批量下载指定数量的用户发布/喜欢视频和图片
  2. 支持自动重试下载失败的文件
  3. 支持自动跳过已存在的文件
  4. 支持流式下载,不会占用过多内存
  5. 支持自动保存错误日志
  6. 支持多线程下载

写在前面

脚本用 TypeScipt 编写,这会导致一个问题:Node.js 无法直接运行 TypeScript 代码,早先使用的是 tsx 来直接运行,但是当后来 Node.js 更新了更加严格的 ESM 规范后,这种方法就会导致一些问题:获取完列表之后,一直无法进行下载。

目前还没有办法解决,详情参考:New --import API breaks worker threads

现阶段运行脚本有两种方法:

  1. Node.js 18 以下版本可以直接使用 tsx 运行脚本
  2. 使用 tsc 编译 ts 文件为 js 文件,然后使用 node 运行 js 文件
  3. 降级使用还未实现多线程下载的版本(不推荐)

使用方法

在使用之前请先修改 config/config.json 配置文件

"userList": [                   // 可以下载多个用户的列表
  {
    "user": ""                  // 用户链接,支持长链和短链
    "type": "post" | "like"     // post-用户发布 | like-用户喜欢
    "limit": 0                  // 下载数限制 0 表示无限制 下载所有视频
    "username": ""              // 下载的文件夹名字,如果不填则默认为下标
  }
]
"odin_tt": ""                   // 必填,cookies 中的 odin_tt
"passport_csrf_token": ""       // 必填,cookies 中的 passport_csrf_token
"sessionid": "",                // cookies 中的 sessionid
"max_retry": 50                 // 获取内容的最大重试次数
"autoRetryDownload": true       // 是否自动重试下载失败的文件
"downloadDir": "download/",     // 下载目录
"workerNum": 4                  // 下载线程数

用户喜欢列表和发布作品只能下载公开状态的列表

// clone repo to your directory
git clone https://github.com/YuJian920/nodeSpider_tiktok.git

//go into the folder
cd nodeSpider_tiktok

// 安装依赖
pnpm install

// 启动爬虫
pnpm run start

抖音下载的图片默认为 webp 格式,在 utils/fileHelper.tsx 中有一些工具函数可以对图片格式进行转换,默认为无压缩转换,可以根据需要自行修改转换参数。你可以使用 npm run helper 来运行这些函数。

在之前的版本中,对于喜欢或者发布列表中的图片类型,下载后可能会出现格式错误的问题,utils/fileHelper.tsx 提供了一个检查文件是否为 mp4 格式的工具函数。

抖音修改了接口的限制,现在 config.json 中的 odin_tt、sessionid 和 passport_csrf_token 是必填项,如果你不填写,则只能获取第一页的数据。

可能存在的一些问题

图片转换需要用到 sharp 库,package.json 中默认安装的是和平台绑定的版本,如果你使用 Linux Mac 或者其他操作系统,可能会出现安装依赖或者脚本运行错误的问题,请修改 package.json 中的 sharp 版本或者直接删除它。

感谢

X-Bogus 的获取算法来自 Johnserf-Seed/TikTokDownload 项目,非常感谢

Johnserf-Seed/TiktokDownload

ibrod83/nodejs-file-downloader