Skip to content

Latest commit

 

History

History
383 lines (246 loc) · 17.8 KB

README.en.md

File metadata and controls

383 lines (246 loc) · 17.8 KB

Douyin_TikTok_Download_API(抖音/TikTok API)

English|Simplified Chinese

🚀"Douyin_TikTok_Download_API" is a high-performance asynchronous API that can be used out of the boxTik Tok|TikTok|BilibiliData crawling tool supports API calling, online batch analysis and downloading.

GitHub licenseRelease VersionGitHub StarGitHub ForkGitHub issuesGitHub closed issuesGitHub Repo size
PyPI vPyPI wheelPyPI dmPyPI pyversions
API statusTikHub-API status
爱发电KofiPatreon

🔊 This project plans to be refactored in version V4.0.0.

If you are interested, please add WeChatEvil0ctalNote: Github project reconstruction currently requires crawler/backend/full-stack development. If you don’t have the relevant technology stack, you can also join. The main idea is to create a group where everyone can communicate and learn from each other. Advertising is not allowed. As well as illegal stuff, purely for making friends and technical exchanges.

👻Introduction

🚨If you need to use a private server to run this project, please refer to the deployment method[Docker deployment,One-click deployment]

This project is based onPyWebIOFastAPIAIOHTTP, fast and asynchronousTik Tok/TikTok/BilibiliData crawling tool, and realizes online batch parsing and downloading of videos or photo albums without watermarks, data crawling API, iOS shortcut commands without watermark downloads through the Web, etc. You can deploy or modify this project yourself to achieve more functions, or you can call it directly in your projectscraper.pyor install an existingpip packageAs a parsing library, it is easy to crawl data, etc.....

Some simple application scenarios:

Download prohibited videos, perform data analysis, download without watermark on iOS (withShortcut command APP that comes with iOSCooperate with the API of this project to achieve in-app downloads or read clipboard downloads), etc.....

🖥Public site: I am very vulnerable...please do not stress test (·•᷄ࡇ•᷅ )

**Tikhub-Opi:**supportDouyin|TikTokThe user's homepage crawls the author's [homepage video data (watermark removal link, liked video list (permission must be public), video comment data, background music video list data, etc...), please check TikHub- for details API documentation. In addition, compared with the API of this project, TikHub-API is faster when grabbing TikTok data.

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

🍟API Document:https://api.douyin.wtf/docs

🌭TikHub API Document:https://api.tikhub.io/docs

💾iOS Shortcut (shortcut command):Shortcut release

📦️Desktop downloader (recommended by warehouse):

🛸Other repositories based on this project

⚗️Technology stack

scraper.py:

  • Towards[Douyin|TikTok]The API submits a request and retrieves the data, and returns a dictionary (dict) after processing, supporting asynchronous.

web_api.py:

  • Get request parameters and useScraper()The class processes the data and returns it in JSON form, downloads the video, and cooperates with iOS shortcut commands to achieve fast calling and supports asynchronous.

web_app.py:

  • forweb_api.pyas well asscraper.pyA simple web program created to process the values ​​entered on the web page and then use themScraper()Class processing and cooperationweb_api.pyThe interface output is on the web page (similar to front-end and back-end separation)

Most of the parameters of the above files can be found inconfig.iniMake changes in

💡Project file structure

.
└── 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)
    ├── install.sh -> (Installation bash script)

✨Features:

  • Douyin (overseas version of Douyin: TikTok) video/picture analysis
  • Bilibili video analysis
  • Watermelon video analysis
  • Kuaishou video analysis
  • Batch analysis on the web page (supports Douyin/TikTok mixed submission)
  • Batch download of non-watermarked videos from the web parsing result page (removed for V3.X and above versions, please deploy V2.X version by yourself)
  • API call to get link data
  • makepip packageConveniently and quickly import your projects
  • iOS shortcut commands to quickly call APIAchieve in-app download of watermark-free videos/photo albums
  • Analyze all videos on the author's homepage (Tikhub-opySupport Douyin/TikTok)
  • Parse all comment information in the video (Tikhub-opySupport Douyin/TikTok)

🤦‍To-do list:

💡Welcome to make suggestions or submit PR directly to this warehouse ♪(・ω・)ノ)

  • Write a desktop asynchronous downloader to implement local batch downloading
  • TikHub-API adds data crawling for hash_tag pages#101
  • Add support for other short video platforms, such as Douyin Huoshan Edition, Kuaishou, Xigua Video, and Bilibili

