Skip to content

Instantly share code, notes, and snippets.

@ProgramRipper
Created January 26, 2022 15:59
Show Gist options
  • Select an option

  • Save ProgramRipper/93bab03fe15fc86703cb4ca7cc3cb798 to your computer and use it in GitHub Desktop.

Select an option

Save ProgramRipper/93bab03fe15fc86703cb4ca7cc3cb798 to your computer and use it in GitHub Desktop.
bilibili live data
{
"INTERACT_WORD": {
"cmd": "INTERACT_WORD",
"data": {
"uid": 69871196,
"uname": "榟港",
"uname_color": "",
"identities": [
3
],
"msg_type": 1,
"roomid": 11365,
"timestamp": 1605962570,
"score": 1605952570038317600,
"fans_medal": {
"target_id": 1577804,
"medal_level": 14,
"medal_name": "猛汉",
"medal_color": 12478086,
"medal_color_start": 12478086,
"medal_color_end": 12478086,
"medal_color_border": 12478086,
"is_lighted": 1,
"guard_level": 0,
"special": "",
"icon_id": 0,
"anchor_roomid": 271744
},
"is_spread": 0,
"spread_info": "",
"contribution": {
"grade": 0
},
"spread_desc": ""
}
},
"DANMU_MSG": {
"cmd": "DANMU_MSG",
"info": [
[
0,
1,
25,
5566168,
1605962570163,
-750447822,
0,
"20a2463f",
0,
0,
0,
""
],
"100w冲冲冲",
[
91865208,
"森小祥的向日葵",
0,
0,
0,
10000,
1,
""
],
[
10,
"蕾丝",
"LexBurner",
11365,
9272486,
"",
0,
9272486,
9272486,
9272486,
0,
1,
777536
],
[
13,
0,
6406234,
">50000",
0
],
[
"title-111-1",
"title-111-1"
],
0,
0,
null,
{
"ts": 1605962570,
"ct": "DAA7F79A"
},
0,
0,
null,
null,
0
]
},
"SUPER_CHAT_MESSAGE_JPN": {
"cmd": "SUPER_CHAT_MESSAGE_JPN",
"data": {
"id": "883898",
"uid": "316681456",
"price": 30,
"rate": 1000,
"message": "老蕾生日快乐啊啊!!我回来了快想起我!以后我们也一起继续走长长长长长的路吧!!!",
"message_jpn": "",
"is_ranked": 0,
"background_image": "https://i0.hdslb.com/bfs/live/a712efa5c6ebc67bafbe8352d3e74b820a00c13e.png",
"background_color": "#EDF5FF",
"background_icon": "",
"background_price_color": "#7497CD",
"background_bottom_color": "#2A60B2",
"ts": 1605962570,
"token": "92B5901",
"medal_info": {
"icon_id": 0,
"target_id": 777536,
"special": "",
"anchor_uname": "LexBurner",
"anchor_roomid": 11365,
"medal_level": 6,
"medal_name": "蕾丝",
"medal_color": "#5d7b9e"
},
"user_info": {
"uname": "十九是只羊",
"face": "http://i1.hdslb.com/bfs/face/468d84f4560d620f2e1d5c320589599046fcc89f.jpg",
"face_frame": "",
"guard_level": 0,
"user_level": 3,
"level_color": "#969696",
"is_vip": 0,
"is_svip": 0,
"is_main_vip": 0,
"title": "0",
"manager": 0
},
"time": 60,
"start_time": 1605962570,
"end_time": 1605962630,
"gift": {
"num": 1,
"gift_id": 12000,
"gift_name": "醒目留言"
}
},
"roomid": "11365"
},
"SUPER_CHAT_MESSAGE": {
"cmd": "SUPER_CHAT_MESSAGE",
"data": {
"id": 883898,
"uid": 316681456,
"price": 30,
"rate": 1000,
"message": "老蕾生日快乐啊啊!!我回来了快想起我!以后我们也一起继续走长长长长长的路吧!!!",
"trans_mark": 0,
"is_ranked": 0,
"message_trans": "",
"background_color_start": "#3171D2",
"background_color_end": "#405D85",
"color_point": 0.7,
"message_font_color": "#A3F6FF",
"background_image": "https://i0.hdslb.com/bfs/live/a712efa5c6ebc67bafbe8352d3e74b820a00c13e.png",
"background_color": "#EDF5FF",
"background_icon": "",
"background_price_color": "#7497CD",
"background_bottom_color": "#2A60B2",
"ts": 1605962570,
"is_send_audit": "0",
"token": "92B5901",
"medal_info": {
"icon_id": 0,
"target_id": 777536,
"special": "",
"anchor_uname": "LexBurner",
"anchor_roomid": 11365,
"medal_level": 6,
"medal_name": "蕾丝",
"medal_color": "#5d7b9e",
"medal_color_start": 12632256,
"medal_color_end": 12632256,
"medal_color_border": 12632256,
"is_lighted": 0,
"guard_level": 0
},
"user_info": {
"uname": "十九是只羊",
"face": "http://i1.hdslb.com/bfs/face/468d84f4560d620f2e1d5c320589599046fcc89f.jpg",
"face_frame": "",
"name_color": "#666666",
"guard_level": 0,
"user_level": 3,
"level_color": "#969696",
"is_vip": 0,
"is_svip": 0,
"is_main_vip": 0,
"title": "0",
"manager": 0
},
"time": 60,
"start_time": 1605962570,
"end_time": 1605962630,
"gift": {
"num": 1,
"gift_id": 12000,
"gift_name": "醒目留言"
}
},
"roomid": "11365"
},
"WELCOME_GUARD": {
"cmd": "WELCOME_GUARD",
"data": {
"uid": 384644631,
"username": "这女 孩不爱吃土",
"guard_level": 3
}
},
"ENTRY_EFFECT": {
"cmd": "ENTRY_EFFECT",
"data": {
"id": 4,
"uid": 2218580,
"target_id": 777536,
"mock_effect": 0,
"face": "https://i0.hdslb.com/bfs/face/74175664b730a7ee20e76dcd46332c183e107dcf.jpg",
"privilege_type": 3,
"copy_writing": "欢迎舰长 <%茶杯小兔头%> 进入直播间",
"copy_color": "#ffffff",
"highlight_color": "#E6FF00",
"priority": 70,
"basemap_url": "https://i0.hdslb.com/bfs/live/mlive/f34c7441cdbad86f76edebf74e60b59d2958f6ad.png",
"show_avatar": 1,
"effective_time": 2,
"web_basemap_url": "",
"web_effective_time": 0,
"web_effect_close": 0,
"web_close_time": 0,
"business": 1
}
},
"SEND_GIFT": {
"cmd": "SEND_GIFT",
"data": {
"draw": 0,
"gold": 0,
"silver": 0,
"num": 1,
"total_coin": 0,
"effect": 0,
"broadcast_id": 0,
"crit_prob": 0,
"guard_level": 0,
"rcost": 459954694,
"uid": 104348287,
"timestamp": 1605962570,
"giftId": 30607,
"giftType": 5,
"super": 0,
"super_gift_num": 1,
"super_batch_gift_num": 1,
"remain": 0,
"price": 0,
"beatId": "",
"biz_source": "Live",
"action": "投喂",
"coin_type": "silver",
"uname": "KillerXiaoJiee-",
"face": "http://i2.hdslb.com/bfs/face/644201de379524748dd02a91a961bd7f147c390c.jpg",
"batch_combo_id": "batch:gift:combo_id:104348287:777536:30607:1605962570.0430",
"rnd": "22036AA5-27E8-4755-878B-945878BB9E8E",
"giftName": "小心心",
"combo_send": null,
"batch_combo_send": null,
"tag_image": "",
"top_list": null,
"send_master": null,
"is_first": true,
"demarcation": 1,
"combo_stay_time": 3,
"combo_total_coin": 1,
"tid": "1605962570130700001",
"effect_block": 1,
"is_special_batch": 0,
"combo_resources_id": 1,
"magnification": 1,
"name_color": "",
"medal_info": {
"target_id": 777536,
"special": "",
"icon_id": 0,
"anchor_uname": "",
"anchor_roomid": 0,
"medal_level": 7,
"medal_name": "蕾丝",
"medal_color": 6126494,
"medal_color_start": 6126494,
"medal_color_end": 6126494,
"medal_color_border": 6126494,
"is_lighted": 1,
"guard_level": 0
},
"svga_block": 0
}
},
"COMBO_SEND": {
"cmd": "COMBO_SEND",
"data": {
"uid": 252596742,
"ruid": 777536,
"uname": "笑笑 不说话RK",
"r_uname": "LexBurner",
"combo_num": 1,
"gift_id": 30607,
"gift_num": 0,
"batch_combo_num": 1,
"gift_name": "小心心",
"action": "投喂",
"combo_id": "gift:combo_id:252596742:777536:30607:1605962560.2732",
"batch_combo_id": "batch:gift:combo_id:252596742:777536:30607:1605962560.2751",
"is_show": 1,
"send_master": null,
"name_color": "",
"total_num": 1,
"medal_info": {
"target_id": 777536,
"special": "",
"icon_id": 0,
"anchor_uname": "",
"anchor_roomid": 0,
"medal_level": 11,
"medal_name": "蕾丝",
"medal_color": 9272486,
"medal_color_start": 9272486,
"medal_color_end": 9272486,
"medal_color_border": 9272486,
"is_lighted": 1,
"guard_level": 0
},
"combo_total_coin": 0
}
},
"ONLINE_RANK_COUNT": {
"cmd": "ONLINE_RANK_COUNT",
"data": {
"count": 2583
}
},
"NOTICE_MSG": {
"cmd": "NOTICE_MSG",
"full": {
"head_icon": "http://i0.hdslb.com/bfs/live/b29add66421580c3e680d784a827202e512a40a0.webp",
"tail_icon": "http://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp",
"head_icon_fa": "http://i0.hdslb.com/bfs/live/49869a52d6225a3e70bbf1f4da63f199a95384b2.png",
"tail_icon_fa": "http://i0.hdslb.com/bfs/live/38cb2a9f1209b16c0f15162b0b553e3b28d9f16f.png",
"head_icon_fan": 24,
"tail_icon_fan": 4,
"background": "#66A74EFF",
"color": "#FFFFFFFF",
"highlight": "#FDFF2FFF",
"time": 20
},
"half": {
"head_icon": "http://i0.hdslb.com/bfs/live/ec9b374caec5bd84898f3780a10189be96b86d4e.png",
"tail_icon": "",
"background": "#85B971FF",
"color": "#FFFFFFFF",
"highlight": "#FDFF2FFF",
"time": 15
},
"side": {
"head_icon": "",
"background": "",
"color": "",
"highlight": "",
"border": ""
},
"roomid": 22484349,
"real_roomid": 22484349,
"msg_common": "<%大熊文化の熊老板%>投喂<%酥糖小白ovo%>1个盛 典小电视,点击前往TA的房间吧!",
"msg_self": "<%大熊文化の熊老板%>投喂<%酥糖小白ovo%>1个盛典小电视,快来围观吧!",
"link_url": "https://live.bilibili.com/22484349?from=28003&extra_jump_from=28003&live_lottery_type=1&broadcast_type=1",
"msg_type": 2,
"shield_uid": -1,
"business_id": "25",
"scatter": {
"min": 0,
"max": 0
}
},
"GUARD_BUY": {
"cmd": "GUARD_BUY",
"data": {
"uid": 65545494,
"username": "请毒打我一顿",
"guard_level": 3,
"num": 1,
"price": 198000,
"gift_id": 10003,
"gift_name": "舰长",
"start_time": 1605962598,
"end_time": 1605962598
}
},
"USER_TOAST_MSG": {
"cmd": "USER_TOAST_MSG",
"data": {
"op_type": 1,
"uid": 65545494,
"username": "请毒打我一顿",
"guard_level": 3,
"is_show": 0,
"anchor_show": true,
"user_show": true,
"toast_msg": "<%请毒打我一顿%> 开 通了舰长",
"num": 1,
"price": 198000,
"role_name": "舰长",
"unit": "月",
"start_time": 1605962598,
"end_time": 1605962598,
"target_guard_count": 1215,
"color": "#00D1F1",
"payflow_id": "2011212043016452154947618",
"svga_block": 0
}
},
"ROOM_BANNER": {
"cmd": "ROOM_BANNER",
"type": 1,
"id": 7,
"data": {
"is_block": false,
"sort_list": [
"bls_parent_area_rank_info",
"bls_area_rank_info",
"bls_spc_rank_info",
"bls_rank_info",
"bls_task_info",
"support_task_info",
"pk_info",
"task_info",
"task_pendant_info"
],
"task_pendant_status": 1,
"task_pendant_info": {
"act_id": 33,
"task_status": 1,
"task_info": {
"period": 0,
"level": 6,
"total_level": 9,
"status": 0,
"assiant_info": {
"anchor": {
"face": "http://i1.hdslb.com/bfs/face/2996e22a24eed2d7767e452627a9130207defe6a.jpg",
"uname": "LexBurner"
},
"assist": {
"face": "http://i0.hdslb.com/bfs/face/f13408d646d83be83183e70831a6c71d63af9618.jpg",
"uname": "你看右手边的星河"
}
},
"list": [
{
"task_type": 1,
"current_num": 50000,
"total_num": 50000,
"status": 6
},
{
"task_type": 2,
"current_num": 0,
"total_num": 1,
"status": 3
}
]
},
"ConfigInfo": {
"bg_color": "",
"no_progress_color": "",
"yes_progress_color": "",
"level_font_color": "",
"progress_font_color": "",
"task_font_color": "",
"ConfigNode": "",
"url": "",
"act_id": ""
},
"config_info": {
"bg_color": "#603B8E",
"no_progress_color": "#FFFFFF",
"yes_progress_color": "#FCD089",
"level_font_color": "#DBA95F",
"progress_font_color": "#3C326F",
"task_font_color": "#FEE1AB",
"url": "https://live.bilibili.com/activity/live-activity-battle/index.html?room_id=11365#/task",
"act_id": 25,
"list": [
{
"desc": "小心心任务"
},
{
"desc": "金瓜子任务"
},
{
"desc": "大乱斗任务"
}
]
}
},
"pk_info": {
"id": 29,
"uid": 777536,
"score": 0,
"season_name": "大乱斗S3赛季",
"season_start": "1605067200",
"season_end": "1606665599",
"status": 1,
"has_battled": 0,
"next_rank_need_score": 1,
"rank": 0,
"pk": {
"level1_id": 1,
"level1_name": "青铜萌新",
"level1_img": "https://i0.hdslb.com/bfs/live/da7dbae5a06c99b54a31fb79668b1503142d2e45.png",
"level2_count": 1,
"level2_img": "https://i0.hdslb.com/bfs/live/1f8c2a959f92592407514a1afeb705ddc55429cd.png",
"top_rank": 0
},
"champion_info": []
},
"pk_status": 1,
"support_task_info": {
"status": 1,
"url": "",
"list": [],
"assist": null,
"config_info": null
},
"support_task_status": 0,
"bls_rank_info": null,
"bls_rank_status": 0,
"bls_task_status": 0,
"bls_task_info": {
"cur_round": 1,
"total_score": 0,
"cur": 0,
"max": 0,
"desc": "",
"url": "http://live.bilibili.com/activity/live-activity-battle/index.html?uid=777536&roomId=0#/bls-2020"
},
"bls_area_rank_status": 0,
"bls_area_rank_info": null,
"bls_spc_rank_status": 0,
"bls_spc_rank_info": null,
"bls_parent_area_rank_info": {
"is_static": 0,
"is_settle": 0,
"act_status": 2,
"period": 11,
"match_status": 1,
"team_id": 6,
"buff_enable": 0,
"buff_expire": 0,
"buff_score": 0,
"buff_end_timestamp": 0,
"current_day": "2020-11-21",
"url": "https://live.bilibili.com/activity/live-activity-battle/index.html?room_id=11365&uid=777536#/bls-2020-rank/big-area",
"is_battle_promoted": 0,
"buff_rate": 0,
"is_off_match": 0,
"rank_info": {
"uid": 777536,
"rank": 1,
"score": 1398411,
"face": "http://i1.hdslb.com/bfs/face/2996e22a24eed2d7767e452627a9130207defe6a.jpg",
"rank_type_status": 1,
"rank_type_value": 1390745,
"assist": {
"uid": 409213464,
"uname": "电子面",
"rank": 1,
"score": 29183,
"face": "http://i0.hdslb.com/bfs/face/1583c9083abf898975ceccdb7085d49a21322aea.jpg"
}
},
"top_info": {
"uid": 777536,
"rank": 1,
"score": 1398411,
"face": "http://i1.hdslb.com/bfs/face/2996e22a24eed2d7767e452627a9130207defe6a.jpg",
"uname": "LexBurner"
},
"battle_info": []
},
"bls_parent_area_rank_status": 1
}
},
"ROOM_REAL_TIME_MESSAGE_UPDATE": {
"cmd": "ROOM_REAL_TIME_MESSAGE_UPDATE",
"data": {
"roomid": 11365,
"fans": 9191375,
"red_notice": -1,
"fans_club": 38258
}
},
"ONLINE_RANK_V2": {
"cmd": "ONLINE_RANK_V2",
"data": {
"list": [
{
"uid": 356840820,
"face": "http://i0.hdslb.com/bfs/face/02bab4abb297072e524ca89e69c193c15f5b10d6.jpg",
"score": "32200",
"uname": "顾念の小碗",
"rank": 1,
"guard_level": 2
},
{
"uid": 305839435,
"face": "http://i1.hdslb.com/bfs/face/4a3222744646cf79c0b9b10d04c8379d8c00a2ee.jpg",
"score": "27896",
"uname": "溯羡",
"rank": 2,
"guard_level": 2
},
{
"uid": 3028850,
"face": "http://i0.hdslb.com/bfs/face/7f9cdc7b312c7187aa403d6c9ae23d64b6f65fbd.jpg",
"score": "25727",
"uname": "不过一片星辰",
"rank": 3,
"guard_level": 2
},
{
"uid": 28871255,
"face": "http://i1.hdslb.com/bfs/face/5fbde5703667da1caa6ddfbece77cbcbbceaa55e.jpg",
"score": "25180",
"uname": "渲崽超元气",
"rank": 4,
"guard_level": 2
},
{
"uid": 2409050,
"face": "http://i2.hdslb.com/bfs/face/e3e6d33f4bad050bd2f87902b62d8b5e54f409c1.jpg",
"score": "24980",
"uname": "骨古咕",
"rank": 5,
"guard_level": 2
},
{
"uid": 409213464,
"face": "http://i0.hdslb.com/bfs/face/1583c9083abf898975ceccdb7085d49a21322aea.jpg",
"score": "23083",
"uname": "电子面",
"rank": 6,
"guard_level": 2
},
{
"uid": 294975776,
"face": "http://i0.hdslb.com/bfs/face/d606156220a1b42c771ba348a8e7437615bb6690.jpg",
"score": "22650",
"uname": "是蓝氢不是蓝气",
"rank": 7,
"guard_level": 3
}
],
"rank_type": "gold-rank"
}
},
"WELCOME": {
"cmd": "WELCOME",
"data": {
"uid": 11200742,
"uname": "喜欢秀晶的钟鱼",
"is_admin": false,
"svip": 1,
"vip": 1
}
},
"VOICE_JOIN_ROOM_COUNT_INFO": {
"cmd": "VOICE_JOIN_ROOM_COUNT_INFO",
"data": {
"room_id": 11365,
"root_status": 1,
"room_status": 1,
"apply_count": 1,
"notify_count": 0,
"red_point": 0
},
"roomid": 11365
},
"VOICE_JOIN_LIST": {
"cmd": "VOICE_JOIN_LIST",
"data": {
"room_id": 11365,
"category": 1,
"apply_count": 1,
"red_point": 1,
"refresh": 1
},
"roomid": 11365
},
"ROOM_RANK": {
"cmd": "ROOM_RANK",
"data": {
"roomid": 11365,
"rank_desc": "小时总榜 1",
"color": "#FB7299",
"h5_url": "https://live.bilibili.com/p/html/live-app-rankcurrent/index.html?is_live_half_webview=1&hybrid_half_ui=1,5,85p,70p,FFE293,0,30,100,10;2,2,320,100p,FFE293,0,30,100,0;4,2,320,100p,FFE293,0,30,100,0;6,5,65p,60p,FFE293,0,30,100,10;5,5,55p,60p,FFE293,0,30,100,10;3,5,85p,70p,FFE293,0,30,100,10;7,5,65p,60p,FFE293,0,30,100,10;&anchor_uid=777536&rank_type=master_realtime_hour_room&area_hour=1&area_v2_id=98&area_v2_parent_id=3",
"web_url": "https://live.bilibili.com/blackboard/room-current-rank.html?rank_type=master_realtime_hour_room&area_hour=1&area_v2_id=98&area_v2_parent_id=3",
"timestamp": 1605963060
}
},
"ROOM_BLOCK_MSG": {
"cmd": "ROOM_BLOCK_MSG",
"uid": "272020728",
"uname": "今生的光",
"data": {
"uid": 272020728,
"uname": "今生的光",
"operator": 1
}
},
"ONLINE_RANK_TOP3": {
"cmd": "ONLINE_RANK_TOP3",
"data": {
"list": [
{
"msg": "恭喜 <%电子面%> 成为高能榜",
"rank": 3
}
]
}
},
"HOUR_RANK_AWARDS": {
"cmd": "HOUR_RANK_AWARDS",
"action": "all_top3",
"data": {
"roomid": 11365,
"ruid": 777536,
"uname": "LexBurner",
"face": "http://i1.hdslb.com/bfs/face/2996e22a24eed2d7767e452627a9130207defe6a.jpg",
"rank_desc": "http://i0.hdslb.com/bfs/vc/b48fcb7a0193942844c55e457449de10ed3f045d.png",
"content": "恭喜主播获得\\\\n超人气推荐奖励!",
"life_cycle": 3
}
},
"new_anchor_reward": {
"cmd": "new_anchor_reward",
"reward_id": 1,
"roomid": 11365,
"uid": 777536
},
"ACTIVITY_BANNER_UPDATE_V2": {
"cmd": "ACTIVITY_BANNER_UPDATE_V2",
"data": {
"id": 378,
"title": "第1名",
"cover": "",
"background": "https://i0.hdslb.com/bfs/activity-plat/static/20190904/b5e210ef68e55c042f407870de28894b/14vZu7h9pK.png",
"jump_url": "https://live.bilibili.com/p/html/live-app-rankcurrent/index.html?is_live_half_webview=1&hybrid_half_ui=1,5,85p,70p,FFE293,0,30,100,10;2,2,320,100p,FFE293,0,30,100,0;4,2,320,100p,FFE293,0,30,100,0;6,5,65p,60p,FFE293,0,30,100,10;5,5,55p,60p,FFE293,0,30,100,10;3,5,85p,70p,FFE293,0,30,100,10;7,5,65p,60p,FFE293,0,30,100,10;&anchor_uid=777536&is_new_rank_container=1&area_v2_id=98&area_v2_parent_id=3&rank_type=master_realtime_area_hour&area_hour=1",
"title_color": "#8B5817",
"closeable": 1,
"banner_type": 4,
"weight": 18,
"add_banner": 0
}
},
"PANEL": {
"cmd": "PANEL",
"data": {
"biz_id": 5,
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20200616/b5e210ef68e55c042f407870de28894b/8cvyZuYhx9d.png",
"is_outer": 0,
"jump_url": "https://live.bilibili.com/p/html/live-app-rankcurrent/index.html?is_live_half_webview=1&hybrid_half_ui=1,5,85p,70p,FFE293,0,30,100,10;2,2,320,100p,FFE293,0,30,100,0;4,2,320,100p,FFE293,0,30,100,0;6,5,65p,60p,FFE293,0,30,100,10;5,5,55p,60p,FFE293,0,30,100,10;3,5,85p,70p,FFE293,0,30,100,10;7,5,65p,60p,FFE293,0,30,100,10;&anchor_uid=777536&is_new_rank_container=1&area_v2_id=98&area_v2_parent_id=3&rank_type=master_realtime_area_hour&area_hour=1",
"note": "手游 第1名",
"operate": 1,
"status_type": 1,
"title": "小时榜",
"weight": 8
}
},
"ANCHOR_LOT_CHECKSTATUS": {
"cmd": "ANCHOR_LOT_CHECKSTATUS",
"data": {
"id": 633382,
"status": 4,
"uid": 777536
}
},
"ANCHOR_LOT_START": {
"cmd": "ANCHOR_LOT_START",
"data": {
"asset_icon": "https://i0.hdslb.com/bfs/live/992c2ccf88d3ea99620fb3a75e672e0abe850e9c.png",
"award_image": "",
"award_name": "小电视抱枕",
"award_num": 10,
"cur_gift_num": 0,
"current_time": 1605965685,
"danmu": "",
"gift_id": 0,
"gift_name": "",
"gift_num": 1,
"gift_price": 0,
"goaway_time": 180,
"goods_id": -99998,
"id": 633382,
"is_broadcast": 1,
"join_type": 0,
"lot_status": 0,
"max_time": 600,
"require_text": "关注主播",
"require_type": 1,
"require_value": 0,
"room_id": 11365,
"send_gift_ensure": 0,
"show_panel": 1,
"status": 1,
"time": 599,
"url": "https://live.bilibili.com/p/html/live-lottery/anchor-join.html?is_live_half_webview=1&hybrid_biz=live-lottery-anchor&hybrid_half_ui=1,5,100p,100p,000000,0,30,0,0,1;2,5,100p,100p,000000,0,30,0,0,1;3,5,100p,100p,000000,0,30,0,0,1;4,5,100p,100p,000000,0,30,0,0,1;5,5,100p,100p,000000,0,30,0,0,1;6,5,100p,100p,000000,0,30,0,0,1;7,5,100p,100p,000000,0,30,0,0,1;8,5,100p,100p,000000,0,30,0,0,1",
"web_url": "https://live.bilibili.com/p/html/live-lottery/anchor-join.html"
}
},
"ONLINERANK": {
"cmd": "ONLINERANK",
"data": {
"list": [
{
"uid": 3028850,
"face": "http://i0.hdslb.com/bfs/face/7f9cdc7b312c7187aa403d6c9ae23d64b6f65fbd.jpg",
"guard_level": 2
},
{
"uid": 6587897,
"face": "http://i0.hdslb.com/bfs/face/1921af39e53ba44ba165596f7959e4768f091337.jpg",
"guard_level": 3
},
{
"uid": 409213464,
"face": "http://i0.hdslb.com/bfs/face/1583c9083abf898975ceccdb7085d49a21322aea.jpg",
"guard_level": 2
},
{
"uid": 13196594,
"face": "http://i0.hdslb.com/bfs/face/bcd442832bd9df3de548cae97b7b912bc68189bf.jpg",
"guard_level": 2
},
{
"uid": 5656454,
"face": "http://i1.hdslb.com/bfs/face/171b10cd02df8c0ae6f1c77fbc4fb4d2e65bb86f.jpg",
"guard_level": 2
}
],
"rank_type": "gold-rank"
}
},
"ROOM_CHANGE": {
"cmd": "ROOM_CHANGE",
"data": {
"title": "宠粉主 播",
"area_id": 98,
"parent_area_id": 3,
"area_name": "其他手游",
"parent_area_name": "手游"
}
},
"ANCHOR_LOT_END": {
"cmd": "ANCHOR_LOT_END",
"data": {
"id": 633382
}
},
"ANCHOR_LOT_AWARD": {
"cmd": "ANCHOR_LOT_AWARD",
"data": {
"award_image": "",
"award_name": "小电视抱枕",
"award_num": 1,
"award_users": [
{
"uid": 499155729,
"uname": "一颗宇宙行星",
"face": "http://i1.hdslb.com/bfs/face/96f05d19994c8ed2616ca34fe0cae7e1f9bd8285.jpg",
"level": 0,
"color": 9868950
},
{
"uid": 398202257,
"uname": "安安安安丶酱",
"face": "http://i0.hdslb.com/bfs/face/ba79a5d22389fe441ebc54fd2e1f9b8bac46c2c6.jpg",
"level": 0,
"color": 9868950
},
{
"uid": 253488666,
"uname": "玄火吃布丁",
"face": "http://i2.hdslb.com/bfs/face/3f410b79538f322577b05cea51c9cc4bbb0f7582.jpg",
"level": 6,
"color": 9868950
},
{
"uid": 1510848,
"uname": "雷格納特",
"face": "http://i1.hdslb.com/bfs/face/436f64a0c1177ccb9844d72136d1afc1424874ef.jpg",
"level": 21,
"color": 5805790
},
{
"uid": 242494000,
"uname": "1np6bq",
"face": "http://i0.hdslb.com/bfs/face/member/noface.jpg",
"level": 0,
"color": 9868950
},
{
"uid": 498084851,
"uname": "木老胳膊老腿儿",
"face": "http://i1.hdslb.com/bfs/face/caf412ac70404ab14b3296c957964a66c6e1c463.jpg",
"level": 0,
"color": 9868950
},
{
"uid": 293395415,
"uname": "洛茶134",
"face": "http://i1.hdslb.com/bfs/face/686e39dffd10839c5704303737f2b1cd9f1d0b6a.jpg",
"level": 0,
"color": 9868950
},
{
"uid": 361214743,
"uname": "尘萦鹅",
"face": "http://i2.hdslb.com/bfs/face/78d2701804dcbf4f89787fffdc94f413d54fb4df.jpg",
"level": 0,
"color": 9868950
},
{
"uid": 430076824,
"uname": "Y宇智波一打七Y",
"face": "http://i2.hdslb.com/bfs/face/61d53c120dfd17ad35ab3104916c9f16a9a86223.jpg",
"level": 0,
"color": 9868950
},
{
"uid": 88906297,
"uname": "努力学习小张张",
"face": "http://i2.hdslb.com/bfs/face/9382b5147f09de34f81b8306ab6390bdc73fca82.jpg",
"level": 10,
"color": 9868950
}
],
"id": 633382,
"lot_status": 2,
"url": "https://live.bilibili.com/p/html/live-lottery/anchor-join.html?is_live_half_webview=1&hybrid_biz=live-lottery-anchor&hybrid_half_ui=1,5,100p,100p,000000,0,30,0,0,1;2,5,100p,100p,000000,0,30,0,0,1;3,5,100p,100p,000000,0,30,0,0,1;4,5,100p,100p,000000,0,30,0,0,1;5,5,100p,100p,000000,0,30,0,0,1;6,5,100p,100p,000000,0,30,0,0,1;7,5,100p,100p,000000,0,30,0,0,1;8,5,100p,100p,000000,0,30,0,0,1",
"web_url": "https://live.bilibili.com/p/html/live-lottery/anchor-join.html"
}
},
"ANCHOR_NORMAL_NOTIFY": {
"cmd": "ANCHOR_NORMAL_NOTIFY",
"data": {
"type": 1,
"show_type": 1,
"info": {
"icon": "https://i0.hdslb.com/bfs/live/f3ebd37ee59991bc45538be58e68a6d3aa43ccca.png",
"title": "",
"content": "恭喜,获得推荐位buff加持,上推荐的几率大大提高,持续时间:2小时45分钟。"
}
}
},
"ROOM_SKIN_MSG": {
"cmd": "ROOM_SKIN_MSG",
"skin_id": 221,
"status": 1,
"end_time": 1613751351,
"current_time": 1605975351,
"only_local": false,
"scatter": {
"min": 1,
"max": 200
},
"skin_config": {
"android": {
"1": {
"zip": "https://i0.hdslb.com/bfs/live/3a26e25968e75ec01fa6f26ac47ac00251e5b700.zip",
"md5": "15D4D56998815113EB7F624082370738"
}
},
"ios": {
"1": {
"zip": "https://i0.hdslb.com/bfs/live/c678a14cdf7ffecbc5cf46e0eccfc01d9eb5f27e.zip",
"md5": "A6E7F4DBB8578F4796F887A87464F26E"
}
},
"ipad": {
"1": {
"zip": "https://i0.hdslb.com/bfs/live/a47aac8e0277f8b3f71901758f191a9ba16e0ef7.zip",
"md5": "0A1013B2A54A7BC31BD70B72DE5A469A"
}
},
"web": {
"1": {
"zip": "https://i0.hdslb.com/bfs/live/d0462c33a3d4e4dabbd185a0de1a193126532c04.zip",
"md5": "9D662F8C8A021D88A4CB8C2491DA106F",
"platform": "web",
"version": "1",
"headInfoBgPic": "https://i0.hdslb.com/bfs/live/11cd0f4f36ad9287210ba2eb3b9cc457fc553396.jpg",
"giftControlBgPic": "https://i0.hdslb.com/bfs/live/26e05596dc66026fd371c73036bc28daea5528cf.jpg",
"rankListBgPic": "https://i0.hdslb.com/bfs/live/951c6ef7cbd0d1e4a9320346a3630b7e8c79b4be.jpg",
"mainText": "#FFfcce89",
"normalText": "#FF9b7b4c",
"highlightContent": "#FFd7993c",
"border": "#339b7b4c"
}
}
}
},
"GIFT_BAG_DOT": {
"cmd": "GIFT_BAG_DOT",
"data": {
"gift_id": 30607
}
},
"SPECIAL_GIFT": {
"cmd": "SPECIAL_GIFT",
"data": {
"39": {
"action": "start",
"content": "这个直播间已经被我们承包了!",
"hadJoin": 0,
"id": "2993570685114",
"num": 1,
"storm_gif": "http://static.hdslb.com/live-static/live-room/images/gift-section/mobilegift/2/jiezou.gif?2017011901",
"time": 90
}
}
},
"PREPARING": {
"cmd": "PREPARING",
"roomid": "11365"
}
}
import asyncio
import logging
from enum import IntEnum
from json import dumps, loads
from struct import Struct
from zlib import decompress
from aiohttp import ClientSession
# from .base import HandlerBase
logging.basicConfig(level=logging.INFO)
STRUCT = Struct('>I2H2I')
HOST = 'wss://broadcastlv.chat.bilibili.com:443/sub'
class Operation(IntEnum):
# TODO:研究切换房间和其他操作
HANDSHAKE = 0
HANDSHAKE_REPLY = 1
HEARTBEAT = 2
HEARTBEAT_REPLY = 3
NORMAL = 4
NORMAL_REPLY = 5
DISCONNECT_REPLY = 6
AUTH = 7
AUTH_REPLY = 8
RAW = 9
PROTO_READY = 10
PROTO_FINISH = 11
CHANGE_ROOM = 12
CHANGE_ROOM_REPLY = 13
REGISTER = 14
REGISTER_REPLY = 15
UNREGISTER = 16
UNREGISTER_REPLY = 17
class Socket:
def __init__(self, room_id, uid=0, heartbeat_interval=30, session: ClientSession = None,
loop=None):
if loop:
self.loop = loop
elif session:
self.loop = session.loop # client.loop property is deprecated
else:
self.loop = asyncio.get_event_loop()
self.session = session if session else ClientSession(loop=self.loop)
self.uid = uid
self.heartbeatInterval = heartbeat_interval
self.future = None
self.websocket = None
self.room_id = None
self.token = None
asyncio.gather(self.room_init(room_id), loop=self.loop)
async def room_init(self, room_id):
async with self.session.get('https://api.live.bilibili.com/xlive/web-room/v1/index/getRoomPlayInfo',
params={'room_id': room_id}) as resp:
data = await resp.json()
self.room_id = data['data']['room_id']
async with self.session.get('https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo',
params={'id': self.room_id}) as resp:
data = await resp.json()
self.token = data['data']['token']
def start(self):
self.future = self.loop.create_task(self.msg_loop())
return self.future
async def msg_loop(self):
async with self.session.ws_connect(HOST) as websocket:
self.websocket = websocket
await self.auth()
print(0)
self.loop.create_task(self.heartbeat_loop())
async for msg in websocket:
await self.unpack(msg.data)
async def auth(self):
auth = {
# 'uid': self.uid,
'roomid': self.room_id,
# 'protover': 2,
# 'platform': 'web',
# 'clientver': '2.4.111', # 随时可能更新
# 'type': 2,
# 'key': self.token
}
await self.send(auth, Operation.AUTH)
async def heartbeat_loop(self):
heartbeat = '[object Object]'
while True:
await self.send(heartbeat, Operation.HEARTBEAT)
await asyncio.sleep(30)
async def send(self, body, operation):
if type(body) is dict:
body = dumps(body).encode('utf-8')
elif type(body) is str:
body = body.encode('utf-8')
header = STRUCT.pack(
STRUCT.size + len(body), # 封包总大小(头部大小+正文大小)
STRUCT.size, # 头部大小(一般为0x12)
1, # 协议版本
operation.value, # 操作码(包类型)
1 # 请求次数
)
await self.websocket.send_bytes(header + body)
async def unpack(self, msg):
header = STRUCT.unpack(msg[:16])
if header[3] == 3: # 心跳包回复,返回数字(人气值)
print(int.from_bytes(msg[16:], 'big'))
elif header[3] == 5: # 普通包
if header[2] == 0: # 没有zlib压缩
print(loads(msg[16:header[0]].decode('utf-8')))
elif header[2] == 2: # 有zlib压缩
await self.unpack(decompress(msg[16:])) # 其实zlib压缩是把一堆普通包打包在一起了
elif header[3] == 8: # 认证包
print(msg[16:].decode('utf-8'))
if msg[header[0]:]: # zlib压缩过的大包解析完第一个后,剩下的继续解析
await self.unpack(msg[header[0]:])
async def main():
n = 0
loop = asyncio.get_running_loop()
async with ClientSession() as session:
await Socket(input(), uid=160148624, session=session, loop=loop).start()
if __name__ == '__main__':
try:
asyncio.run(main())
except:
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment