UNPKG

@xyself/blivedm-js

Version:

B站直播弹幕库的Node.js实现 (CommonJS版本)

303 lines (274 loc) 9.41 kB
class HeartbeatMessage { constructor(data) { this.popularity = data.popularity; } } class DanmakuMessage { constructor(raw) { this.raw = raw; const info = raw.info; this.mode = info[0][1]; // 弹幕显示模式 this.fontsize = info[0][2]; // 字体大小 this.color = info[0][3]; // 颜色 this.timestamp = info[0][4]; // 时间戳(毫秒) this.random = info[0][5]; // 随机数 this.uid = info[2][0]; // 用户ID this.uname = info[2][1]; // 用户名 this.msg = info[1]; // 弹幕内容 this.isAdmin = info[2][2]; // 是否房管 this.medal = { // 粉丝勋章 level: info[3][0], // 勋章等级 name: info[3][1], // 勋章名 anchor: info[3][2], // 勋章主播名 roomid: info[3][3], // 勋章房间号 color: info[3][4], // 勋章颜色 specialColor: info[3][7] // 特殊颜色 }; this.ul = info[4][0]; // 用户等级 this.ulRank = info[4][1]; // 用户等级排名 } } class GiftMessage { constructor(raw) { this.raw = raw; const data = raw.data; this.uid = data.uid; // 用户ID this.uname = data.uname; // 用户名 this.giftId = data.giftId; // 礼物ID this.giftName = data.giftName; // 礼物名 this.num = data.num; // 数量 this.price = data.price; // 价格(金瓜子) this.coinType = data.coin_type; // 货币类型('gold' 或 'silver') this.totalCoin = data.total_coin; // 总价格 } } class InteractWordMessage { constructor(raw) { this.raw = raw; const data = raw.data; this.uid = data.uid; // 用户ID this.uname = data.uname; // 用户名 this.msgType = data.msg_type; // 消息类型(1:进入) this.timestamp = data.timestamp; // 时间戳 this.score = data.score; // 积分 this.fans_medal = data.fans_medal ? { // 粉丝勋章(可能为null) anchor_roomid: data.fans_medal.anchor_roomid, // 勋章房间号 medal_level: data.fans_medal.medal_level, // 勋章等级 medal_name: data.fans_medal.medal_name, // 勋章名 target_id: data.fans_medal.target_id // 主播ID } : { anchor_roomid: 0, medal_level: 0, medal_name: '', target_id: 0 }; } } class GuardBuyMessage { constructor(raw) { this.raw = raw; const data = raw.data; this.uid = data.uid; // 用户ID this.username = data.username; // 用户名 this.guardLevel = data.guard_level;// 舰队等级(3:舰长,2:提督,1:总督) this.num = data.num; // 数量 this.price = data.price; // 单价(金瓜子) this.giftId = data.gift_id; // 礼物ID this.giftName = data.gift_name; // 礼物名 } } class SuperChatMessage { constructor(raw) { this.raw = raw; const data = raw.data; this.uid = data.uid; // 用户ID this.uname = data.user_info.uname;// 用户名 this.message = data.message; // 消息内容 this.price = data.price; // 价格(人民币) this.time = data.time; // 持续时间(秒) this.startTime = data.start_time; // 开始时间戳 this.endTime = data.end_time; // 结束时间戳 } } class WatchedChangeMessage { constructor(data) { this.num = data.data.num; this.text_small = data.data.text_small; this.text_large = data.data.text_large; } } class OnlineRankCountMessage { constructor(data) { this.count = data.data.count; this.count_text = data.data.count_text; this.online_count = data.data.online_count; this.online_count_text = data.data.online_count_text; } } class OnlineRankV2Message { constructor(data) { this.online_list = data.data.online_list; this.rank_type = data.data.rank_type; } } class StopLiveRoomListMessage { constructor(data) { this.room_id_list = data.data.room_id_list; } } class LikeInfoV3UpdateMessage { constructor(data) { this.click_count = data.data.click_count; } } class EntryEffectMessage { constructor(message) { this.uid = message.data.uid; this.uname = message.data.copy_writing; this.privilege_type = message.data.privilege_type; this.copy_writing = message.data.copy_writing; } } class LikeClickMessage { constructor(message) { this.uid = message.data.uid; this.uname = message.data.uname; this.like_text = message.data.like_text; this.uinfo = message.data.uinfo; this.fans_medal = message.data.fans_medal ? { anchor_roomid: message.data.fans_medal.anchor_roomid, medal_level: message.data.fans_medal.medal_level, medal_name: message.data.fans_medal.medal_name, target_id: message.data.fans_medal.target_id } : null; } } class UserToastV2Message { constructor(message) { const data = message.data; this.username = data.username; this.guard_level = data.guard_level; this.price = data.price; this.num = data.num; this.unit = data.unit; this.role_name = data.role_name; this.start_time = data.start_time; this.end_time = data.end_time; } } class ComboSendMessage { constructor(message) { const data = message.data; this.uid = data.uid; this.uname = data.uname; this.combo_num = data.combo_num; this.gift_name = data.gift_name; this.gift_id = data.gift_id; this.price = data.price; this.combo_total_coin = data.combo_total_coin; } } class HotRankChangedMessage { constructor(message) { const data = message.data; this.rank = data.rank; this.trend = data.trend; this.countdown = data.countdown; this.timestamp = data.timestamp; this.web_url = data.web_url; this.live_url = data.live_url; this.pc_link_url = data.pc_link_url; } } class LiveMessage { constructor(message) { const data = message.data; this.live_status = data.live_status; this.live_time = data.live_time; this.live_key = data.live_key; } } class NoticeMsgMessage { constructor(message) { const data = message; this.msg_common = data.msg_common; this.msg_self = data.msg_self; this.link_url = data.link_url; this.msg_type = data.msg_type; } } class PKBattleMessage { constructor(message) { const data = message.data; this.battle_type = data.battle_type; this.init_info = data.init_info; this.match_info = data.match_info; this.pk_status = data.pk_status; } } class PKBattleSettleMessage { constructor(message) { const data = message.data; this.pk_id = data.pk_id; this.settle_status = data.settle_status; this.timestamp = data.timestamp; this.winner = data.winner; } } class PreparingMessage { constructor(message) { const data = message.data; this.roomid = data.roomid; } } class RoomRealTimeMessageUpdateMessage { constructor(message) { const data = message.data; this.roomid = data.roomid; this.fans = data.fans; this.red_notice = data.red_notice; this.fans_club = data.fans_club; } } class UserToastMessage { constructor(message) { const data = message.data; this.uid = data.uid; this.username = data.username; this.guard_level = data.guard_level; this.toast_msg = data.toast_msg; } } class WidgetBannerMessage { constructor(message) { const data = message.data; this.timestamp = data.timestamp; this.widget_list = data.widget_list; } } module.exports = { HeartbeatMessage, DanmakuMessage, GiftMessage, InteractWordMessage, GuardBuyMessage, SuperChatMessage, WatchedChangeMessage, OnlineRankCountMessage, OnlineRankV2Message, StopLiveRoomListMessage, LikeInfoV3UpdateMessage, EntryEffectMessage, LikeClickMessage, UserToastV2Message, ComboSendMessage, HotRankChangedMessage, LiveMessage, NoticeMsgMessage, PKBattleMessage, PKBattleSettleMessage, PreparingMessage, RoomRealTimeMessageUpdateMessage, UserToastMessage, WidgetBannerMessage };