📦Call the parsing library:

💡PyPi:https://pypi.org/project/douyin-tiktok-scraper/

Install the parsing library:pip install douyin-tiktok-scraper

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/Bilibili share URL here: ")))

🗺️Supported submission formats:

💡Tip: Including but not limited to the following examples, if you encounter link parsing failure, please open a new oneissue

  • Kuaishou video link
https://www.kuaishou.com/short-video/3xiqjrezhqjyzxw/
https://v.kuaishou.com/75kDOJ/
  • Watermelon video link
https://www.ixigua.com/7270448082586698281/
https://m.ixigua.com/video/7274710134306112054/
  • Bilibili video link
https://www.bilibili.com/video/BV1Th411x7ii/
  • Douyin sharing password (copy in APP)
7.43 pda:/ 让你在几秒钟之内记住我  https://v.douyin.com/L5pbfdP/ 复制此链接,打开Dou音搜索,直接观看视频!
  • Douyin short URL (copy within APP)
https://v.douyin.com/L4FJNR3/
  • Douyin normal URL (copy from web version)
https://www.douyin.com/video/6914948781100338440
  • Douyin discovery page URL (APP copy)
https://www.douyin.com/discover?modal_id=7069543727328398622
  • TikTok short URL (copy within APP)
https://www.tiktok.com/t/ZTR9nDNWq/
  • TikTok normal URL (copy from web version)
https://www.tiktok.com/@evil0ctal/video/7156033831819037994
  • Douyin/TikTok batch URL (no need to use matching separation)
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 documentation

💡Tip: You can also view the interface documentation in the code comments of web_api.py

API documentation:

local:http://localhost:8000/docs

Online:https://api.douyin.wtf/docs

TikHub-API documentation:

Online:https://api.tikhub.io/docs

API demo:

For more demonstrations, please view the document content...

💻Deployment (Method 1 Linux)

💡Tips: It is best to deploy this project to a server in the United States, otherwise strange BUGs may appear.

Recommended for everyone to useDigitaloceanservers, mainly because they are free.

Use my invitation link to sign up and you can get a $200 credit, and when you spend $25 on it, I can also get a $25 reward.

My invitation link:

https://m.do.co/c/9f72a27dec35

Use script to deploy this project with one click

Please edit config.ini, all input must be numbers!
Default API port: 8000
If you want use different port input new API port here: 80
Use new port for web_api.py: 80
Default API rate limit: 10/minute
If you want use different rate limit input new rate limit here: 60
Use new rate limit: 60/minute
Default App port: 80
If you want use different port input new App port here: 8080
Use new port: 8080
  • The script will then ask you for the service you want to start.

api: start aloneweb_api.py

web: Start aloneweb_app.py

all: start at the same timeweb_api.pyandweb_app.py

Run API or Web? [api/web/all/quit] api
Do you want to start the api service when system boot? [y/n] y
Created symlink /etc/systemd/system/multi-user.target.wants/web_api.service → /etc/systemd/system/web_api.service.
API service will start when system boot!
Starting API...
API is running! You can visit http://your_ip:port
You can stop the api service by running: systemctl stop web_api.service

Start/stop service

  • web service:systemctl start/stop web_app.service
  • api service:systemctl start/stop web_api.service

Turn on/off automatic operation at startup

  • web service:systemctl enable/disable web_app.service
  • api service:systemctl enable/disable web_api.service

Update project

  • cd /www/wwwroot/Douyin_TikTok_Download_API/bash
  • sudo sh update.sh

💽Deployment (Method 2 Docker)

💡Docker Image repo:Docker Hub

  • Install docker
curl -fsSL get.docker.com -o get-docker.sh&&sh get-docker.sh &&systemctl enable docker&&systemctl start docker
  • Just leave the config.ini and docker-compose.yml files
  • Run the command to let the container run in the background
docker-compose up -d
  • View container logs
docker logs -f douyin_tiktok_download_api
  • Delete container
docker rm -f douyin_tiktok_download_api
  • renew
docker-compose pull && docker-compose down && docker-compose up -d

❤️Contributor

📸Screenshot

API speed test (compared to official API)

🔎点击展开截图

Douyin official API:

API of this project:

TikTok official API:

API of this project:


Project interface

🔎点击展开截图

Web main interface:

Web main interface:


📜 Star History

Star History Chart

MY License

Start: 2021/11/06 GitHub:@Evil0ctalContact:[email protected]