Python에서 TikTools를 쓰는 이유
MIT 라이선스의 TikTokLive Python 클라이언트는 TikTok 방송 프로토콜에 직접 연결하고 서명은 관리형 백엔드에 맡겨요(기본값은 자체 무료 요금제와 유료 요금제가 있는 Euler Stream). Euler Stream 팀이 관리하는, 클라이언트는 직접 호스팅하고 서명은 관리형으로 쓰는 모델이에요.
TikTools는 자체 서명 인프라를 갖춘 독립 관리형 API 서비스예요. 프로토콜 변경은 서버에서 처리하고, 99.9% 가동률 목표를 공개하며, 표준 WebSocket으로 어떤 언어에서든 쓸 수 있어요. 프로토콜을 다룰 필요 없이 연결하고 이벤트를 받기만 하면 돼요. 팀에 맞는 모델을 고르세요.
호스팅 방식✓ 완전 관리형 - 99.9% 가동률~ 클라이언트 직접 호스팅 + 관리형 서명
설정✓ pip install websockets~ pip install TikTokLive
유지 보수 범위✓ 없음 - 서버에서 처리~ 클라이언트 + 서명 백엔드 업데이트
준비물
- Python 3.8+ 설치
- 무료 TikTools API 키 - 여기서 받기
방법 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개)