Tutoriel

TikTok LIVE API Guide Python

Connecte-toi à n'importe quel stream TikTok LIVE depuis Python avec l'API WebSocket TikTools. Reçois en temps réel les messages du chat, les cadeaux, le nombre de spectateurs et plus encore - prêt pour la production, entièrement géré.

Pourquoi utiliser TikTools en Python ?

Le client Python TikTokLive, sous licence MIT, se connecte directement au protocole de diffusion de TikTok et délègue la signature à un backend géré (par défaut Euler Stream, qui a sa propre offre gratuite et ses offres payantes). C'est un modèle client auto-hébergé + signature gérée, maintenu par l'équipe Euler Stream.

TikTools est un service API géré indépendant avec sa propre infrastructure de signature. Il gère les changements de protocole côté serveur, affiche un objectif de disponibilité de 99.9% et fonctionne avec n'importe quel langage via un WebSocket standard. Aucune gestion de protocole requise - connecte-toi et reçois les événements. Choisis le modèle qui convient à ton équipe.

Modèle d'hébergement✓ Entièrement géré - 99.9% de disponibilité~ Client auto-hébergé + signature gérée
Installation✓ pip install websockets~ pip install TikTokLive
Maintenance✓ Aucune - gérée côté serveur~ Mises à jour du client + du backend de signature

Prérequis

Option 1 : asyncio + websockets

L'approche la plus simple - utilise la bibliothèque standard websockets pour te connecter à l'API WebSocket TikTools :

pip install websockets
import asyncio
import websockets
import json
import os

API_KEY = os.environ.get("TIKTOOL_API_KEY", "YOUR_API_KEY")
STREAMER = "tv_asahi_news"  # TikTok username (without @)

async def connect():
    uri = f"wss://api.tik.tools?uniqueId={STREAMER}&apiKey={API_KEY}"

    async with websockets.connect(uri) as ws:
        print(f"✅ Connected to @{STREAMER}")

        async for message in ws:
            event = json.loads(message)
            event_type = event.get("event", "")
            data = event.get("data", {})

            if event_type == "chat":
                user = data.get("user", {}).get("uniqueId", "?")
                comment = data.get("comment", "")
                print(f"[CHAT] {user}: {comment}")

            elif event_type == "gift":
                user = data.get("user", {}).get("uniqueId", "?")
                gift = data.get("giftName", "?")
                diamonds = data.get("diamondCount", 0)
                print(f"[GIFT] {user} sent {gift} ({diamonds} 💎)")

            elif event_type == "member":
                user = data.get("user", {}).get("uniqueId", "?")
                print(f"[JOIN] {user} joined")

            elif event_type == "roomUserSeq":
                viewers = data.get("viewerCount", 0)
                print(f"[VIEWERS] {viewers} watching")

asyncio.run(connect())

Option 2 : API REST avec requests

Pour récupérer des données ponctuellement (infos de salle, profils utilisateurs), utilise l'API REST :

pip install requests
import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://api.tik.tools"

# Get room info for a streamer
resp = requests.get(f"{BASE}/webcast/room_info/", params={
    "uniqueId": "tv_asahi_news",
    "apiKey": API_KEY,
})
data = resp.json()
print(f"Title: {data.get('title', 'N/A')}")
print(f"Viewers: {data.get('viewer_count', 0)}")
print(f"Status: {'LIVE' if data.get('alive') else 'OFFLINE'}")

Lancer les scripts

# Set your API key as environment variable
export TIKTOOL_API_KEY=your_api_key_here

# Run the WebSocket example
python tiktok_live.py

Sortie attendue

✅ Connected to @tv_asahi_news
[VIEWERS] 1,234 watching
[CHAT] viewer42: Hello everyone!
[GIFT] big_fan sent Rose (1 💎)
[CHAT] news_watcher: Great coverage
[JOIN] new_viewer joined
[VIEWERS] 1,237 watching

Étapes suivantes

  • Stocke les événements dans une base de données - envoie les événements vers PostgreSQL, MongoDB ou SQLite
  • Crée un tableau de bord - utilise Flask ou FastAPI pour créer un tableau de bord web en temps réel
  • Analyse par IA - envoie les messages du chat à GPT/Claude pour une analyse de sentiment
  • Multi-stream - suis plusieurs streams simultanément (offre Pro : 50 connexions)