该提交实现了完整的B站渠道插件,包含以下核心功能: 1. 支持B站直播弹幕监听与处理,包含弹幕、SC、礼物等多种直播间事件 2. 支持B站私信的轮询接收与发送 3. 内置WBI签名算法,适配B站API鉴权要求 4. 提供账号配对、黑白名单等弹幕私信权限控制 5. 集成速率限制与防风险机制,降低账号封禁风险 6. 完善的配置管理与状态监控能力
27 lines
849 B
Python
27 lines
849 B
Python
from __future__ import annotations
|
|
|
|
import hashlib
|
|
import time
|
|
import urllib.parse
|
|
|
|
_MIXIN_KEY_ENC_TAB = [
|
|
46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35,
|
|
27, 43, 5, 49, 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13,
|
|
37, 48, 7, 16, 24, 55, 40, 61, 26, 17, 0, 1, 60, 51, 30, 4,
|
|
22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11, 36, 20, 34, 44, 52,
|
|
]
|
|
|
|
|
|
def get_mixin_key(raw_key: str) -> str:
|
|
return "".join(raw_key[i] for i in _MIXIN_KEY_ENC_TAB if i < len(raw_key))
|
|
|
|
|
|
def sign_params(params: dict, img_key: str, sub_key: str) -> dict:
|
|
mixin_key = get_mixin_key(img_key + sub_key)[:32]
|
|
params["wts"] = int(time.time())
|
|
params = dict(sorted(params.items()))
|
|
query = urllib.parse.urlencode(params)
|
|
w_rid = hashlib.md5((query + mixin_key).encode()).hexdigest()
|
|
params["w_rid"] = w_rid
|
|
return params
|