Not getting event data from the package
Closed this issue · 5 comments
Describe the bug
We are not getting the event data from this package. Say 10 times we run that package we get 1 or 2 times event data without any error.
We faced this error before but since yesterday(06-06-2024) this error is happening frequently.
TikTokLive 6.0.6
We tried the latest version of the package got an error like this.
This way we implemented our code to get event data:
HANDLED_MESSAGE_EVENTS = [
proto_events.JoinEvent,
proto_events.JoinEvent, proto_events.LikeEvent, proto_events.GiftEvent,
proto_events.EnvelopeEvent, proto_events.SubscribeEvent, custom_events.FollowEvent,
custom_events.ShareEvent, proto_events.EmoteChatEvent
]
class TikTokLiveStreamIterator(TikTokLiveClient):
def __init__(self, stream_url: str, **options):
TikTokLiveClient.__init__(self, unique_id=stream_url)
self.add_listener(ConnectEvent, self._process_connect_event)
self.add_listener(DisconnectEvent, self._process_disconnect_event)
self.add_listener(LiveEndEvent, self._process_live_end_event)
for message_event in HANDLED_MESSAGE_EVENTS:
self.add_listener(message_event, self._process_message_event)
@property
def streaming_url(self):
_streaming_url: str | None = None
try:
record_data: dict = json.loads(
self.room_info['stream_url']['live_core_sdk_data']['pull_data']['stream_data']
)
record_url_data: dict = record_data['data'][VideoFetchQuality.ORIGIN.value]['main']
_streaming_url: str = record_url_data.get('mp4') or record_url_data['flv']
except Exception as e:
print(e)
return _streaming_url
async def _process_connect_event(self, event: ConnectEvent):
print(f"Client connected.")
async def _process_disconnect_event(self, event: DisconnectEvent):
print(f"Client disconnected!")
async def _process_live_end_event(self, event: LiveEndEvent):
print(f"Stream ended.")
async def _process_error_event(self, error):
print("_process_error_event is invoked.")
if error is not None:
print(f"Error: {error}")
async def _process_message_event(self, event):
try:
from datetime import datetime
print(f"User Name: {event.user.unique_id}")
except Exception as e:
print(e)
async def start(self) -> None:
print(f"Starting iterator for unique id: {self.unique_id}.")
await TikTokLiveClient.start(self, fetch_room_info=True)
print("Call done....")
async def stop(self) -> None:
TikTokLiveClient.remove_all_listeners(self)
await TikTokLiveClient.disconnect(self)
TikTokLive 4.5.2
In old version of this package we get different type of error:
We tried to get the data with the below code from the package
HANDLED_MESSAGE_EVENTS = [
"join", "comment", "gift", "viewer_count_update",
"like", "emote", "envelope", "question", "subscribe",
"follow", "share"
]
class TikTokLiveStreamIterator(ABC, TikTokLiveClient):
def __init__(self, stream_url: str, **options):
TikTokLiveClient.__init__(self, unique_id=stream_url, **options)
self.live_ended = False
self.on("connect", self._process_connect_event)
self.on("disconnect", self._process_disconnect_event)
self.on("live_end", self._process_live_end_event)
self.on("error", self._process_error_event)
for message_event in HANDLED_MESSAGE_EVENTS:
self.on(message_event, self._process_message_event)
async def _process_connect_event(self, event: ConnectEvent):
print(f"Client connected.")
print("Client connected!")
async def _process_disconnect_event(self, event: DisconnectEvent):
print(f"Client disconnected!")
if event.webcast_closed and not self.live_ended:
await TikTokLiveClient.reconnect(self)
async def _process_live_end_event(self, event: LiveEndEvent):
print(f"Stream ended.")
async def _process_error_event(self, error):
print("_process_error_event is invoked.")
if error is not None:
print(f"Error: {error}")
async def _process_message_event(self, event: AbstractEvent):
print(f"Received message event: {event.name}")
async def start(self, session_id=None) -> None:
print(f"Starting iterator for unique id: {self.unique_id}.")
await TikTokLiveClient.start(self, session_id)
print(f"Iterator for unique id: {self.unique_id} started.")
async def stop(self) -> None:
print(f"Stopping iterator for unique id: {self.unique_id}.")
self.live_ended = True
TikTokLiveClient.remove_all_listeners(self)
TikTokLiveClient.stop(self)
print(f"Stopped iterator for unique id: {self.unique_id}.")
Package Version
My version of TikTokLive is 4.5.2 and 6.0.6
.
The reason why it failed
{"data":{"message":"Request params error","prompts":"Request params error"},"extra":{"now":1717778102160},"status_code":10011}
The reason why it failed
{"data":{"message":"Request params error","prompts":"Request params error"},"extra":{"now":1717778102160},"status_code":10011}
This occurs when the live is age restricted. Room info cannot be checked when the live is age restricted. This happens for everyone in all libraries. However, it is not needed to connect to the livestream.
The reason why it failed
{"data":{"message":"Request params error","prompts":"Request params error"},"extra":{"now":1717778102160},"status_code":10011}
This occurs when the live is age restricted. Room info cannot be checked when the live is age restricted. This happens for everyone in all libraries. However, it is not needed to connect to the livestream.
This should not happen if you use sessionID
I use it and get this error
The reason why it failed
{"data":{"message":"Request params error","prompts":"Request params error"},"extra":{"now":1717778102160},"status_code":10011}
This occurs when the live is age restricted. Room info cannot be checked when the live is age restricted. This happens for everyone in all libraries. However, it is not needed to connect to the livestream.
This should not happen if you use sessionID I use it and get this error
Add some debug please. I cannot answer this for you. I do not get this issue.
Isaac
Closed due to inactivity