Skip to main content

TikTok Live WebSocket connector — real-time chat, gifts, likes, and viewer events. No authentication required.

Project description

PirateTok

piratetok-live-py

Connect to any TikTok Live stream and receive real-time events in Python. No signing server, no API keys, no authentication required.

import asyncio
from piratetok_live import TikTokLiveClient, EventType

async def main():
    # Create client — no API key, no signing server, just a username
    client = TikTokLiveClient("username_here")

    # Register handlers with decorators — events carry decoded protobuf data
    @client.on(EventType.chat)
    def on_chat(evt):
        nick = evt.data.get("user", {}).get("nickname", "?")
        print(f"[chat] {nick}: {evt.data.get('content')}")

    @client.on(EventType.gift)
    def on_gift(evt):
        nick = evt.data.get("user", {}).get("nickname", "?")
        gift = evt.data.get("gift", {})
        print(f"[gift] {nick} sent {gift.get('name')} x{evt.data.get('repeatCount')} ({gift.get('diamondCount', 0)} diamonds)")

    @client.on(EventType.like)
    def on_like(evt):
        nick = evt.data.get("user", {}).get("nickname", "?")
        print(f"[like] {nick} ({evt.data.get('total')} total)")

    # Connect — handles auth, room resolution, WSS, heartbeat, and reconnection
    await client.connect()

asyncio.run(main())

Install

pip install piratetok-live-py

Requires Python >= 3.11.

Other languages

Language Install Repo
Rust cargo add piratetok-live-rs live-rs
Go go get github.com/PirateTok/live-go live-go
JavaScript npm install piratetok-live-js live-js
C# dotnet add package PirateTok.Live live-cs
Java com.piratetok:live live-java
Lua luarocks install piratetok-live-lua live-lua
Elixir {:piratetok_live, "~> 0.1"} live-ex
Dart dart pub add piratetok_live live-dart
C #include "piratetok.h" live-c
PowerShell Install-Module PirateTok.Live live-ps1
Shell bpkg install PirateTok/live-sh live-sh

Features

  • Zero signing dependency — no API keys, no signing server, no external auth
  • 64 decoded event types — hand-written betterproto dataclasses, no codegen
  • Auto-reconnection — stale detection, exponential backoff, self-healing auth
  • Proxy support.proxy(url) builder, applies to HTTP + WSS
  • Enriched User data — badges, gifter level, moderator status, follow info, fan club
  • Sub-routed convenience eventsfollow, share, join, live_ended
  • 2 runtime depsbetterproto + websockets

Configuration

client = (TikTokLiveClient("username_here")
    .cdn_eu()
    .timeout(15)
    .max_retries(10)
    .stale_timeout(90)
    .proxy("socks5://127.0.0.1:1080")
    .user_agent("Mozilla/5.0 ...")
    .cookies("sessionid=abc; sid_tt=abc")
    .language("pt")
    .region("BR")
    .compress(False))
Method Default Description
.cdn_eu() / .cdn_us() / .cdn(host) Global CDN WebSocket CDN endpoint
.timeout(seconds) 10 HTTP request timeout in seconds
.max_retries(n) 5 Maximum reconnection attempts before giving up
.stale_timeout(seconds) 60 Seconds without data before triggering a reconnect
.proxy(url) None HTTP/HTTPS/SOCKS5 proxy for all HTTP + WSS traffic
.user_agent(ua) Random from pool Override the user agent (rotated automatically on reconnect by default)
.cookies(cookies) None Append session cookies alongside ttwid in the WSS cookie header
.language(lang) System detected Override the language sent in WSS params (e.g. "pt", "ro")
.region(reg) System detected Override the region sent in WSS params (e.g. "BR", "RO")
.compress(enabled) True Disable gzip compression for WSS payloads (trades bandwidth for CPU)

Room info (optional, separate call)

from piratetok_live import check_online, fetch_room_info

result = check_online("username_here")
info = fetch_room_info(result.room_id)

# 18+ rooms
info = fetch_room_info(result.room_id, cookies="sessionid=abc; sid_tt=abc")

Examples

python examples/basic_chat.py <username>       # connect + print chat events
python examples/online_check.py <username>     # check if user is live
python examples/stream_info.py <username>      # fetch room metadata + stream URLs
python examples/gift_tracker.py <username>     # track gifts with diamond totals
python examples/gift_streak.py <username>      # track gifts with GiftStreakTracker deltas
python examples/profile_lookup.py [username]   # fetch profile via SIGI scrape with caching

Replay testing

Deterministic cross-lib validation against binary WSS captures. Requires testdata from a separate repo:

git clone https://github.com/PirateTok/live-testdata testdata
pip install -e ".[test]"
pytest tests/test_replay.py -v

Tests skip gracefully if testdata is not found. You can also set PIRATETOK_TESTDATA to point to a custom location.

License

0BSD

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

piratetok_live_py-0.1.8.tar.gz (34.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

piratetok_live_py-0.1.8-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file piratetok_live_py-0.1.8.tar.gz.

File metadata

  • Download URL: piratetok_live_py-0.1.8.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for piratetok_live_py-0.1.8.tar.gz
Algorithm Hash digest
SHA256 a3a29422f71c9969dc7bf284a379d23ad4399c9e74debfc2bb3f445992b7493e
MD5 e67d616f523ca1e0fff40c931c0e7360
BLAKE2b-256 0a77afef16e96272a3032e91457820387dacc5838b816a2abfb08f79f78caf57

See more details on using hashes here.

File details

Details for the file piratetok_live_py-0.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for piratetok_live_py-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2c3607d7bcc276930f5d5d3a3a4454b78cb1c20374c7f12f6782bdb1d198683a
MD5 a5fb6869d4d42d3b8bada8a847c6a6ce
BLAKE2b-256 45a41ea405924daaa836d6df4fd7ed562c83feb61410faeb5024ae1ec8474c56

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page