tiktoklive 0.0.19

A Rust library. Use it to receive live stream events such as comments and gifts in realtime from TikTok LIVE No credentials are required.
Documentation
use crate::core::live_client::TikTokLiveClient;
use crate::core::live_client_mapper::TikTokLiveMessageMapper;
use crate::generated::events::*;
use crate::generated::messages::webcast::*;
use protobuf::Message;
impl TikTokLiveMessageMapper {
    pub fn handle_single_message(
        &self,
        message: crate::generated::messages::webcast::webcast_response::Message,
        client: &TikTokLiveClient,
    ) {
        let proto_message_name = &message.method;
        let proto_message_content = &message.payload;
        match proto_message_name.as_str() {
            "WebcastLikeMessage" => {
                let raw_data = WebcastLikeMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokLikeEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLike(event));
            }
            "WebcastQuestionNewMessage" => {
                let raw_data =
                    WebcastQuestionNewMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokQuestionNewEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnQuestionNew(event));
            }
            "WebcastLinkMicBattlePunishFinish" => {
                let raw_data =
                    WebcastLinkMicBattlePunishFinish::parse_from_bytes(proto_message_content)
                        .unwrap();
                let event = TikTokLinkMicBattlePunishFinishEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLinkMicBattlePunishFinish(event));
            }
            "WebcastRankUpdateMessage" => {
                let raw_data =
                    WebcastRankUpdateMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokRankUpdateEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnRankUpdate(event));
            }
            "WebcastLinkMicFanTicketMethod" => {
                let raw_data =
                    WebcastLinkMicFanTicketMethod::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokLinkMicFanTicketMethodEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLinkMicFanTicketMethod(event));
            }
            "WebcastLiveIntroMessage" => {
                let raw_data =
                    WebcastLiveIntroMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokLiveIntroEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLiveIntro(event));
            }
            "WebcastMemberMessage" => {
                let raw_data =
                    WebcastMemberMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokMemberEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnMember(event));
            }
            "WebcastChatMessage" => {
                let raw_data = WebcastChatMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokChatEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnChat(event));
            }
            "WebcastLinkMicArmies" => {
                let raw_data =
                    WebcastLinkMicArmies::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokLinkMicArmiesEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLinkMicArmies(event));
            }
            "WebcastLinkLayerMessage" => {
                let raw_data =
                    WebcastLinkLayerMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokLinkLayerEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLinkLayer(event));
            }
            "WebcastResponse" => {
                let raw_data = WebcastResponse::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokResponseEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnResponse(event));
            }
            "WebcastPushFrame" => {
                let raw_data = WebcastPushFrame::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokPushFrameEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnPushFrame(event));
            }
            "WebcastRankTextMessage" => {
                let raw_data =
                    WebcastRankTextMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokRankTextEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnRankText(event));
            }
            "WebcastSystemMessage" => {
                let raw_data =
                    WebcastSystemMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokSystemEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnSystem(event));
            }
            "WebcastLinkmicBattleTaskMessage" => {
                let raw_data =
                    WebcastLinkmicBattleTaskMessage::parse_from_bytes(proto_message_content)
                        .unwrap();
                let event = TikTokLinkmicBattleTaskEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLinkmicBattleTask(event));
            }
            "WebcastGiftMessage" => {
                let raw_data = WebcastGiftMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokGiftEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnGift(event));
            }
            "WebcastInRoomBannerMessage" => {
                let raw_data =
                    WebcastInRoomBannerMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokInRoomBannerEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnInRoomBanner(event));
            }
            "WebcastMsgDetectMessage" => {
                let raw_data =
                    WebcastMsgDetectMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokMsgDetectEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnMsgDetect(event));
            }
            "WebcastControlMessage" => {
                let raw_data =
                    WebcastControlMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokControlEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnControl(event));
            }
            "WebcastLinkMicMethod" => {
                let raw_data =
                    WebcastLinkMicMethod::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokLinkMicMethodEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLinkMicMethod(event));
            }
            "WebcastGoalUpdateMessage" => {
                let raw_data =
                    WebcastGoalUpdateMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokGoalUpdateEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnGoalUpdate(event));
            }
            "WebcastCaptionMessage" => {
                let raw_data =
                    WebcastCaptionMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokCaptionEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnCaption(event));
            }
            "WebcastHourlyRankMessage" => {
                let raw_data =
                    WebcastHourlyRankMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokHourlyRankEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnHourlyRank(event));
            }
            "WebcastBarrageMessage" => {
                let raw_data =
                    WebcastBarrageMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokBarrageEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnBarrage(event));
            }
            "WebcastSubNotifyMessage" => {
                let raw_data =
                    WebcastSubNotifyMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokSubNotifyEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnSubNotify(event));
            }
            "RoomVerifyMessage" => {
                let raw_data = RoomVerifyMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokRoomVerifyEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnRoomVerify(event));
            }
            "WebcastSocialMessage" => {
                let raw_data =
                    WebcastSocialMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokSocialEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnSocial(event));
            }
            "WebcastEmoteChatMessage" => {
                let raw_data =
                    WebcastEmoteChatMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokEmoteChatEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnEmoteChat(event));
            }
            "WebcastPollMessage" => {
                let raw_data = WebcastPollMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokPollEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnPoll(event));
            }
            "WebcastRoomPinMessage" => {
                let raw_data =
                    WebcastRoomPinMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokRoomPinEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnRoomPin(event));
            }
            "WebcastRoomMessage" => {
                let raw_data = WebcastRoomMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokRoomEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnRoom(event));
            }
            "WebcastEnvelopeMessage" => {
                let raw_data =
                    WebcastEnvelopeMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokEnvelopeEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnEnvelope(event));
            }
            "WebcastImDeleteMessage" => {
                let raw_data =
                    WebcastImDeleteMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokImDeleteEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnImDelete(event));
            }
            "WebcastRoomUserSeqMessage" => {
                let raw_data =
                    WebcastRoomUserSeqMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokRoomUserSeqEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnRoomUserSeq(event));
            }
            "WebcastUnauthorizedMemberMessage" => {
                let raw_data =
                    WebcastUnauthorizedMemberMessage::parse_from_bytes(proto_message_content)
                        .unwrap();
                let event = TikTokUnauthorizedMemberEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnUnauthorizedMember(event));
            }
            "WebcastOecLiveShoppingMessage" => {
                let raw_data =
                    WebcastOecLiveShoppingMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokOecLiveShoppingEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnOecLiveShopping(event));
            }
            "WebcastLinkMessage" => {
                let raw_data = WebcastLinkMessage::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokLinkEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLink(event));
            }
            "WebcastLinkMicBattle" => {
                let raw_data =
                    WebcastLinkMicBattle::parse_from_bytes(proto_message_content).unwrap();
                let event = TikTokLinkMicBattleEvent { raw_data };
                client.publish_event(TikTokLiveEvent::OnLinkMicBattle(event));
            }
            _ => {
                client.publish_event(TikTokLiveEvent::OnWebsocketUnknownMessage(
                    TikTokWebsocketUnknownMessageEvent {
                        message_name: message.method.clone(),
                        raw_data: message,
                    },
                ));
            }
        }
    }
}