Vì sao nên dùng TikTools cho Python?
Client Python TikTokLive (giấy phép MIT) kết nối thẳng tới giao thức phát sóng của TikTok và giao việc ký cho một backend được quản lý (mặc định là Euler Stream, vốn có gói miễn phí và gói trả phí riêng). Đây là mô hình tự chạy client + ký request được quản lý, do đội ngũ Euler Stream duy trì.
TikTools là một dịch vụ API được quản lý độc lập với hạ tầng ký riêng. Mọi thay đổi giao thức được xử lý phía server, cam kết mục tiêu uptime 99.9%, và chạy với mọi ngôn ngữ qua WebSocket tiêu chuẩn. Không phải xử lý giao thức - chỉ cần kết nối và nhận sự kiện. Hãy chọn mô hình hợp với đội của bạn.
Chuẩn bị
- Đã cài Python 3.8+
- Một API key TikTools miễn phí - lấy tại đây
Cách 1: asyncio + websockets
Cách đơn giản nhất - dùng thư viện chuẩn websockets để kết nối tới WebSocket API của TikTools:
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())Cách 2: REST API với requests
Để lấy dữ liệu một lần (thông tin phòng, hồ sơ người dùng), hãy dùng 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'}")Chạy các script
# Set your API key as environment variable
export TIKTOOL_API_KEY=your_api_key_here
# Run the WebSocket example
python tiktok_live.pyKết quả mong đợi
✅ 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 watchingBước tiếp theo
- Lưu sự kiện vào cơ sở dữ liệu - đẩy sự kiện vào PostgreSQL, MongoDB hoặc SQLite
- Xây dashboard - dùng Flask hoặc FastAPI để tạo dashboard web thời gian thực
- Phân tích bằng AI - đưa tin nhắn chat cho GPT/Claude để phân tích cảm xúc
- Nhiều phiên live - theo dõi nhiều phiên live cùng lúc (gói Pro: 50 kết nối)