2022-11-14 02:20:28 -08:00

14 KiB
Raw Blame History

Douyin_TikTok_Download_API(抖音/TikTok无水印解析API)

📝运行说明👽API使用🔧手动部署🚧Docker部署📦Docker镜像🧑‍💻贡献者


GitHub licenseGitHub issuesGitHub forksGitHub starsDocker Image size

Language: [English] [简体中文]

👻介绍

本项目是基于 PyWebIOFastAPIAIOHTTP,快速异步的抖音/TikTok数据爬取工具并通过Web端实现在线批量解析以及下载无水印视频或图集数据爬取APIiOS快捷指令无水印下载等功能。你可以自己部署或改造本项目实现更多功能也可以在你的项目中直接调用scraper.py或安装现有的pip包作为解析库轻松爬取数据等.....

一些简单的运用场景:

下载禁止下载的视频进行数据分析iOS无水印下载搭配iOS自带的快捷指令APP 配合本项目API实现应用内下载或读取剪贴板下载等.....

🖥公共站点: 我很脆弱...请不要随意打我 (·•᷄ࡇ•᷅

API-V2: 支持输入Douyin|TikTok用户主页爬取该作者[主页视频数据(去水印链接, 已点赞视频列表(权限需为公开), 视频评论数据, 背景音乐视频列表数据, 等等...), 详细信息请查看V2文档, 服务器响应时间有时会变长, 使用时请将timeout值设高.

🍔Web APP: https://douyin.wtf/

🍟API-V1: https://api.douyin.wtf/docs

🌭API-V2: https://api-v2.douyin.wtf/docs

💾iOS Shortcut(快捷指令): Shortcut release

📦️桌面端下载器(仓库推荐)

⚗️技术栈

scraper.py:

  • 向[Douyin|TikTok]的API提交请求并取回数据处理后返回字典(dict),支持异步。

web_api.py:

  • 获得请求参数并使用Scraper()类处理数据后以JSON形式返回视频下载配合iOS快捷指令实现快速调用支持异步。

web_app.py:

  • web_api.py以及scraper.py制作的简易Web程序将网页输入的值进行处理后使用Scraper()类处理并配合web_api.py的接口输出在网页上(类似前后端分离)

以上文件的参数大多可在config.ini中进行修改

💡项目文件结构

.
└── Douyin_TikTok_Download_API/
    ├── /static -> (PyWebIO static resources)
    ├── web_app.py -> (Web APP)
    ├── web_api.py -> (API)
    ├── scraper.py -> (Parsing library)
    ├── config.ini -> (configuration file)

💯已支持功能:

  • 抖音(抖音海外版: TikTok视频/图片解析
  • 网页端批量解析(支持抖音/TikTok混合提交)
  • 网页端解析结果页批量下载无水印视频(V3.0.0暂时移除)
  • API调用获取链接数据
  • 制作pip包方便快速导入你的项目
  • [iOS快捷指令快速调用API]实现应用内下载无水印视频/图集
  • 解析作者主页内所有视频(API-V2 支持抖音/TikTok)
  • 解析视频内所有评论信息(API-V2 支持抖音/TikTok)

🤦‍后续功能:

  • 欢迎提出新的建议或将你的思路在issue中与我分享
  • 欢迎提交PR至Development分支 ♪(・ω・)ノ)

🧭运行说明(Python版本 > 3.0):

🚨如果你要部署本项目,请参考部署方式(Docker部署, 手动部署)

  • 克隆本仓库:
git clone https://github.com/Evil0ctal/Douyin_TikTok_Download_API.git
  • 移动至仓库目录:
cd Douyin_TikTok_Download_API
  • 安装依赖库:
pip install -r requirements.txt
  • 修改config.ini(可选)
vim config.ini
  • 网页解析
# 运行web_app.py
python3 web_app.py
  • API
# 运行web_api.py
python3 web_api.py
  • 调用解析库
import asyncio
# pip install douyin-tiktok-scraper
from douyin_tiktok_scraper.scraper import Scraper

api = Scraper()

async def async_test(url: str) -> dict:
    # Hybrid parsing(Douyin/TikTok URL)
    hybrid_data = await api.hybrid_parsing(url)
    print(f"The hybrid parsing data is: {hybrid_data}")
    return hybrid_data

asyncio.run(async_test(url=input("Paste Douyin/TikTok share URL here: ")))
  • 入口(端口可在config.ini文件中修改)
Web入口:
http://localhost(服务器IP):8080/
API入口:
http://localhost(服务器IP):8000/

🗺️支持的提交格式(包含但不仅限于以下例子)

  • 抖音分享口令 (APP内复制)
例子7.43 pda:/ 让你在几秒钟之内记住我  https://v.douyin.com/L5pbfdP/ 复制此链接打开Dou音搜索直接观看视频
  • 抖音短网址 (APP内复制)
例子https://v.douyin.com/L4FJNR3/
  • 抖音正常网址 (网页版复制)
例子:
https://www.douyin.com/video/6914948781100338440
  • 抖音发现页网址 (APP复制)
例子:
https://www.douyin.com/discover?modal_id=7069543727328398622
  • TikTok短网址 (APP内复制)
例子:
https://vm.tiktok.com/TTPdkQvKjP/
  • TikTok正常网址 (网页版复制)
例子:
https://www.tiktok.com/@tvamii/video/7045537727743380782
  • 抖音/TikTok批量网址(无需使用符合隔开)
例子:
2.84 nqe:/ 骑白马的也可以是公主%%百万转场变身  https://v.douyin.com/L4FJNR3/ 复制此链接打开Dou音搜索直接观看视频
8.94 mDu:/ 让你在几秒钟之内记住我  https://v.douyin.com/L4NpDJ6/ 复制此链接打开Dou音搜索直接观看视频
9.94 LWz:/ ok我坦白交代 %%knowknow  https://v.douyin.com/L4NEvNn/ 复制此链接打开Dou音搜索直接观看视频
https://www.tiktok.com/@gamer/video/7054061777033628934
https://www.tiktok.com/@off.anime_rei/video/7059609659690339586
https://www.tiktok.com/@tvamii/video/7045537727743380782

🛰️API文档

也可以在web_api.py的代码中看到接口文档

API-V1文档 http://localhost(服务器IP):8000/docshttps://api.douyin.wtf/docs

API-V2文档 https://api-v2.douyin.wtf/docs

API演示

  • 爬取视频数据(TikTok或Douyin混合解析) https://api.douyin.wtf/api?url=[视频链接/Video URL]&minimal=false

  • 下载视频/图集(TikTok或Douyin混合解析) https://api.douyin.wtf/download?url=[视频链接/Video URL]&prefix=true&watermark=false

  • 替换域名下载视频/图集

[抖音]
原始链接:
https://www.douyin.com/video/7159502929156705567
替换域名:
https://api.douyin.wtf/video/7159502929156705567
# 返回无水印视频下载

[TikTok]
original link:
https://www.tiktok.com/@evil0ctal/video/7156033831819037994
Replace Domain:
https://api.douyin.wtf/@evil0ctal/video/7156033831819037994
# Return No Watermark Video Download

更多演示请查看文档内容......


💾部署(方式一 手动部署)

注: 截图可能因更新问题与文字不符,一切请优先参照文字叙述。

最好将本项目部署至海外服务器(优先选择美国地区的服务器),否则可能会出现奇怪的问题。

例子: 项目部署在国内服务器而人在美国点击结果页面链接报错403 目测与抖音CDN有关系。 项目部署在韩国服务器解析TikTok报错 目测TikTok对某些地区或IP进行了限制。

使用宝塔Linux面板进行部署( 中文宝塔要强制绑定手机号了很流氓且无法绕过建议使用宝塔国际版谷歌搜索关键字aapanel自行安装部署步骤相似。)

  • 首先要去安全组开放8080和8000端口Web默认8080API默认8000可以在文件config.ini中修改。
  • 在宝塔应用商店内搜索python并安装项目管理器 (推荐使用1.9版本)


  • 创建一个项目名字随意
  • 路径选择你上传文件的路径
  • Python版本需要至少3以上(在左侧版本管理中自行安装)
  • 框架修改为Uvicorn
  • 启动方式修改为python
  • Web启动文件选择web_app.py
  • API启动文件选择web_api.py
  • 勾选安装模块依赖
  • 开机启动随意
  • 请自行判断端口是否被占用运行端口可在文件config.ini中修改。
  • 如果有大量请求请使用 进程守护 启动防止进程关闭


💾部署(方式二 Docker)

  • 安装docker
curl -fsSL get.docker.com -o get-docker.sh&&sh get-docker.sh &&systemctl enable docker&&systemctl start docker
  • 留下config.int和docker-compose.yml文件即可
  • 运行命令,让容器在后台运行
docker compose up -d
  • 查看容器日志
docker logs -f douyin_tiktok_download_api
  • 删除容器
docker rm -f douyin_tiktok_download_api
  • 更新
docker compose pull && docker compose down && docker compose up -d

❤️ 贡献者

🎉截图

注: 截图可能因更新问题与文字不符,一切请优先参照文字叙述。

点击展开截图
  • 主界面


  • 解析完成

单个


批量


  • API提交/返回

视频返回值

图集返回值

TikTok返回值


📜 Star历史

Star History Chart

MIT License

Start: 2021/11/06 GitHub: @Evil0ctal Contact: Evil0ctal1985@gmail.com