درس تطبيقي

TikTok LIVE API دليل Python

اتصل بأي بث TikTok LIVE من Python عبر TikTools WebSocket API. استقبل رسائل الدردشة والهدايا وعدد المشاهدين والمزيد لحظيًا - جاهز للإنتاج ومُدار بالكامل.

لماذا TikTools مع Python؟

عميل Python TikTokLive المرخّص بـ MIT يتصل مباشرة ببروتوكول البث في 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: REST API مع requests

لجلب البيانات لمرة واحدة (معلومات الغرفة، ملفات المستخدمين)، استخدم 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 لإنشاء لوحة ويب لحظية
  • تحليل بالذكاء الاصطناعي - أرسل رسائل الدردشة إلى GPT أو Claude لتحليل المشاعر
  • عدة بثوث - راقب عدة بثوث في الوقت نفسه (باقة Pro: 50 اتصالًا)