UNPKG

@qixils/tiktok-live-connector

Version:

Node.js module to receive live stream chat events like comments and gifts from TikTok LIVE

327 lines (268 loc) 6.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tiktokSchemaData = void 0; const tiktokSchemaData = `syntax = "proto3"; package TikTok; // Data structure from im/fetch/ response message WebcastResponse { repeated Message messages = 1; string cursor = 2; int32 fetchInterval = 3; int64 serverTimestamp = 4; string internalExt = 5; int32 fetchType = 6; // ws (1) or polling (2) WebsocketParam wsParam = 7; int32 heartbeatDuration = 8; bool needAck = 9; string wsUrl = 10; } message Message { string type = 1; bytes binary = 2; } message WebsocketParam { string name = 1; string value = 2; } // Message types depending on Message.tyoe message WebcastControlMessage { int32 action = 2; } // Statistics like viewer count message WebcastRoomUserSeqMessage { repeated TopUser topViewers = 2; int32 viewerCount = 3; } message TopUser { uint64 coinCount = 1; User user = 2; } message WebcastChatMessage { WebcastMessageEvent event = 1; User user = 2; string comment = 3; repeated WebcastSubEmote emotes = 13; } // Chat Emotes (Subscriber) message WebcastEmoteChatMessage { User user = 2; EmoteDetails emote = 3; } message WebcastSubEmote { int32 placeInComment = 1; //starting at 0, you insert the emote itself into the comment at that place EmoteDetails emote = 2; } message WebcastMemberMessage { WebcastMessageEvent event = 1; User user = 2; int32 actionId = 10; } message WebcastGiftMessage { WebcastMessageEvent event = 1; int32 giftId = 2; int32 repeatCount = 5; User user = 7; int32 repeatEnd = 9; uint64 groupId = 11; WebcastGiftMessageGiftDetails giftDetails = 15; string monitorExtra = 22; WebcastGiftMessageGiftExtra giftExtra = 23; } message WebcastGiftMessageGiftDetails { WebcastGiftMessageGiftImage giftImage = 1; string giftName = 16; string describe = 2; int32 giftType = 11; int32 diamondCount = 12; } // Taken from https://github.com/Davincible/gotiktoklive/blob/da4630622bc586629a53faae64e8c53509af29de/proto/tiktok.proto#L57 message WebcastGiftMessageGiftExtra { uint64 timestamp = 6; uint64 receiverUserId = 8; } message WebcastGiftMessageGiftImage { string giftPictureUrl = 1; } // Battle start message WebcastLinkMicBattle { repeated WebcastLinkMicBattleItems battleUsers = 10; } message WebcastLinkMicBattleItems { WebcastLinkMicBattleGroup battleGroup = 2; } message WebcastLinkMicBattleGroup { LinkUser user = 1; } // Battle status message WebcastLinkMicArmies { repeated WebcastLinkMicArmiesItems battleItems = 3; int32 battleStatus = 7; } message WebcastLinkMicArmiesItems { uint64 hostUserId = 1; repeated WebcastLinkMicArmiesGroup battleGroups = 2; } message WebcastLinkMicArmiesGroup { repeated User users = 1; int32 points = 2; } // Follow & share event message WebcastSocialMessage { WebcastMessageEvent event = 1; User user = 2; } // Like event (is only sent from time to time, not with every like) message WebcastLikeMessage { WebcastMessageEvent event = 1; User user = 5; int32 likeCount = 2; int32 totalLikeCount = 3; } // New question event message WebcastQuestionNewMessage { QuestionDetails questionDetails = 2; } message QuestionDetails { string questionText = 2; User user = 5; } message WebcastMessageEvent { uint64 msgId = 2; uint64 createTime = 4; WebcastMessageEventDetails eventDetails = 8; } // Contains UI information message WebcastMessageEventDetails { string displayType = 1; string label = 2; } // Source: Co-opted https://github.com/zerodytrash/TikTok-Livestream-Chat-Connector/issues/19#issuecomment-1074150342 message WebcastLiveIntroMessage { uint64 id = 2; string description = 4; User user = 5; } message SystemMessage { string description = 2; } message WebcastInRoomBannerMessage { string data = 2; } message RankItem { string colour = 1; uint64 id = 4; } message WeeklyRanking { string type = 1; string label = 2; RankItem rank = 3; } message RankContainer { WeeklyRanking rankings = 4; } message WebcastHourlyRankMessage { RankContainer data = 2; } message EmoteDetails { string emoteId = 1; EmoteImage image = 2; } message EmoteImage { string imageUrl = 1; } // Envelope (treasure boxes) // Taken from https://github.com/ThanoFish/TikTok-Live-Connector/blob/9b215b96792adfddfb638344b152fa9efa581b4c/src/proto/tiktokSchema.proto message WebcastEnvelopeMessage { TreasureBoxData treasureBoxData = 2; TreasureBoxUser treasureBoxUser = 1; } message TreasureBoxUser { TreasureBoxUser2 user2 = 8; } message TreasureBoxUser2 { repeated TreasureBoxUser3 user3 = 4; } message TreasureBoxUser3 { TreasureBoxUser4 user4 = 21; } message TreasureBoxUser4 { User user = 1; } message TreasureBoxData { uint32 coins = 5; uint32 canOpen = 6; uint64 timestamp = 7; } // New Subscriber message message WebcastSubNotifyMessage { WebcastMessageEvent event = 1; User user = 2; int32 exhibitionType = 3; int32 subMonth = 4; int32 subscribeType = 5; int32 oldSubscribeStatus = 6; int32 subscribingStatus = 8; } // ================================== // Generic stuff message User { uint64 userId = 1; string nickname = 3; ProfilePicture profilePicture = 9; string uniqueId = 38; string secUid = 46; repeated UserBadgesAttributes badges = 64; uint64 createTime = 16; string bioDescription = 5; FollowInfo followInfo = 22; } message FollowInfo { int32 followingCount = 1; int32 followerCount = 2; int32 followStatus = 3; int32 pushStatus = 4; } message LinkUser { uint64 userId = 1; string nickname = 2; ProfilePicture profilePicture = 3; string uniqueId = 4; } message ProfilePicture { repeated string urls = 1; } message UserBadgesAttributes { int32 badgeSceneType = 3; repeated UserImageBadge imageBadges = 20; repeated UserBadge badges = 21; PrivilegeLogExtra privilegeLogExtra = 12; } message PrivilegeLogExtra { string privilegeId = 2; string level = 5; } message UserBadge { string type = 2; string name = 3; } message UserImageBadge { int32 displayType = 1; UserImageBadgeImage image = 2; } message UserImageBadgeImage { string url = 1; } // Websocket incoming message structure message WebcastWebsocketMessage { uint64 id = 2; string type = 7; bytes binary = 8; } // Websocket acknowledgment message message WebcastWebsocketAck { uint64 id = 2; string type = 7; }`; exports.tiktokSchemaData = tiktokSchemaData;