Skip to main content

Douyin/TikTok async data scraper.

Project description

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

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


GitHub licenseGitHub issuesGitHub forksGitHub starsDocker Image size

Language: [English] [简体中文]

👻介绍

本项目是基于 PyWebIOFastAPIAIOHTTP,快速异步的抖音/TikTok数据爬取工具,并通过Web端实现在线批量解析以及下载无水印视频或图集,数据爬取API,iOS快捷指令无水印下载等功能。你可以自己部署或改造本项目实现更多功能,也可以在你的项目中直接调用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 DT-Scraper
from DT_scraper.scraper import Scraper
	
api = Scraper()
	
async def async_test(url: str):
	if 'douyin' in url:
		douyin_url = await api.convert_share_urls(url)
		# Get Douyin ID and video data
		douyin_id = await api.get_douyin_video_id(douyin_url)
		douyin_data = await api.get_douyin_video_data(douyin_id)
	elif 'tiktok' in url:
		tiktok_url = await api.convert_share_urls(url)
		# Get TikTok video data
		tiktok_id = await api.get_tiktok_video_id(tiktok_url)
		tiktok_data = await api.get_tiktok_video_data(tiktok_id)
		
	# Hybrid parsing(Any platform URL)
	hybrid_data = await api.hybrid_parsing(url)
	
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


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

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

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

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

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

  • 首先要去安全组开放8080和8000端口(Web默认8080,API默认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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

douyin_tiktok_scraper-1.0.2.tar.gz (20.3 kB view hashes)

Uploaded Source

Built Distribution

douyin_tiktok_scraper-1.0.2-py3-none-any.whl (14.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page