教學

TikTok LIVE API Python 指南

用 TikTools WebSocket API 從 Python 連上任何 TikTok LIVE 直播。即時接收聊天訊息、禮物、觀看人數等,可正式上線、完全代管。

為什麼 Python 要用 TikTools?

採 MIT 授權的 TikTokLive Python 用戶端會直接連上 TikTok 的直播協定,並把簽章交給代管後端處理(預設是 Euler Stream,它有自己的免費方案和付費方案)。這是由 Euler Stream 團隊維護的「自行託管用戶端 + 代管簽章」模式。

TikTools 是獨立的代管 API 服務,擁有自己的簽章基礎設施。它在伺服器端處理協定變更,公開 99.9% 的正常運作時間目標,任何語言都能透過標準 WebSocket 使用。不需要處理協定,連上就能收到事件。選最適合你團隊的模式就好。

託管模式✓ 完全代管 - 99.9% 正常運作時間~ 自行託管用戶端 + 代管簽章
設定✓ pip install websockets~ pip install TikTokLive
維護範圍✓ 零維護,全由伺服器端處理~ 用戶端 + 簽章後端都要更新

事前準備

選項 1:asyncio + websockets

最簡單的做法,用標準的 websockets 函式庫連上 TikTools WebSocket API:

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())

選項 2:用 requests 呼叫 REST API

一次性的資料抓取(直播間資訊、使用者檔案)請用 REST API:

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'}")

執行腳本

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

# Run the WebSocket example
python tiktok_live.py

預期輸出

✅ 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

下一步

  • 把事件存進資料庫:把事件送進 PostgreSQL、MongoDB 或 SQLite
  • 打造儀表板:用 Flask 或 FastAPI 建立即時網頁儀表板
  • AI 分析:把聊天訊息丟給 GPT/Claude 做情緒分析
  • 多場直播:同時監控多場直播(Pro 方案:50 個連線)