TikTokLive.client package
Subpackages
- TikTokLive.client.web package
- Subpackages
- TikTokLive.client.web.routes package
- Submodules
- TikTokLive.client.web.routes.download_video module
- TikTokLive.client.web.routes.gift_list module
- TikTokLive.client.web.routes.image_download module
- TikTokLive.client.web.routes.is_live module
- TikTokLive.client.web.routes.room_id_api module
- TikTokLive.client.web.routes.room_id_live_html module
- TikTokLive.client.web.routes.room_info module
- TikTokLive.client.web.routes.sign_fetch module
- Module contents
- TikTokLive.client.web.routes package
- Submodules
- TikTokLive.client.web.web_base module
- TikTokLive.client.web.web_client module
- TikTokLive.client.web.web_presets module
- TikTokLive.client.web.web_settings module
- Module contents
- Subpackages
- TikTokLive.client.ws package
Submodules
TikTokLive.client.client module
- class TikTokLive.client.client.TikTokLiveClient(unique_id: str, web_proxy: Proxy | None = None, ws_proxy: Proxy | None = None, web_kwargs: dict | None = None, ws_kwargs: dict | None = None)
Bases:
AsyncIOEventEmitter
A client to connect to & read from TikTok LIVE streams
- add_listener(event: Type[WebsocketResponseEvent | UnknownEvent | ConnectEvent | FollowEvent | ShareEvent | LiveEndEvent | LivePauseEvent | LiveUnpauseEvent | DisconnectEvent | GiftEvent | RoomEvent | BarrageEvent | CaptionEvent | CommentEvent | ControlEvent | EmoteChatEvent | EnvelopeEvent | GoalUpdateEvent | ImDeleteEvent | LikeEvent | RoomUserSeqEvent | SocialEvent | SubscribeEvent | RankUpdateEvent | JoinEvent | PollEvent | QuestionNewEvent | RankTextEvent | HourlyRankEvent | LinkMicArmiesEvent | LinkMicBattleEvent | LinkMicFanTicketMethodEvent | LinkMicMethodEvent | LiveIntroEvent | UnauthorizedMemberEvent | MessageDetectEvent | OecLiveShoppingEvent | RoomPinEvent | SystemEvent | LinkEvent | LinkLayerEvent], f: EventHandler) Handler
Method that can be used to register a Python function as an event listener
- Parameters:
event – The event to listen to
f – The function to handle the event
- Returns:
The generated pyee.Handler object
- async connect(callback: Callable[[None], None] | Callable[[None], Coroutine[None, None, None]] | Coroutine[None, None, None] | None = None, **kwargs) Task
Start a future-blocking connection to TikTokLive
- Parameters:
callback – A callback function to run when connected
kwargs – Kwargs to pass to start
- Returns:
The task, once it’s finished
- property connected: bool
Whether the WebSocket client is currently connected to TikTok
- Returns:
Connection status
- async disconnect() None
Disconnect the client from the websocket
- Returns:
None
- property gift_info: dict | None
Information about the stream’s gifts if fetch_gift_info=True when starting the client e.g. with client.run)
- Returns:
The stream gift info
- async handle_custom_event(response: WebcastResponseMessage, event: GiftEvent | RoomEvent | BarrageEvent | CaptionEvent | CommentEvent | ControlEvent | EmoteChatEvent | EnvelopeEvent | GoalUpdateEvent | ImDeleteEvent | LikeEvent | RoomUserSeqEvent | SocialEvent | SubscribeEvent | RankUpdateEvent | JoinEvent | PollEvent | QuestionNewEvent | RankTextEvent | HourlyRankEvent | LinkMicArmiesEvent | LinkMicBattleEvent | LinkMicFanTicketMethodEvent | LinkMicMethodEvent | LiveIntroEvent | UnauthorizedMemberEvent | MessageDetectEvent | OecLiveShoppingEvent | RoomPinEvent | SystemEvent | LinkEvent | LinkLayerEvent) WebsocketResponseEvent | UnknownEvent | ConnectEvent | FollowEvent | ShareEvent | LiveEndEvent | LivePauseEvent | LiveUnpauseEvent | DisconnectEvent | None
Extract CustomEvent events from existing ProtoEvent events
- Parameters:
response – The WebcastResponseMessage to parse for the custom event
event – The ProtoEvent to parse for the custom event
- Returns:
The event, if one exists
- has_listener(event: Type[WebsocketResponseEvent | UnknownEvent | ConnectEvent | FollowEvent | ShareEvent | LiveEndEvent | LivePauseEvent | LiveUnpauseEvent | DisconnectEvent | GiftEvent | RoomEvent | BarrageEvent | CaptionEvent | CommentEvent | ControlEvent | EmoteChatEvent | EnvelopeEvent | GoalUpdateEvent | ImDeleteEvent | LikeEvent | RoomUserSeqEvent | SocialEvent | SubscribeEvent | RankUpdateEvent | JoinEvent | PollEvent | QuestionNewEvent | RankTextEvent | HourlyRankEvent | LinkMicArmiesEvent | LinkMicBattleEvent | LinkMicFanTicketMethodEvent | LinkMicMethodEvent | LiveIntroEvent | UnauthorizedMemberEvent | MessageDetectEvent | OecLiveShoppingEvent | RoomPinEvent | SystemEvent | LinkEvent | LinkLayerEvent]) bool
Check whether the client is listening to a given event
- Parameters:
event – The event to check listening for
- Returns:
Whether it is being listened to
- async is_live(unique_id: str | None = None) bool
Check if the client is currently live on TikTok
- Parameters:
unique_id – Optionally override the user to check
- Returns:
Whether they are live on TikTok
- property logger: Logger
The internal logger used by TikTokLive
- Returns:
An instance of a logging.Logger
- on(event: Type[WebsocketResponseEvent | UnknownEvent | ConnectEvent | FollowEvent | ShareEvent | LiveEndEvent | LivePauseEvent | LiveUnpauseEvent | DisconnectEvent | GiftEvent | RoomEvent | BarrageEvent | CaptionEvent | CommentEvent | ControlEvent | EmoteChatEvent | EnvelopeEvent | GoalUpdateEvent | ImDeleteEvent | LikeEvent | RoomUserSeqEvent | SocialEvent | SubscribeEvent | RankUpdateEvent | JoinEvent | PollEvent | QuestionNewEvent | RankTextEvent | HourlyRankEvent | LinkMicArmiesEvent | LinkMicBattleEvent | LinkMicFanTicketMethodEvent | LinkMicMethodEvent | LiveIntroEvent | UnauthorizedMemberEvent | MessageDetectEvent | OecLiveShoppingEvent | RoomPinEvent | SystemEvent | LinkEvent | LinkLayerEvent], f: EventHandler | None = None) Handler | Callable[[Handler], Handler]
Decorator that can be used to register a Python function as an event listener
- Parameters:
event – The event to listen to
f – The function to handle the event
- Returns:
The wrapped function as a generated pyee.Handler object
- classmethod parse_unique_id(unique_id: str) str
Parse unique ID from a generic string
- Parameters:
unique_id – The unique_id to parse
- Returns:
The parsed unique_id
- property room_id: int | None
The room ID the user is currently connected to
- Returns:
Room ID or None
- property room_info: dict | None
Information about the room if fetch_room_info=True when starting the client (e.g. with client.run)
- Returns:
Dictionary of room info
- run(**kwargs) Task
Start a thread-blocking connection to TikTokLive
- Parameters:
kwargs – Kwargs to pass to start
- Returns:
The task, once it’s finished
- async start(*, process_connect_events: bool = True, fetch_room_info: bool = False, fetch_gift_info: bool = False, fetch_live_check: bool = True, room_id: int | None = None) Task
Create a non-blocking connection to TikTok LIVE and return the task
- Parameters:
process_connect_events – Whether to process initial events sent on room join
fetch_room_info – Whether to fetch room info on join
fetch_gift_info – Whether to fetch gift info on join
fetch_live_check – Whether to check if the user is live (you almost ALWAYS want this enabled)
room_id – An override to the room ID to connect directly to the livestream and skip scraping the live. Useful when trying to scale, as scraping the HTML can result in TikTok blocks.
- Returns:
Task containing the heartbeat of the client
- property unique_id: str
The cleaned unique-id parameter passed to the client
- property web: TikTokWebClient
The HTTP client that this client uses for requests
- Returns:
A copy of the TikTokWebClient
TikTokLive.client.errors module
- exception TikTokLive.client.errors.AgeRestrictedError
Bases:
RuntimeError
Thrown when a LIVE is age restricted. Pass sessionid to bypass.
- exception TikTokLive.client.errors.AlreadyConnectedError
Bases:
RuntimeError
Thrown when attempting to connect to a user that is already connected to
- exception TikTokLive.client.errors.InitialCursorMissingError
Bases:
RuntimeError
Thrown when the cursor for connecting to TikTok is missing (blocked)
- exception TikTokLive.client.errors.UserNotFoundError(unique_id: str, *args)
Bases:
RuntimeError
Thrown when the request to check if a user is live fails because a user has no livestream account (e.g. <1000 followers)
- exception TikTokLive.client.errors.UserOfflineError
Bases:
RuntimeError
Thrown when the requested streamer to watch is offline
- exception TikTokLive.client.errors.WebcastBlocked200Error
Bases:
RuntimeError
Thrown when the webcast is blocked by TikTok with a 200 status code (detected)
- exception TikTokLive.client.errors.WebsocketURLMissingError
Bases:
RuntimeError
Thrown when the websocket URL to connect to TikTok is missing (blocked)
TikTokLive.client.logger module
- class TikTokLive.client.logger.LogLevel(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
Enum
The level to be used with the python logging module
- CRITICAL = 50
- DEBUG = 10
- ERROR = 40
- INFO = 20
- NOTSET = 0
- WARNING = 30
- property value: int
Return the enum item value
- Returns:
Value recast (correctly) as an int
- class TikTokLive.client.logger.TikTokLiveLogHandler(stream: Any | None = None, formatter: Formatter | None = None)
Bases:
StreamHandler
A custom logger handler for TikTokLive
- FORMAT: str = '[%(name)s] %(levelname)s from %(stack)s:%(lineno)d — %(message)s'
- LOGGER: Logger | None = None
- LOGGER_NAME: str = 'TikTokLive'
- SPACING: Dict[int, int] = {10: 0, 20: 1, 30: 1, 40: 0}
- TIME_FORMAT: str = '%H:%M:%S'
- emit(record: LogRecord) None
Handle emitting from the logger
- Parameters:
record – The record to emit from
- Returns:
None
- classmethod format_path(record: LogRecord) str
Take a path from a stacktrace and convert it into compressed form similar to SpringBoot.
- Parameters:
record – The record to read
- Returns:
The formatted path in dot-format