@floating-live/bilibili 0.16.7 → 0.16.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +3 -3
  2. package/parser.js +112 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floating-live/bilibili",
3
- "version": "0.16.7",
3
+ "version": "0.16.9",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@floating-live/cookies": "^0.1.0",
21
- "bilibili-live-danmaku": "^0.7.6",
21
+ "bilibili-live-danmaku": "^0.7.12",
22
22
  "md5": "^2.3.0"
23
23
  },
24
24
  "devDependencies": {
@@ -33,5 +33,5 @@
33
33
  "peerDependencies": {
34
34
  "floating-live": "^0.16.0"
35
35
  },
36
- "gitHead": "07f6d52a78538dc22f4f597471346bafeb2929dd"
36
+ "gitHead": "3add8f90bbee6116bd36767f5f5cbe5011ccf259"
37
37
  }
package/parser.js CHANGED
@@ -78,6 +78,7 @@ const parsingFunction = {
78
78
  danmaku.id ?? (danmaku.id = generateId(danmaku));
79
79
  return danmaku;
80
80
  },
81
+ /** @deprecated */
81
82
  INTERACT_WORD: (msg, room) => {
82
83
  const { data, msg_id, send_time } = msg;
83
84
  let type;
@@ -119,6 +120,75 @@ const parsingFunction = {
119
120
  interact.id ?? (interact.id = generateId(interact));
120
121
  return interact;
121
122
  },
123
+ INTERACT_WORD_V2: (msg, room) => {
124
+ const { decoded, msg_id, send_time } = msg;
125
+ const data = decoded;
126
+ let type;
127
+ switch (Number(data.msgType)) {
128
+ case 1:
129
+ type = "entry"; // 进入直播间
130
+ break;
131
+ case 2:
132
+ type = "follow"; // 关注直播间
133
+ break;
134
+ case 3:
135
+ type = "share"; // 分享直播间
136
+ break;
137
+ default:
138
+ return;
139
+ }
140
+ let interact = {
141
+ platform: "bilibili",
142
+ roomId: room?.id || 0,
143
+ userId: Number(data.uid),
144
+ type: type,
145
+ id: msg_id,
146
+ timestamp: send_time || Math.floor(Number(data.triggerTime || 0) / 1000000),
147
+ info: {
148
+ user: {
149
+ name: data.uname,
150
+ id: Number(data.uid),
151
+ medal: data.fansMedal?.medalLevel
152
+ ? {
153
+ level: Number(data.fansMedal.medalLevel),
154
+ name: data.fansMedal.medalName,
155
+ id: Number(data.fansMedal.targetId),
156
+ membership: Number(data.fansMedal.guardLevel),
157
+ }
158
+ : null,
159
+ },
160
+ },
161
+ };
162
+ interact.id ?? (interact.id = generateId(interact));
163
+ return interact;
164
+ },
165
+ LIKE_INFO_V3_CLICK: (msg, room) => {
166
+ const { data, msg_id, send_time } = msg;
167
+ let like = {
168
+ platform: "bilibili",
169
+ roomId: room?.id || 0,
170
+ userId: data.uid,
171
+ type: "like",
172
+ id: msg_id,
173
+ timestamp: send_time || getDateTimestamp(),
174
+ info: {
175
+ user: {
176
+ name: data.uname,
177
+ id: data.uid,
178
+ medal: data.fans_medal?.medal_level
179
+ ? {
180
+ level: data.fans_medal.medal_level,
181
+ name: data.fans_medal.medal_name,
182
+ id: data.fans_medal.target_id,
183
+ membership: data.fans_medal.guard_level,
184
+ }
185
+ : null,
186
+ },
187
+ },
188
+ };
189
+ like.id ?? (like.id = generateId(like));
190
+ return like;
191
+ },
122
192
  SEND_GIFT: (msg, room) => {
123
193
  const { data, msg_id, send_time } = msg;
124
194
  let gift = {
@@ -160,7 +230,7 @@ const parsingFunction = {
160
230
  gift.id ?? (gift.id = generateId(gift));
161
231
  return gift;
162
232
  },
163
- GUARD_BUY: (msg, room) => {
233
+ USER_TOAST_MSG: (msg, room) => {
164
234
  const { data, msg_id, send_time } = msg;
165
235
  let gift = {
166
236
  platform: "bilibili",
@@ -175,7 +245,7 @@ const parsingFunction = {
175
245
  id: data.uid,
176
246
  },
177
247
  gift: {
178
- name: data.gift_name,
248
+ name: data.role_name,
179
249
  id: data.gift_id,
180
250
  num: data.num,
181
251
  value: data.price / 100,
@@ -183,15 +253,52 @@ const parsingFunction = {
183
253
  valueName: "电池",
184
254
  price: data.price / 1000,
185
255
  currency: "CNY",
256
+ unit: data.unit == "年" ? "year" : data.unit == "天" ? "day" : "month",
186
257
  },
187
- name: data.gift_name,
258
+ name: data.role_name,
188
259
  level: data.guard_level,
189
- duration: data.num * 30,
260
+ duration: data.num *
261
+ (data.unit == "年" ? 365 : data.unit == "天" ? 1 : 30) *
262
+ 24 *
263
+ 3600000,
190
264
  },
191
265
  };
192
266
  gift.id ?? (gift.id = generateId(gift));
193
267
  return gift;
194
268
  },
269
+ // GUARD_BUY: (msg: MessageData.GUARD_BUY, room) => {
270
+ // const { data, msg_id, send_time } = msg;
271
+ // let gift: LiveMessage.Membership = {
272
+ // platform: "bilibili",
273
+ // roomId: room?.id || 0,
274
+ // userId: data.uid,
275
+ // type: "membership",
276
+ // id: msg_id!,
277
+ // timestamp: send_time || data.start_time * 1000,
278
+ // info: {
279
+ // user: {
280
+ // name: data.username,
281
+ // id: data.uid,
282
+ // },
283
+ // gift: {
284
+ // name: data.gift_name,
285
+ // id: data.gift_id,
286
+ // num: data.num,
287
+ // value: data.price / 100,
288
+ // valueType: "gold",
289
+ // valueName: "电池",
290
+ // price: data.price / 1000,
291
+ // currency: "CNY",
292
+ // unit: "month",
293
+ // },
294
+ // name: data.gift_name,
295
+ // level: data.guard_level,
296
+ // duration: data.num * 30 * 24 * 3600_000,
297
+ // },
298
+ // };
299
+ // gift.id ??= generateId(gift);
300
+ // return gift;
301
+ // },
195
302
  SUPER_CHAT_MESSAGE: (msg, room) => {
196
303
  const { data, msg_id, send_time } = msg;
197
304
  let sc = {
@@ -402,6 +509,7 @@ const parsingFunction = {
402
509
  };
403
510
  /** 转换bilibili直播弹幕为floating通用格式 */
404
511
  export function parseMessage(data, room) {
512
+ console.log(data.cmd);
405
513
  return parsingFunction[data.cmd]?.(data, room);
406
514
  }
407
515
  /** 转换bilibili直播间信息为floating通用格式 */