Chuyển từ Euler Stream sang Tik.Tools chỉ với một dòng cấu hình
Giữ nguyên TikTokLive (Python) hoặc tiktok-live-connector (Node). Đổi host của sign provider. Cùng tên sự kiện, cùng SDK, cùng code.
Xem bản thay thế chạy ngay tại đây
Cùng quy trình bắt tay mà Euler cung cấp: tạo token đã ký -> WebSocket. Iframe bên dưới chạy đúng phiên bản HTML của đoạn code với api.tik.tools - chép và dán là bạn có cùng kết quả.
Hai bước. Không cần refactor.
Đổi host của sign provider
Hai dòng cấu hình khi khởi tạo SDK - trỏ backend ký sang https://api.tik.tools thay vì https://tiktok.eulerstream.com. Các event handler, room ID và code SDK hiện có giữ nguyên. Mọi gói API tik.tools đều thay thế trực tiếp được; key demo your_api_key dùng được không cần đăng ký, với hạn mức thấp hơn.
// Node — tiktok-live-connector v2.x (verified working against api.tik.tools)
import { TikTokLiveConnection, SignConfig, WebcastEvent } from 'tiktok-live-connector'
SignConfig.basePath = 'https://api.tik.tools' // was: https://tiktok.eulerstream.com
SignConfig.apiKey = 'tk_your_key' // your tik.tools key
const conn = new TikTokLiveConnection('@username', { fetchRoomInfoOnConnect: false })
conn.on(WebcastEvent.CHAT, e => console.log(e.user.uniqueId, ':', e.comment))
await conn.connect()
// Or env-var (no code change at all):
// SIGN_API_URL=https://api.tik.tools SIGN_API_KEY=tk_your_key node app.js# Python — TikTokLive v6.6+ (one config swap, existing code unchanged)
from TikTokLive.client.web.web_settings import WebDefaults
from TikTokLive import TikTokLiveClient
from TikTokLive.events import CommentEvent
WebDefaults.tiktok_sign_url = "https://api.tik.tools" # was: https://tiktok.eulerstream.com
WebDefaults.tiktok_sign_api_key = "tk_your_key"
client = TikTokLiveClient(unique_id="@username")
@client.on(CommentEvent)
async def on_chat(ev): print(ev.user.unique_id, ":", ev.comment)
await client.connect() # add fetch_live_check=False if running from a datacenter IP
# Or env-var (zero code change):
# SIGN_API_URL=https://api.tik.tools SIGN_API_KEY=tk_your_key python app.py// Direct @eulerstream/euler-api-sdk users — swap basePath
import { EulerStreamApiClient } from '@eulerstream/euler-api-sdk'
const client = new EulerStreamApiClient({
basePath: 'https://api.tik.tools',
apiKey: 'tk_your_key',
})
// Every webcast.* / premium.* / moderation.* method routes to tik.tools.
const res = await client.webcast.retrieveRoomId('username')
console.log(res.data.room_id)Lấy API key thật (khi đã sẵn sàng)
Key demo your_api_key dùng được không cần đăng ký nhưng bị giới hạn 1 WebSocket / phiên 10 phút / 6 lần kết nối mỗi giờ trên mỗi IP. Lấy key Tik.Tools miễn phí để có hạn mức cao hơn + đầy đủ endpoint tương đương Euler.
Mọi endpoint của Euler đều ánh xạ 1:1
Tik.Tools mô phỏng đúng bộ endpoint của Euler nên các SDK vốn chạy với Euler vẫn hoạt động mà không cần vá gì.
| Euler Stream | Tik.Tools (cùng đường dẫn) | Gói |
|---|---|---|
POST /webcast/sign_url | POST /webcast/sign_url | Demo |
GET /webcast/check_alive | GET /webcast/check_alive | Demo |
POST /webcast/fetch | POST /webcast/fetch | Basic+ |
POST /webcast/ws_credentials | POST /webcast/ws_credentials | Basic+ |
POST /webcast/sign_websocket | POST /webcast/sign_websocket | Basic+ |
GET /webcast/room_id | GET /webcast/room_id | Demo |
POST /webcast/room_info | POST /webcast/room_info | Demo |
POST /webcast/bulk_live_check | POST /webcast/bulk_live_check | Basic+ |
| Thêm (Euler không có): ticker công khai, bảng xếp hạng | Demo | |
{ status_code, data: { signed_url, x_bogus, user_agent, cookies } }. Parser hiện có của bạn vẫn chạy bình thường.JSON y hệt, kèm gợi ý chuyển đổi
POST https://api.tik.tools/webcast/sign_url?apiKey=your_api_key
Body: { "url": "<upstream URL>" }
Response:
{
"status_code": 0,
"data": {
"signed_url": "<signed upstream URL>",
"x_bogus": "...",
"user_agent": "Mozilla/5.0 ...",
"cookies": "ttwid=<fresh visitor cookie>"
}
}Gói miễn phí đủ cho việc chuyển đổi + lần deploy production đầu tiên
Gói Sandbox + Basic miễn phí. Không cần thẻ tín dụng. Hạn mức cao hơn khi bạn ra mắt.