لماذا TikTools مع Python؟
عميل Python TikTokLive المرخّص بـ MIT يتصل مباشرة ببروتوكول البث في TikTok ويسند التوقيع إلى خدمة مُدارة (الافتراضية هي Euler Stream، ولها باقة مجانية وباقات مدفوعة خاصة بها). إنه نموذج تستضيف فيه العميل بنفسك مع توقيع مُدار، ويصونه فريق Euler Stream.
TikTools خدمة API مُدارة مستقلة ولها بنية توقيع خاصة بها. تتعامل مع تغييرات البروتوكول من جهة الخادم، وتعلن هدف وقت تشغيل 99.9%، وتعمل مع أي لغة عبر WebSocket قياسي. لا حاجة للتعامل مع البروتوكول: اتصل واستقبل الأحداث فقط. اختر النموذج الذي يناسب فريقك.
المتطلبات
- تثبيت 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: REST API مع requests
لجلب البيانات لمرة واحدة (معلومات الغرفة، ملفات المستخدمين)، استخدم 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 لإنشاء لوحة ويب لحظية
- تحليل بالذكاء الاصطناعي - أرسل رسائل الدردشة إلى GPT أو Claude لتحليل المشاعر
- عدة بثوث - راقب عدة بثوث في الوقت نفسه (باقة Pro: 50 اتصالًا)