douyin-tiktok-scraper


Namedouyin-tiktok-scraper JSON
Version 1.2.9 PyPI version JSON
download
home_pagehttps://github.com/Evil0ctal/Douyin_TikTok_Download_API
SummaryDouyin/TikTok async data scraper.
upload_time2023-09-23 09:58:04
maintainer
docs_urlNone
authorEvil0ctal
requires_python>=3.6
licenseMIT License
keywords tiktok douyin 抖音 scraper crawler api download video no watermark async
VCS
bugtrack_url
requirements aiohttp aiosignal anyio async-timeout attrs Brotli charset-normalizer click colorama Deprecated fastapi frozenlist h11 idna limits multidict orjson packaging pydantic PyExecJS pywebio six slowapi sniffio starlette tenacity tornado typing_extensions ua-parser user-agents uvicorn wrapt yarl
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
<a href="https://douyin.wtf/" alt="logo" ><img src="./logo/logo192.png" width="120"/></a>
</div>
<h1 align="center">Douyin_TikTok_Download_API(抖音/TikTok API)</h1>

<div align="center">

[English](./README.en.md) | [简体中文](./README.md)
 
🚀「Douyin_TikTok_Download_API」是一个开箱即用的高性能异步[抖音](https://www.douyin.com)|[TikTok](https://www.tiktok.com)数据爬取工具,支持API调用,在线批量解析及下载。

[![GitHub license](https://img.shields.io/github/license/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](LICENSE)
[![Release Version](https://img.shields.io/github/v/release/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/releases/latest)
[![GitHub Star](https://img.shields.io/github/stars/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/stargazers)
[![GitHub Fork](https://img.shields.io/github/forks/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/network/members)
[![GitHub issues](https://img.shields.io/github/issues/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues)
[![GitHub closed issues](https://img.shields.io/github/issues-closed/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues?q=is%3Aissue+is%3Aclosed)
![GitHub Repo size](https://img.shields.io/github/repo-size/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square&color=3cb371)
<br>
[![PyPI v](https://img.shields.io/pypi/v/douyin-tiktok-scraper?style=flat-square&color=%23a8e6cf)](https://pypi.org/project/douyin-tiktok-scraper/)
[![PyPI wheel](https://img.shields.io/pypi/wheel/douyin-tiktok-scraper?style=flat-square&color=%23dcedc1)](https://pypi.org/project/douyin-tiktok-scraper/#files)
[![PyPI dm](https://img.shields.io/pypi/dm/douyin-tiktok-scraper?style=flat-square&color=%23ffd3b6)](https://pypi.org/project/douyin-tiktok-scraper/)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/douyin-tiktok-scraper?color=%23ffaaa5&style=flat-square)](https://pypi.org/project/douyin-tiktok-scraper/)
<br>
[![API-V1 status](https://img.shields.io/website?down_color=lightgrey&label=API-V1%20Status&down_message=API-V1%20offline&style=flat-square&up_color=%23dfb9ff&up_message=online&url=https%3A%2F%2Fapi.douyin.wtf%2Fdocs)](https://api.douyin.wtf/docs)
[![API-V2 status](https://img.shields.io/website?down_color=lightgrey&label=API-V2%20Status&down_message=API-V1%20offline&style=flat-square&up_color=%23dfb9ff&up_message=online&url=https%3A%2F%2Fapi-v2.douyin.wtf%2Fdocs)](https://api-v2.douyin.wtf/docs)
<br>
[![爱发电](https://img.shields.io/badge/爱发电-evil0ctal-blue.svg?style=flat-square&color=ea4aaa&logo=github-sponsors)](https://afdian.net/@evil0ctal)
[![Kofi](https://img.shields.io/badge/Kofi-evil0ctal-orange.svg?style=flat-square&logo=kofi)](https://ko-fi.com/evil0ctal)
[![Patreon](https://img.shields.io/badge/Patreon-evil0ctal-red.svg?style=flat-square&logo=patreon)](https://www.patreon.com/evil0ctal)

</div>

## 👻介绍

> 🚨如需使用私有服务器运行本项目,请参考部署方式[[Docker部署](./README.md#%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F%E4%BA%8C-docker), [手动部署](./README.md#%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F%E4%B8%80-linux)]

本项目是基于 [PyWebIO](https://github.com/pywebio/PyWebIO),[FastAPI](https://fastapi.tiangolo.com/),[AIOHTTP](https://docs.aiohttp.org/),快速异步的[抖音](https://www.douyin.com/)/[TikTok](https://www.tiktok.com/)数据爬取工具,并通过Web端实现在线批量解析以及下载无水印视频或图集,数据爬取API,iOS快捷指令无水印下载等功能。你可以自己部署或改造本项目实现更多功能,也可以在你的项目中直接调用[scraper.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/Stable/scraper.py)或安装现有的[pip包](https://pypi.org/project/douyin-tiktok-scraper/)作为解析库轻松爬取数据等.....

*一些简单的运用场景:*

*下载禁止下载的视频,进行数据分析,iOS无水印下载(搭配[iOS自带的快捷指令APP](https://apps.apple.com/cn/app/%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4/id915249334)
配合本项目API实现应用内下载或读取剪贴板下载)等.....*

## 🖥公共站点: 我很脆弱...请勿压测(·•᷄ࡇ•᷅ )

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

🍔Web APP: [https://douyin.wtf/](https://douyin.wtf/)

🍟API-V1: [https://api.douyin.wtf/docs](https://api.douyin.wtf/docs)

🌭API-V2: [https://api-v2.douyin.wtf/docs](https://api-v2.douyin.wtf/docs)

💾iOS Shortcut(快捷指令): [Shortcut release](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/discussions/104?sort=top)

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

- [Tairraos/TikDown](https://github.com/Tairraos/TikDown/)
- [Johnserf-Seed/TikTokDownload](https://github.com/Johnserf-Seed/TikTokDownload)
- [HFrost0/bilix](https://github.com/HFrost0/bilix)

## ⚗️技术栈

* [web_app.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/web_app.py) - [PyWebIO](https://www.pyweb.io/)
* [web_api.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/web_api.py) - [FastAPI](https://fastapi.tiangolo.com/)
* [scraper.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/scraper.py) - [AIOHTTP](https://docs.aiohttp.org/)

> ***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](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/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暂时移除,请自行部署V2.X版本)
- API调用获取链接数据
- 制作[pip包](https://pypi.org/project/douyin-tiktok-scraper/)方便快速导入你的项目
- [iOS快捷指令快速调用API](https://apps.apple.com/cn/app/%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4/id915249334)实现应用内下载无水印视频/图集
- 解析作者主页内所有视频([API-V2](https://api-v2.douyin.wtf/docs) 支持抖音/TikTok)
- 解析视频内所有评论信息([API-V2](https://api-v2.douyin.wtf/docs) 支持抖音/TikTok)

---

## 🤦‍待办清单:

> 💡欢迎提出新的建议或将你的思路在issue中与我分享,或直接提交PR至[Development分支](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/tree/Development) ♪(・ω・)ノ)

- [ ] 编写一个桌面端的下载器实现本地批量下载
- [ ] API-V2添加对hash_tag页面的数据爬取 [#101](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues/101)
- [ ] 对其他短视频平台添加支持,如:抖音火山版,快手,西瓜视频,哔哩哔哩

---

## 📦调用解析库:

> 💡PyPi:[https://pypi.org/project/douyin-tiktok-scraper/](https://pypi.org/project/douyin-tiktok-scraper/)

安装解析库:`pip install douyin-tiktok-scraper`

```python
import asyncio
from douyin_tiktok_scraper.scraper import Scraper

api = Scraper()

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

asyncio.run(hybrid_parsing(url=input("Paste Douyin/TikTok share URL here: ")))
```

## 🗺️支持的提交格式:

> 💡提示:包含但不仅限于以下例子,如果遇到链接解析失败请开启一个新 [issue](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues)

- 抖音分享口令  (APP内复制)

```text
7.43 pda:/ 让你在几秒钟之内记住我  https://v.douyin.com/L5pbfdP/ 复制此链接,打开Dou音搜索,直接观看视频!
```

- 抖音短网址 (APP内复制)

```text
https://v.douyin.com/L4FJNR3/
```

- 抖音正常网址 (网页版复制)

```text
https://www.douyin.com/video/6914948781100338440
```

- 抖音发现页网址 (APP复制)

```text
https://www.douyin.com/discover?modal_id=7069543727328398622
```

- TikTok短网址 (APP内复制)

```text
https://www.tiktok.com/t/ZTR9nDNWq/
```

- TikTok正常网址 (网页版复制)

```text
https://www.tiktok.com/@evil0ctal/video/7156033831819037994
```

- 抖音/TikTok批量网址(无需使用符合隔开)

```text
https://v.douyin.com/L4NpDJ6/
https://www.douyin.com/video/7126745726494821640
2.84 nqe:/ 骑白马的也可以是公主%%百万转场变身https://v.douyin.com/L4FJNR3/ 复制此链接,打开Dou音搜索,直接观看视频!
https://www.tiktok.com/t/ZTR9nkkmL/
https://www.tiktok.com/t/ZTR9nDNWq/
https://www.tiktok.com/@evil0ctal/video/7156033831819037994
```

## 🛰️API文档

> 💡提示:也可以在web_api.py的代码注释中查看接口文档

***API-V1文档:***
本地:[http://localhost:8000/docs](http://localhost:8000/docs)
在线:[https://api.douyin.wtf/docs](https://api.douyin.wtf/docs)

***API-V2文档:***
在线:[https://api-v2.douyin.wtf/docs](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 Response
```

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

## 💻部署(方式一 Linux)

> 💡提示:最好将本项目部署至美国地区的服务器,否则可能会出现奇怪的BUG。

- 首先要去安全组开放8080(Web)和8000(API)端口。
- 在宝塔面板应用商店内搜索`进程守护`或手动安装`supervisord`:

```
[宝塔面板]
https://www.bt.cn/new/download.html
[aapanel]
https://www.aapanel.com/new/download.html
[Supervisor]
http://supervisord.org/installing.html
```

- 配置项目[config.ini](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/config.ini)文件
- 安装依赖文件`pip install -r requirements.txt`
- 设置`supervisord`守护进程
- 启动命令:

```console
[Web]
python3 web_app.py
[API]
python3 web_api.py
```

- 程序入口:

```text
[Web]
http://localhost:8080
[API]
http://localhost:8000
```

## 💽部署(方式二 Docker)

> 💡Docker Image repo: [Docker Hub](https://hub.docker.com/repository/docker/evil0ctal/douyin_tiktok_download_api)

- 安装docker

```yaml
curl -fsSL get.docker.com -o get-docker.sh&&sh get-docker.sh &&systemctl enable docker&&systemctl start docker
```

- 留下config.int和docker-compose.yml文件即可
- 运行命令,让容器在后台运行

```yaml
docker compose up -d
```

- 查看容器日志

```yaml
docker logs -f douyin_tiktok_download_api
```

- 删除容器

```yaml
docker rm -f douyin_tiktok_download_api
```

- 更新

```yaml
docker compose pull && docker compose down && docker compose up -d
```

## ❤️ 贡献者

[![](https://github.com/Evil0ctal.png?size=50)](https://github.com/Evil0ctal)
[![](https://github.com/jw-star.png?size=50)](https://github.com/jw-star)
[![](https://github.com/Jeffrey-deng.png?size=50)](https://github.com/Jeffrey-deng)
[![](https://github.com/chris-ss.png?size=50)](https://github.com/chris-ss)
[![](https://github.com/weixuan00.png?size=50)](https://github.com/weixuan00)
[![](https://github.com/Tairraos.png?size=50)](https://github.com/Tairraos)

## 📸截图

***API速度测试(对比官方API)***

<details><summary>🔎点击展开截图</summary>

抖音官方API:
![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/benchmarks/Douyin_API.png?raw=true)

本项目API:
![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/benchmarks/Douyin_API_Douyin_wtf.png?raw=true)

TikTok官方API:
![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/benchmarks/TikTok_API.png?raw=true)

本项目API:
![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/benchmarks/TikTok_API_Douyin_wtf.png?raw=true)

</details>
<hr>

***项目界面***

<details><summary>🔎点击展开截图</summary>

Web主界面:

![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/v3_screenshots/Home.png?raw=true)

Web main interface:

![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/v3_screenshots/Home_en.png?raw=true)

</details>
<hr>

## 📜 Star历史

[![Star History Chart](https://api.star-history.com/svg?repos=Evil0ctal/Douyin_TikTok_Download_API&type=Timeline)](https://star-history.com/#Evil0ctal/Douyin_TikTok_Download_API&Timeline)

[MIT License](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/Stable/LICENSE)

> Start: 2021/11/06
> GitHub: [@Evil0ctal](https://github.com/Evil0ctal)
> Contact: Evil0ctal1985@gmail.com





            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Evil0ctal/Douyin_TikTok_Download_API",
    "name": "douyin-tiktok-scraper",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "TikTok,Douyin,\u6296\u97f3,Scraper,Crawler,API,Download,Video,No Watermark,Async",
    "author": "Evil0ctal",
    "author_email": "Evil0ctal1985@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/84/f2/6a96598b0a6bc4e0598fc2de92adf8a89e3ec7687c9d0a207bb5503b45d4/douyin_tiktok_scraper-1.2.9.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n<a href=\"https://douyin.wtf/\" alt=\"logo\" ><img src=\"./logo/logo192.png\" width=\"120\"/></a>\n</div>\n<h1 align=\"center\">Douyin_TikTok_Download_API(\u6296\u97f3/TikTok API)</h1>\n\n<div align=\"center\">\n\n[English](./README.en.md) | [\u7b80\u4f53\u4e2d\u6587](./README.md)\n \n\ud83d\ude80\u300cDouyin_TikTok_Download_API\u300d\u662f\u4e00\u4e2a\u5f00\u7bb1\u5373\u7528\u7684\u9ad8\u6027\u80fd\u5f02\u6b65[\u6296\u97f3](https://www.douyin.com)|[TikTok](https://www.tiktok.com)\u6570\u636e\u722c\u53d6\u5de5\u5177\uff0c\u652f\u6301API\u8c03\u7528\uff0c\u5728\u7ebf\u6279\u91cf\u89e3\u6790\u53ca\u4e0b\u8f7d\u3002\n\n[![GitHub license](https://img.shields.io/github/license/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](LICENSE)\n[![Release Version](https://img.shields.io/github/v/release/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/releases/latest)\n[![GitHub Star](https://img.shields.io/github/stars/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/stargazers)\n[![GitHub Fork](https://img.shields.io/github/forks/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/network/members)\n[![GitHub issues](https://img.shields.io/github/issues/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues)\n[![GitHub closed issues](https://img.shields.io/github/issues-closed/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square)](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues?q=is%3Aissue+is%3Aclosed)\n![GitHub Repo size](https://img.shields.io/github/repo-size/Evil0ctal/Douyin_TikTok_Download_API?style=flat-square&color=3cb371)\n<br>\n[![PyPI v](https://img.shields.io/pypi/v/douyin-tiktok-scraper?style=flat-square&color=%23a8e6cf)](https://pypi.org/project/douyin-tiktok-scraper/)\n[![PyPI wheel](https://img.shields.io/pypi/wheel/douyin-tiktok-scraper?style=flat-square&color=%23dcedc1)](https://pypi.org/project/douyin-tiktok-scraper/#files)\n[![PyPI dm](https://img.shields.io/pypi/dm/douyin-tiktok-scraper?style=flat-square&color=%23ffd3b6)](https://pypi.org/project/douyin-tiktok-scraper/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/douyin-tiktok-scraper?color=%23ffaaa5&style=flat-square)](https://pypi.org/project/douyin-tiktok-scraper/)\n<br>\n[![API-V1 status](https://img.shields.io/website?down_color=lightgrey&label=API-V1%20Status&down_message=API-V1%20offline&style=flat-square&up_color=%23dfb9ff&up_message=online&url=https%3A%2F%2Fapi.douyin.wtf%2Fdocs)](https://api.douyin.wtf/docs)\n[![API-V2 status](https://img.shields.io/website?down_color=lightgrey&label=API-V2%20Status&down_message=API-V1%20offline&style=flat-square&up_color=%23dfb9ff&up_message=online&url=https%3A%2F%2Fapi-v2.douyin.wtf%2Fdocs)](https://api-v2.douyin.wtf/docs)\n<br>\n[![\u7231\u53d1\u7535](https://img.shields.io/badge/\u7231\u53d1\u7535-evil0ctal-blue.svg?style=flat-square&color=ea4aaa&logo=github-sponsors)](https://afdian.net/@evil0ctal)\n[![Kofi](https://img.shields.io/badge/Kofi-evil0ctal-orange.svg?style=flat-square&logo=kofi)](https://ko-fi.com/evil0ctal)\n[![Patreon](https://img.shields.io/badge/Patreon-evil0ctal-red.svg?style=flat-square&logo=patreon)](https://www.patreon.com/evil0ctal)\n\n</div>\n\n## \ud83d\udc7b\u4ecb\u7ecd\n\n> \ud83d\udea8\u5982\u9700\u4f7f\u7528\u79c1\u6709\u670d\u52a1\u5668\u8fd0\u884c\u672c\u9879\u76ee\uff0c\u8bf7\u53c2\u8003\u90e8\u7f72\u65b9\u5f0f[[Docker\u90e8\u7f72](./README.md#%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F%E4%BA%8C-docker), [\u624b\u52a8\u90e8\u7f72](./README.md#%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F%E4%B8%80-linux)]\n\n\u672c\u9879\u76ee\u662f\u57fa\u4e8e [PyWebIO](https://github.com/pywebio/PyWebIO)\uff0c[FastAPI](https://fastapi.tiangolo.com/)\uff0c[AIOHTTP](https://docs.aiohttp.org/)\uff0c\u5feb\u901f\u5f02\u6b65\u7684[\u6296\u97f3](https://www.douyin.com/)/[TikTok](https://www.tiktok.com/)\u6570\u636e\u722c\u53d6\u5de5\u5177\uff0c\u5e76\u901a\u8fc7Web\u7aef\u5b9e\u73b0\u5728\u7ebf\u6279\u91cf\u89e3\u6790\u4ee5\u53ca\u4e0b\u8f7d\u65e0\u6c34\u5370\u89c6\u9891\u6216\u56fe\u96c6\uff0c\u6570\u636e\u722c\u53d6API\uff0ciOS\u5feb\u6377\u6307\u4ee4\u65e0\u6c34\u5370\u4e0b\u8f7d\u7b49\u529f\u80fd\u3002\u4f60\u53ef\u4ee5\u81ea\u5df1\u90e8\u7f72\u6216\u6539\u9020\u672c\u9879\u76ee\u5b9e\u73b0\u66f4\u591a\u529f\u80fd\uff0c\u4e5f\u53ef\u4ee5\u5728\u4f60\u7684\u9879\u76ee\u4e2d\u76f4\u63a5\u8c03\u7528[scraper.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/Stable/scraper.py)\u6216\u5b89\u88c5\u73b0\u6709\u7684[pip\u5305](https://pypi.org/project/douyin-tiktok-scraper/)\u4f5c\u4e3a\u89e3\u6790\u5e93\u8f7b\u677e\u722c\u53d6\u6570\u636e\u7b49.....\n\n*\u4e00\u4e9b\u7b80\u5355\u7684\u8fd0\u7528\u573a\u666f\uff1a*\n\n*\u4e0b\u8f7d\u7981\u6b62\u4e0b\u8f7d\u7684\u89c6\u9891\uff0c\u8fdb\u884c\u6570\u636e\u5206\u6790\uff0ciOS\u65e0\u6c34\u5370\u4e0b\u8f7d\uff08\u642d\u914d[iOS\u81ea\u5e26\u7684\u5feb\u6377\u6307\u4ee4APP](https://apps.apple.com/cn/app/%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4/id915249334)\n\u914d\u5408\u672c\u9879\u76eeAPI\u5b9e\u73b0\u5e94\u7528\u5185\u4e0b\u8f7d\u6216\u8bfb\u53d6\u526a\u8d34\u677f\u4e0b\u8f7d\uff09\u7b49.....*\n\n## \ud83d\udda5\u516c\u5171\u7ad9\u70b9: \u6211\u5f88\u8106\u5f31...\u8bf7\u52ff\u538b\u6d4b(\u00b7\u2022\u1dc4\u0847\u2022\u1dc5 \uff09\n\n> **API-V2:** \u652f\u6301\u8f93\u5165`Douyin|TikTok`\u7528\u6237\u4e3b\u9875\u722c\u53d6\u8be5\u4f5c\u8005[\u4e3b\u9875\u89c6\u9891\u6570\u636e(\u53bb\u6c34\u5370\u94fe\u63a5, \u5df2\u70b9\u8d5e\u89c6\u9891\u5217\u8868(\u6743\u9650\u9700\u4e3a\u516c\u5f00), \u89c6\u9891\u8bc4\u8bba\u6570\u636e, \u80cc\u666f\u97f3\u4e50\u89c6\u9891\u5217\u8868\u6570\u636e, \u7b49\u7b49...), \u8be6\u7ec6\u4fe1\u606f\u8bf7\u67e5\u770bV2\u6587\u6863, \u670d\u52a1\u5668\u54cd\u5e94\u65f6\u95f4\u6709\u65f6\u4f1a\u53d8\u957f, \u4f7f\u7528\u65f6\u8bf7\u5c06`timeout`\u503c\u8bbe\u9ad8.\n\n\ud83c\udf54Web APP: [https://douyin.wtf/](https://douyin.wtf/)\n\n\ud83c\udf5fAPI-V1: [https://api.douyin.wtf/docs](https://api.douyin.wtf/docs)\n\n\ud83c\udf2dAPI-V2: [https://api-v2.douyin.wtf/docs](https://api-v2.douyin.wtf/docs)\n\n\ud83d\udcbeiOS Shortcut(\u5feb\u6377\u6307\u4ee4): [Shortcut release](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/discussions/104?sort=top)\n\n\ud83d\udce6\ufe0f\u684c\u9762\u7aef\u4e0b\u8f7d\u5668(\u4ed3\u5e93\u63a8\u8350)\uff1a\n\n- [Tairraos/TikDown](https://github.com/Tairraos/TikDown/)\n- [Johnserf-Seed/TikTokDownload](https://github.com/Johnserf-Seed/TikTokDownload)\n- [HFrost0/bilix](https://github.com/HFrost0/bilix)\n\n## \u2697\ufe0f\u6280\u672f\u6808\n\n* [web_app.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/web_app.py) - [PyWebIO](https://www.pyweb.io/)\n* [web_api.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/web_api.py) - [FastAPI](https://fastapi.tiangolo.com/)\n* [scraper.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/scraper.py) - [AIOHTTP](https://docs.aiohttp.org/)\n\n> ***scraper.py:***\n\n- \u5411[Douyin|TikTok]\u7684API\u63d0\u4ea4\u8bf7\u6c42\u5e76\u53d6\u56de\u6570\u636e\uff0c\u5904\u7406\u540e\u8fd4\u56de\u5b57\u5178(dict)\uff0c\u652f\u6301\u5f02\u6b65\u3002\n\n> ***web_api.py:***\n\n- \u83b7\u5f97\u8bf7\u6c42\u53c2\u6570\u5e76\u4f7f\u7528`Scraper()`\u7c7b\u5904\u7406\u6570\u636e\u540e\u4ee5JSON\u5f62\u5f0f\u8fd4\u56de\uff0c\u89c6\u9891\u4e0b\u8f7d\uff0c\u914d\u5408iOS\u5feb\u6377\u6307\u4ee4\u5b9e\u73b0\u5feb\u901f\u8c03\u7528\uff0c\u652f\u6301\u5f02\u6b65\u3002\n\n> ***web_app.py:***\n\n- \u4e3a`web_api.py`\u4ee5\u53ca`scraper.py`\u5236\u4f5c\u7684\u7b80\u6613Web\u7a0b\u5e8f\uff0c\u5c06\u7f51\u9875\u8f93\u5165\u7684\u503c\u8fdb\u884c\u5904\u7406\u540e\u4f7f\u7528`Scraper()`\u7c7b\u5904\u7406\u5e76\u914d\u5408`web_api.py`\u7684\u63a5\u53e3\u8f93\u51fa\u5728\u7f51\u9875\u4e0a(\u7c7b\u4f3c\u524d\u540e\u7aef\u5206\u79bb)\n\n***\u4ee5\u4e0a\u6587\u4ef6\u7684\u53c2\u6570\u5927\u591a\u53ef\u5728[config.ini](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/config.ini)\u4e2d\u8fdb\u884c\u4fee\u6539***\n\n## \ud83d\udca1\u9879\u76ee\u6587\u4ef6\u7ed3\u6784\n\n```\n.\n\u2514\u2500\u2500 Douyin_TikTok_Download_API/\n    \u251c\u2500\u2500 /static -> (PyWebIO static resources)\n    \u251c\u2500\u2500 web_app.py -> (Web APP)\n    \u251c\u2500\u2500 web_api.py -> (API)\n    \u251c\u2500\u2500 scraper.py -> (Parsing library)\n    \u251c\u2500\u2500 config.ini -> (configuration file)\n```\n\n## \u2728\u529f\u80fd\uff1a\n\n- \u6296\u97f3\uff08\u6296\u97f3\u6d77\u5916\u7248: TikTok\uff09\u89c6\u9891/\u56fe\u7247\u89e3\u6790\n- \u7f51\u9875\u7aef\u6279\u91cf\u89e3\u6790(\u652f\u6301\u6296\u97f3/TikTok\u6df7\u5408\u63d0\u4ea4)\n- \u7f51\u9875\u7aef\u89e3\u6790\u7ed3\u679c\u9875\u6279\u91cf\u4e0b\u8f7d\u65e0\u6c34\u5370\u89c6\u9891(V3.0.0\u6682\u65f6\u79fb\u9664\uff0c\u8bf7\u81ea\u884c\u90e8\u7f72V2.X\u7248\u672c)\n- API\u8c03\u7528\u83b7\u53d6\u94fe\u63a5\u6570\u636e\n- \u5236\u4f5c[pip\u5305](https://pypi.org/project/douyin-tiktok-scraper/)\u65b9\u4fbf\u5feb\u901f\u5bfc\u5165\u4f60\u7684\u9879\u76ee\n- [iOS\u5feb\u6377\u6307\u4ee4\u5feb\u901f\u8c03\u7528API](https://apps.apple.com/cn/app/%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4/id915249334)\u5b9e\u73b0\u5e94\u7528\u5185\u4e0b\u8f7d\u65e0\u6c34\u5370\u89c6\u9891/\u56fe\u96c6\n- \u89e3\u6790\u4f5c\u8005\u4e3b\u9875\u5185\u6240\u6709\u89c6\u9891([API-V2](https://api-v2.douyin.wtf/docs) \u652f\u6301\u6296\u97f3/TikTok)\n- \u89e3\u6790\u89c6\u9891\u5185\u6240\u6709\u8bc4\u8bba\u4fe1\u606f([API-V2](https://api-v2.douyin.wtf/docs) \u652f\u6301\u6296\u97f3/TikTok)\n\n---\n\n## \ud83e\udd26\u200d\u5f85\u529e\u6e05\u5355\uff1a\n\n> \ud83d\udca1\u6b22\u8fce\u63d0\u51fa\u65b0\u7684\u5efa\u8bae\u6216\u5c06\u4f60\u7684\u601d\u8def\u5728issue\u4e2d\u4e0e\u6211\u5206\u4eab\uff0c\u6216\u76f4\u63a5\u63d0\u4ea4PR\u81f3[Development\u5206\u652f](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/tree/Development) \u266a(\uff65\u03c9\uff65)\uff89)\n\n- [ ] \u7f16\u5199\u4e00\u4e2a\u684c\u9762\u7aef\u7684\u4e0b\u8f7d\u5668\u5b9e\u73b0\u672c\u5730\u6279\u91cf\u4e0b\u8f7d\n- [ ] API-V2\u6dfb\u52a0\u5bf9hash_tag\u9875\u9762\u7684\u6570\u636e\u722c\u53d6 [#101](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues/101)\n- [ ] \u5bf9\u5176\u4ed6\u77ed\u89c6\u9891\u5e73\u53f0\u6dfb\u52a0\u652f\u6301\uff0c\u5982\uff1a\u6296\u97f3\u706b\u5c71\u7248\uff0c\u5feb\u624b\uff0c\u897f\u74dc\u89c6\u9891\uff0c\u54d4\u54e9\u54d4\u54e9\n\n---\n\n## \ud83d\udce6\u8c03\u7528\u89e3\u6790\u5e93:\n\n> \ud83d\udca1PyPi\uff1a[https://pypi.org/project/douyin-tiktok-scraper/](https://pypi.org/project/douyin-tiktok-scraper/)\n\n\u5b89\u88c5\u89e3\u6790\u5e93\uff1a`pip install douyin-tiktok-scraper`\n\n```python\nimport asyncio\nfrom douyin_tiktok_scraper.scraper import Scraper\n\napi = Scraper()\n\nasync def hybrid_parsing(url: str) -> dict:\n    # Hybrid parsing(Douyin/TikTok URL)\n    result = await api.hybrid_parsing(url)\n    print(f\"The hybrid parsing result:\\n {result}\")\n    return result\n\nasyncio.run(hybrid_parsing(url=input(\"Paste Douyin/TikTok share URL here: \")))\n```\n\n## \ud83d\uddfa\ufe0f\u652f\u6301\u7684\u63d0\u4ea4\u683c\u5f0f\uff1a\n\n> \ud83d\udca1\u63d0\u793a\uff1a\u5305\u542b\u4f46\u4e0d\u4ec5\u9650\u4e8e\u4ee5\u4e0b\u4f8b\u5b50\uff0c\u5982\u679c\u9047\u5230\u94fe\u63a5\u89e3\u6790\u5931\u8d25\u8bf7\u5f00\u542f\u4e00\u4e2a\u65b0 [issue](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues)\n\n- \u6296\u97f3\u5206\u4eab\u53e3\u4ee4  (APP\u5185\u590d\u5236)\n\n```text\n7.43 pda:/ \u8ba9\u4f60\u5728\u51e0\u79d2\u949f\u4e4b\u5185\u8bb0\u4f4f\u6211  https://v.douyin.com/L5pbfdP/ \u590d\u5236\u6b64\u94fe\u63a5\uff0c\u6253\u5f00Dou\u97f3\u641c\u7d22\uff0c\u76f4\u63a5\u89c2\u770b\u89c6\u9891\uff01\n```\n\n- \u6296\u97f3\u77ed\u7f51\u5740 (APP\u5185\u590d\u5236)\n\n```text\nhttps://v.douyin.com/L4FJNR3/\n```\n\n- \u6296\u97f3\u6b63\u5e38\u7f51\u5740 (\u7f51\u9875\u7248\u590d\u5236)\n\n```text\nhttps://www.douyin.com/video/6914948781100338440\n```\n\n- \u6296\u97f3\u53d1\u73b0\u9875\u7f51\u5740 (APP\u590d\u5236)\n\n```text\nhttps://www.douyin.com/discover?modal_id=7069543727328398622\n```\n\n- TikTok\u77ed\u7f51\u5740 (APP\u5185\u590d\u5236)\n\n```text\nhttps://www.tiktok.com/t/ZTR9nDNWq/\n```\n\n- TikTok\u6b63\u5e38\u7f51\u5740 (\u7f51\u9875\u7248\u590d\u5236)\n\n```text\nhttps://www.tiktok.com/@evil0ctal/video/7156033831819037994\n```\n\n- \u6296\u97f3/TikTok\u6279\u91cf\u7f51\u5740(\u65e0\u9700\u4f7f\u7528\u7b26\u5408\u9694\u5f00)\n\n```text\nhttps://v.douyin.com/L4NpDJ6/\nhttps://www.douyin.com/video/7126745726494821640\n2.84 nqe:/ \u9a91\u767d\u9a6c\u7684\u4e5f\u53ef\u4ee5\u662f\u516c\u4e3b%%\u767e\u4e07\u8f6c\u573a\u53d8\u8eabhttps://v.douyin.com/L4FJNR3/ \u590d\u5236\u6b64\u94fe\u63a5\uff0c\u6253\u5f00Dou\u97f3\u641c\u7d22\uff0c\u76f4\u63a5\u89c2\u770b\u89c6\u9891\uff01\nhttps://www.tiktok.com/t/ZTR9nkkmL/\nhttps://www.tiktok.com/t/ZTR9nDNWq/\nhttps://www.tiktok.com/@evil0ctal/video/7156033831819037994\n```\n\n## \ud83d\udef0\ufe0fAPI\u6587\u6863\n\n> \ud83d\udca1\u63d0\u793a\uff1a\u4e5f\u53ef\u4ee5\u5728web_api.py\u7684\u4ee3\u7801\u6ce8\u91ca\u4e2d\u67e5\u770b\u63a5\u53e3\u6587\u6863\n\n***API-V1\u6587\u6863\uff1a***\n\u672c\u5730\uff1a[http://localhost:8000/docs](http://localhost:8000/docs)\n\u5728\u7ebf\uff1a[https://api.douyin.wtf/docs](https://api.douyin.wtf/docs)\n\n***API-V2\u6587\u6863\uff1a***\n\u5728\u7ebf\uff1a[https://api-v2.douyin.wtf/docs](https://api-v2.douyin.wtf/docs)\n\n***API\u6f14\u793a\uff1a***\n\n- \u722c\u53d6\u89c6\u9891\u6570\u636e(TikTok\u6216Douyin\u6df7\u5408\u89e3\u6790)\n  `https://api.douyin.wtf/api?url=[\u89c6\u9891\u94fe\u63a5/Video URL]&minimal=false`\n- \u4e0b\u8f7d\u89c6\u9891/\u56fe\u96c6(TikTok\u6216Douyin\u6df7\u5408\u89e3\u6790)\n  `https://api.douyin.wtf/download?url=[\u89c6\u9891\u94fe\u63a5/Video URL]&prefix=true&watermark=false`\n- \u66ff\u6362\u57df\u540d\u4e0b\u8f7d\u89c6\u9891/\u56fe\u96c6\n\n```\n[\u6296\u97f3]\n\u539f\u59cb\u94fe\u63a5:\nhttps://www.douyin.com/video/7159502929156705567\n\u66ff\u6362\u57df\u540d:\nhttps://api.douyin.wtf/video/7159502929156705567\n# \u8fd4\u56de\u65e0\u6c34\u5370\u89c6\u9891\u4e0b\u8f7d\u54cd\u5e94\n[TikTok]\noriginal link:\nhttps://www.tiktok.com/@evil0ctal/video/7156033831819037994\nReplace Domain:\nhttps://api.douyin.wtf/@evil0ctal/video/7156033831819037994\n# Return No Watermark Video Download Response\n```\n\n***\u66f4\u591a\u6f14\u793a\u8bf7\u67e5\u770b\u6587\u6863\u5185\u5bb9......***\n\n## \ud83d\udcbb\u90e8\u7f72(\u65b9\u5f0f\u4e00 Linux)\n\n> \ud83d\udca1\u63d0\u793a\uff1a\u6700\u597d\u5c06\u672c\u9879\u76ee\u90e8\u7f72\u81f3\u7f8e\u56fd\u5730\u533a\u7684\u670d\u52a1\u5668\uff0c\u5426\u5219\u53ef\u80fd\u4f1a\u51fa\u73b0\u5947\u602a\u7684BUG\u3002\n\n- \u9996\u5148\u8981\u53bb\u5b89\u5168\u7ec4\u5f00\u653e8080(Web)\u548c8000(API)\u7aef\u53e3\u3002\n- \u5728\u5b9d\u5854\u9762\u677f\u5e94\u7528\u5546\u5e97\u5185\u641c\u7d22`\u8fdb\u7a0b\u5b88\u62a4`\u6216\u624b\u52a8\u5b89\u88c5`supervisord`\uff1a\n\n```\n[\u5b9d\u5854\u9762\u677f]\nhttps://www.bt.cn/new/download.html\n[aapanel]\nhttps://www.aapanel.com/new/download.html\n[Supervisor]\nhttp://supervisord.org/installing.html\n```\n\n- \u914d\u7f6e\u9879\u76ee[config.ini](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/config.ini)\u6587\u4ef6\n- \u5b89\u88c5\u4f9d\u8d56\u6587\u4ef6`pip install -r requirements.txt`\n- \u8bbe\u7f6e`supervisord`\u5b88\u62a4\u8fdb\u7a0b\n- \u542f\u52a8\u547d\u4ee4:\n\n```console\n[Web]\npython3 web_app.py\n[API]\npython3 web_api.py\n```\n\n- \u7a0b\u5e8f\u5165\u53e3:\n\n```text\n[Web]\nhttp://localhost:8080\n[API]\nhttp://localhost:8000\n```\n\n## \ud83d\udcbd\u90e8\u7f72(\u65b9\u5f0f\u4e8c Docker)\n\n> \ud83d\udca1Docker Image repo: [Docker Hub](https://hub.docker.com/repository/docker/evil0ctal/douyin_tiktok_download_api)\n\n- \u5b89\u88c5docker\n\n```yaml\ncurl -fsSL get.docker.com -o get-docker.sh&&sh get-docker.sh &&systemctl enable docker&&systemctl start docker\n```\n\n- \u7559\u4e0bconfig.int\u548cdocker-compose.yml\u6587\u4ef6\u5373\u53ef\n- \u8fd0\u884c\u547d\u4ee4,\u8ba9\u5bb9\u5668\u5728\u540e\u53f0\u8fd0\u884c\n\n```yaml\ndocker compose up -d\n```\n\n- \u67e5\u770b\u5bb9\u5668\u65e5\u5fd7\n\n```yaml\ndocker logs -f douyin_tiktok_download_api\n```\n\n- \u5220\u9664\u5bb9\u5668\n\n```yaml\ndocker rm -f douyin_tiktok_download_api\n```\n\n- \u66f4\u65b0\n\n```yaml\ndocker compose pull && docker compose down && docker compose up -d\n```\n\n## \u2764\ufe0f \u8d21\u732e\u8005\n\n[![](https://github.com/Evil0ctal.png?size=50)](https://github.com/Evil0ctal)\n[![](https://github.com/jw-star.png?size=50)](https://github.com/jw-star)\n[![](https://github.com/Jeffrey-deng.png?size=50)](https://github.com/Jeffrey-deng)\n[![](https://github.com/chris-ss.png?size=50)](https://github.com/chris-ss)\n[![](https://github.com/weixuan00.png?size=50)](https://github.com/weixuan00)\n[![](https://github.com/Tairraos.png?size=50)](https://github.com/Tairraos)\n\n## \ud83d\udcf8\u622a\u56fe\n\n***API\u901f\u5ea6\u6d4b\u8bd5(\u5bf9\u6bd4\u5b98\u65b9API)***\n\n<details><summary>\ud83d\udd0e\u70b9\u51fb\u5c55\u5f00\u622a\u56fe</summary>\n\n\u6296\u97f3\u5b98\u65b9API:\n![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/benchmarks/Douyin_API.png?raw=true)\n\n\u672c\u9879\u76eeAPI:\n![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/benchmarks/Douyin_API_Douyin_wtf.png?raw=true)\n\nTikTok\u5b98\u65b9API:\n![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/benchmarks/TikTok_API.png?raw=true)\n\n\u672c\u9879\u76eeAPI:\n![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/benchmarks/TikTok_API_Douyin_wtf.png?raw=true)\n\n</details>\n<hr>\n\n***\u9879\u76ee\u754c\u9762***\n\n<details><summary>\ud83d\udd0e\u70b9\u51fb\u5c55\u5f00\u622a\u56fe</summary>\n\nWeb\u4e3b\u754c\u9762:\n\n![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/v3_screenshots/Home.png?raw=true)\n\nWeb main interface:\n\n![](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/Screenshots/v3_screenshots/Home_en.png?raw=true)\n\n</details>\n<hr>\n\n## \ud83d\udcdc Star\u5386\u53f2\n\n[![Star History Chart](https://api.star-history.com/svg?repos=Evil0ctal/Douyin_TikTok_Download_API&type=Timeline)](https://star-history.com/#Evil0ctal/Douyin_TikTok_Download_API&Timeline)\n\n[MIT License](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/Stable/LICENSE)\n\n> Start: 2021/11/06\n> GitHub: [@Evil0ctal](https://github.com/Evil0ctal)\n> Contact: Evil0ctal1985@gmail.com\n\n\n\n\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Douyin/TikTok async data scraper.",
    "version": "1.2.9",
    "project_urls": {
        "Homepage": "https://github.com/Evil0ctal/Douyin_TikTok_Download_API"
    },
    "split_keywords": [
        "tiktok",
        "douyin",
        "\u6296\u97f3",
        "scraper",
        "crawler",
        "api",
        "download",
        "video",
        "no watermark",
        "async"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a65aec0c27e0b3094c063e8e8775e2dcfa0afb376de14f9287cf4aa0dc0e389c",
                "md5": "c1ea0c8f418656c1046b0e0cab2f6f2f",
                "sha256": "3e392bc7984c62c07a72dba2bb1cbcef6d711ab9c1f3f075b6f6e04c8c87cbf6"
            },
            "downloads": -1,
            "filename": "douyin_tiktok_scraper-1.2.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c1ea0c8f418656c1046b0e0cab2f6f2f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 27681,
            "upload_time": "2023-09-23T09:58:00",
            "upload_time_iso_8601": "2023-09-23T09:58:00.455460Z",
            "url": "https://files.pythonhosted.org/packages/a6/5a/ec0c27e0b3094c063e8e8775e2dcfa0afb376de14f9287cf4aa0dc0e389c/douyin_tiktok_scraper-1.2.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "84f26a96598b0a6bc4e0598fc2de92adf8a89e3ec7687c9d0a207bb5503b45d4",
                "md5": "215a09c7171c320f8b778780c3b7b086",
                "sha256": "ac8ad30230f002ae336b8d78af3c92de3ba90490920f74efbea9512b696c72a0"
            },
            "downloads": -1,
            "filename": "douyin_tiktok_scraper-1.2.9.tar.gz",
            "has_sig": false,
            "md5_digest": "215a09c7171c320f8b778780c3b7b086",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 33228,
            "upload_time": "2023-09-23T09:58:04",
            "upload_time_iso_8601": "2023-09-23T09:58:04.417859Z",
            "url": "https://files.pythonhosted.org/packages/84/f2/6a96598b0a6bc4e0598fc2de92adf8a89e3ec7687c9d0a207bb5503b45d4/douyin_tiktok_scraper-1.2.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-23 09:58:04",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Evil0ctal",
    "github_project": "Douyin_TikTok_Download_API",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "aiohttp",
            "specs": [
                [
                    "==",
                    "3.8.4"
                ]
            ]
        },
        {
            "name": "aiosignal",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "anyio",
            "specs": [
                [
                    "==",
                    "3.6.2"
                ]
            ]
        },
        {
            "name": "async-timeout",
            "specs": [
                [
                    "==",
                    "4.0.2"
                ]
            ]
        },
        {
            "name": "attrs",
            "specs": [
                [
                    "==",
                    "22.2.0"
                ]
            ]
        },
        {
            "name": "Brotli",
            "specs": [
                [
                    "==",
                    "1.0.9"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.0.1"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    "==",
                    "8.1.3"
                ]
            ]
        },
        {
            "name": "colorama",
            "specs": [
                [
                    "==",
                    "0.4.6"
                ]
            ]
        },
        {
            "name": "Deprecated",
            "specs": [
                [
                    "==",
                    "1.2.13"
                ]
            ]
        },
        {
            "name": "fastapi",
            "specs": [
                [
                    "==",
                    "0.92.0"
                ]
            ]
        },
        {
            "name": "frozenlist",
            "specs": [
                [
                    "==",
                    "1.3.3"
                ]
            ]
        },
        {
            "name": "h11",
            "specs": [
                [
                    "==",
                    "0.14.0"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.4"
                ]
            ]
        },
        {
            "name": "limits",
            "specs": [
                [
                    "==",
                    "2.8.0"
                ]
            ]
        },
        {
            "name": "multidict",
            "specs": [
                [
                    "==",
                    "6.0.4"
                ]
            ]
        },
        {
            "name": "orjson",
            "specs": [
                [
                    "==",
                    "3.8.6"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "22.0"
                ]
            ]
        },
        {
            "name": "pydantic",
            "specs": [
                [
                    "==",
                    "1.10.5"
                ]
            ]
        },
        {
            "name": "PyExecJS",
            "specs": [
                [
                    "==",
                    "1.5.1"
                ]
            ]
        },
        {
            "name": "pywebio",
            "specs": [
                [
                    "==",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        },
        {
            "name": "slowapi",
            "specs": [
                [
                    "==",
                    "0.1.7"
                ]
            ]
        },
        {
            "name": "sniffio",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "starlette",
            "specs": [
                [
                    "==",
                    "0.25.0"
                ]
            ]
        },
        {
            "name": "tenacity",
            "specs": [
                [
                    "==",
                    "8.2.1"
                ]
            ]
        },
        {
            "name": "tornado",
            "specs": [
                [
                    "==",
                    "6.2"
                ]
            ]
        },
        {
            "name": "typing_extensions",
            "specs": [
                [
                    "==",
                    "4.5.0"
                ]
            ]
        },
        {
            "name": "ua-parser",
            "specs": [
                [
                    "==",
                    "0.16.1"
                ]
            ]
        },
        {
            "name": "user-agents",
            "specs": [
                [
                    "==",
                    "2.2.0"
                ]
            ]
        },
        {
            "name": "uvicorn",
            "specs": [
                [
                    "==",
                    "0.20.0"
                ]
            ]
        },
        {
            "name": "wrapt",
            "specs": [
                [
                    "==",
                    "1.15.0"
                ]
            ]
        },
        {
            "name": "yarl",
            "specs": [
                [
                    "==",
                    "1.8.2"
                ]
            ]
        }
    ],
    "lcname": "douyin-tiktok-scraper"
}
        
Elapsed time: 0.11959s