多功能的B 站視頻解析工具
視頻鏈接解析,並根據其內容生成基本信息、詞云和內容總結
Linux 用戶在安裝時如果出現
libGL.so.1: cannot open shared object file: No such file or directory
錯誤,說明缺少OpenGL 的運行環境,可以參考dynamicrender 中的README 安裝對應的依賴後重試
nb plugin install nonebot-plugin-bilichat
注: 由於nb-cli 不支持依賴組,因此需要啟用詞云和AI 總結的用戶要通過其他的包管理器安裝額外的依賴
pip install nonebot-plugin-bilichat[all]
pip install nonebot-plugin-bilichat[all]
pdm add nonebot-plugin-bilichat[all]
poetry add nonebot-plugin-bilichat[all]
conda install nonebot-plugin-bilichat[all]
打開nonebot2 項目根目錄下的pyproject.toml
文件, 在[tool.nonebot]
部分追加寫入
plugins = ["nonebot_plugin_bilichat"]
在nonebot2 項目的.env
文件中添加下表中的配置, 配置均為非必須項
一般來說,你只需要關注以下幾個配置項
# 对同一视频的响应冷却时间(防止刷屏)
bilichat_cd_time = 120
# 网络请求重试次数
bilichat_neterror_retry = 3
# 是否使用浏览器截图(需要额外依赖)
bilichat_use_browser = True
# 是否开启词云(需要额外依赖)
bilichat_word_cloud = True
# === AI 总结相关 ===
# 官方总结接口
bilichat_official_summary = True
# openai 接口(需要额外依赖)
bilichat_openai_token = sk-xxxxxxx
# 网络代理
bilichat_openai_proxy = "http://127.0.0.1:7890/"
配置項 | 類型 | 預設值 | 說明 |
---|---|---|---|
bilichat_block | bool | False | 是否攔截事件(防止其他插件二次解析) |
bilichat_enable_self | bool | False | 是否允許響應自身的消息 |
bilichat_only_self | bool | False | 是否僅響應自身的消息,開啟後會覆蓋全部其他規則(人機合一特供) |
bilichat_only_to_me | bool | False | 非自身消息是否需要@机器人 或使用機器人的暱稱才響應 |
bilichat_whitelist | list[str] | [] | 響應的會話名單, 會覆蓋黑名單 |
bilichat_blacklist | list[str] | [] | 不響應的會話名單 |
bilichat_dynamic_font | str | None | 視頻信息及詞云圖片使用的字體 |
bilichat_cd_time | int | 120 | 對同一視頻的響應冷卻時間(防止刷屏) |
bilichat_neterror_retry | int | 3 | 對部分網絡請求錯誤的嘗試次數 |
bilichat_use_bcut_asr | bool | True | 是否在沒有字幕時調用必剪接口生成字幕 |
bilichat_show_error_msg | bool | True | 是否在解析失敗時發送錯誤信息 |
bilichat_use_browser | bool | Auto | 是否使用瀏覽器, Auto 會根據是否含有相應的依賴進行選擇 |
bilichat_browser_shot_quality | int | 75 | 瀏覽器截圖質量,取值範圍10-100,越高則截圖的體積越大 |
bilichat_cache_serive | str | Auto | 使用的緩存類型,可用類型包含json 和mongodb |
bilichat_text_fonts | str | default | 可供自定義的字體,僅作用於dynamicrender 繪圖 |
bilichat_emoji_fonts | str | default | 可供自定義的字體,僅作用於dynamicrender 繪圖 |
bilichat_webui_path | str | bilichat | WebUI 的路徑,設置為空則不開啟WebUI |
bilichat_subs_limit | int | 5 | 默認全局訂閱數量限制 |
bilichat_dynamic_interval | int | 90 | 默認動態輪詢間隔,單位為秒 |
bilichat_live_interval | int | 30 | 默認直播輪詢間隔,單位為秒 |
bilichat_push_delay | int | 3 | 默認每條推送的延遲,單位為秒 |
bilichat_dynamic_method | str | "rest" | 默認動態推送方式,可選項為"grpc"、"rest" 和"rss" |
bilichat_rss_base | str | None | 默認兼容RSSHub 的動態RSS 訂閱地址,例如https://rsshub.app/ |
bilichat_rss_key | str | None | 默認兼容RSSHub 的訪問控制key,詳情見註釋7 |
注:
bilichat_enable_self
實際能否生效也與之相關bilichat_whitelist
存在時, bilichat_blacklist
將會被禁用bilichat_dynamic_font
可填寫自定義的字體url,但並不推薦修改bcut_asr
接口來生成AI 字幕時,根據視頻時長和BCut-ASR conversion failed due to network error
failed due to network error 。可以通過調高bilichat_neterror_retry
次數或幾分鐘後重試來嘗試重新生成字幕bilichat_cache_serive
為mongodb
時,需要安裝並配置nonebot-plugin-mongodb 才可正常使用bilichat_rss_base
所需地址需要兼容RSSHub 中的文件結構及路由即可使用bilichat_rss_key
為可選項,用於RSSHub 的訪問控制,若無需控制則留空,詳情可查看RSSHub 的文檔bilichat_subs_limit bilichat_dynamic_interval bilichat_live_interval bilichat_push_delay bilichat_dynamic_method bilichat_rss_base bilichat_rss_key
為全局默認值,如果在配置文件中有所配置,則會覆蓋這裡的默認值配置項 | 類型 | 預設值 | 說明 |
---|---|---|---|
bilichat_command_to_me | bool | True | 命令是否需要@機器人 |
bilichat_cmd_start | str | "bilichat" | 命令的起始詞,可設置為空 |
bilichat_cmd_add_sub | list[str] | ["訂閱", "關注"] | "sub"命令的別名 |
bilichat_cmd_remove_sub | list[str] | ["退訂", "取關"] | "unsub"命令的別名 |
bilichat_cmd_check_sub | list[str] | ["查看", "查看訂閱"] | "check"命令的別名 |
bilichat_cmd_reset_sub | list[str] | ["重置", "重置配置"] | "reset"命令的別名 |
bilichat_cmd_at_all | list[str] | ["全體成員", "at 全體"] | "atall"命令的別名 |
bilichat_cmd_dynamic | list[str] | ["動態通知", "動態訂閱"] | "dynamic"命令的別名 |
bilichat_cmd_live | list[str] | ["直播通知", "直播訂閱"] | "live"命令的別名 |
bilichat_cmd_checkdynamic | list[str] | ["查看動態"] | "checkdynamic" 命令的別名 |
bilichat_cmd_fetch | list[str] | ["獲取內容", "解析內容"] | "fetch" 命令的別名 |
bilichat_cmd_check_login | list[str] | ["查看登錄賬號"] | "checklogin" 命令的別名 |
bilichat_cmd_login_qrcode | list[str] | ["掃碼登錄"] | "qrlogin" 命令的別名 |
bilichat_cmd_logout | list[str] | ["登出賬號"] | "logout" 命令的別名 |
bilichat_cmd_modify_cfg | list[str] | ["修改配置"] | "cfg" 命令的別名 |
配置項 | 類型 | 預設值 | 說明 |
---|---|---|---|
bilichat_basic_info | bool | True | 是否開啟視頻基本信息 |
bilichat_basic_info_style | str | Auto | 視頻詳情的圖片樣式,可用樣式見下方備註 |
bilichat_basic_info_url | bool | True | 開啟視頻進本信息的情況下,是否一同回復一個鏈接 |
bilichat_reply_to_basic_info | bool | True | 後續消息是否回復基礎信息(關閉則回復發送者的信息) |
bilichat_dynamic | bool | True | 是否開啟動態解析 |
bilichat_dynamic_style | str | Auto | 動態詳情的圖片樣式,可用樣式見下方備註 |
bilichat_bilibili_cookie | str | None | bilibili 的cookie 文件路徑, api 則自動創建空文件 |
bilichat_basic_info_style 除默認的bbot_default 使用PIL 繪圖(未開啟瀏覽器時默認選擇),其他均依賴於瀏覽器進行渲染(需要設置bilichat_use_browser 為True 或Auto),其可用的樣式如下所示
bilichat_dynamic_style 除默認的dynamicrender 使用Skia 繪圖(未開啟瀏覽器時默認選擇),其他均依賴於瀏覽器進行渲染(需要設置bilichat_use_browser 為True 或Auto),其可用的樣式如下所示
開啟此功能需要安裝對應的依賴nonebot-plugin-bilichat[wordcloud]
配置項 | 類型 | 預設值 | 說明 |
---|---|---|---|
bilichat_word_cloud | bool | False | 是否開啟詞云功能 |
bilichat_word_cloud_size | list[int] | [1000, 800] | 詞云圖片尺寸 |
開啟此功能需要安裝對應的依賴nonebot-plugin-bilichat[summary]
配置項 | 類型 | 預設值 | 說明 |
---|---|---|---|
bilichat_summary_ignore_null | bool | True | 是否忽略無意義的總結內容 |
bilichat_official_summary | bool | False | 是否開啟官方總結,此總結獨立於下方AI 總結,可與下方AI 總結同時生效 |
bilichat_openai_token | str | None | openai 的apikey, 若留空則禁用openai 總結 |
bilichat_openai_proxy | str | None | 訪問openai 或newbing 使用的代理地址 |
bilichat_openai_model | str | gpt-3.5-turbo-0301 | 使用的語言模型名稱 |
bilichat_openai_token_limit | int | 3500 | 請求的文本量上限, 計算方式可參考tiktoken |
bilichat_openai_api_base | str | see description | 默認為https://api.openai.com ,可自行替換 |
注:
bilichat_openai_proxy
或全局透明代理直接發送視頻(專欄)鏈接即可
在發送視頻時,可以額外添加以下類似shell 指令的參數,進而對解析流程進行調整。例如
BV12v4y1E7NT --refresh
BV12v4y1E7NT -r # 可以使用简写
BV12v4y1E7NT -r --no-cache # 可以多个参数混用
BV12v4y1E7NT -rn # 可以将简写合并,效果同上一条
-r BV12v4y1E7NT -n # 虽然不建议,但确实可以把参数放前面
指令 | 簡寫 | 說明 |
---|---|---|
--no-cache | -n | 本次總結禁用緩存(不會影響已存在的緩存文件) |
--refresh | -r | 刷新此視頻的詞云和總結緩存(會覆蓋已存在的緩存文件) |
--force | -f | 忽略cd 時間,強制解析視頻 |
指令部分由指令前缀
和指令名
組成,其中指令前缀
包含COMMAND_START
bilichat_cmd_start
COMMAND_SEP
三部分,默認的指令前缀
為/bilichat.
,即完整的指令為/bilichat.xxx
指令前缀
部分也是可以修改的,例如.env 中填入如下設置即可實現無指令前缀
COMMAND_SEP = [""]
COMMAND_START = [""]
bilichat_cmd_start = " "
指令名
如下表所示,其中除登錄相關的指令均可自定義,可參考上文的指令及訂閱配置項
指令 | 權限 | 範圍 | 參數 | 說明 |
---|---|---|---|---|
sub | 主人 | 群聊 | UP 主的暱稱或UID | 添加訂閱 |
unsub | 主人 | 群聊 | UP 主的暱稱或UID,或all | 移除訂閱,all 時為全移除 |
check | 無限制 | 群聊 | UP 主的暱稱或UID,或留空 | 查看本群訂閱列表或指定UP 主的配置 |
reset | 主人 | 群聊 | UP 主的暱稱或UID,或all | 重置指定UP 主的推送配置,all 時為全重置 |
atall | 主人 | 群聊 | UP 主的暱稱或UID全局 动态 直播 | 設置是否at 全體成員 |
dynamic | 主人 | 群聊 | UP 主的暱稱或UID | 是否開啟該UP 的動態通知 |
live | 主人 | 群聊 | UP 主的暱稱或UID | 是否開啟該UP 的直播通知 |
checkdynamic | 無限制 | 無限制 | UP 主的暱稱或UID | 查看指定UP 主的最新一條動態 |
fetch | 無限制 | 無限制 | 動態ID,或回复包含此內容的消息 | 解析動態包含的圖片 |
checklogin | 主人 | 無限制 | 無 | 查看當前已登錄的全部賬號 |
qrlogin | 主人 | 無限制 | 無 | 使用二維碼登錄B 站,防止風控 |
logout | 主人 | 無限制 | 賬號的UID | 登出指定的賬號 |
cfg | 主人 | 無限制 | 無 | 查看或修改配置信息 |
非主人的用戶無法直接添加或移除訂閱,但可以相同的指令提交操作申請,然後由主人添加,例如
USER: /bilichat.sub 123456
BOT: 已记录此次添加申请,请联系管理员处理
SUPERUSER: /bilichat.handle
BOT: ...
其中handle
為主人的處理指令,可以在任意可交互的位置觸發(包括群聊和私聊),該指令為交互式指令,根據其提示進行操作即可
在此感謝以下開發者(項目)對本項目做出的貢獻: