为什么用 TikTools 做 Python 开发?
采用 MIT 许可的 TikTokLive Python 客户端直接连接 TikTok 的直播协议,并把签名交给托管后端处理(默认是 Euler Stream,它有自己的免费套餐和付费套餐)。这是由 Euler Stream 团队维护的「客户端自托管 + 签名托管」模式。
TikTools 是一个独立的 托管 API 服务。协议变更在服务端处理,任何语言都能通过标准 WebSocket 接入。无需处理协议,连上就能接收事件。选哪种模式,看你团队的需要。
托管模式✓ 全托管~ 客户端自托管 + 签名托管
接入✓ pip install websockets~ pip install TikTokLive
维护工作✓ 零维护 - 服务端搞定~ 客户端和签名后端都要更新
前置条件
- 已安装 Python 3.8+
- 一个免费的 TikTools API Key - 点这里获取
方案 1:asyncio + websockets
最简单的方式:用标准的 websockets 库连接 TikTools WebSocket API:
pip install websocketsimport 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 requestsimport 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 个连接)