dsh-bili-video:把 B 站視頻搬成 QQ 羣可直接播放的視頻消息

前言

在 DSH 裏做內容搬運時,常見情況是:Agent 拿到一個 B 站鏈接,需要把視頻送到 QQ 羣裏。直接發鏈接,羣裏只能跳轉外鏈;想發視頻消息,就得自己寫解析、下載、轉碼、上傳的整條鏈路,還要處理官方 QQ Bot 的分片上傳協議和羣號映射。下面介紹的插件把這一串步驟封裝成一個 bili_relay 工具,同時也支持監聽羣消息自動搬運。

這個插件是 dsh-bili-video(npm 包名同名),獨立發佈在 lucifermbbgh/dsh-bilivideo-qqbot-forward-plugin,維護者爲 lucifermbbgh,分類屬於工作流,作者是 dsh-bili-video contributors。插件運行數據由 root 目錄自行管理,不隨包發佈。

核心功能

先說明它能做什麼。插件的能力邊界在 README 裏已經明確列出:

  • 鏈接搬運:bili_relay 工具接收 B 站鏈接、BV 號或 b23.tv 短鏈,以及真實羣號;
  • 卡片自動搬運:可選連接 SnowLuma OneBot v11 WebSocket,監聽羣消息中的 B 站卡片和鏈接,無需 @;
  • 清晰度自適應:有 B 站 Cookie 時優先高畫質,未登錄時使用匿名可用的流;
  • 大文件分片:不超過 4.5MB 直接內聯上傳,更大的文件走官方分片上傳協議,不做羣文件;
  • 去重與限流:同一 BV 號 6 小時內只搬一次,每羣 10 分鐘最多 3 條;
  • 失敗可追蹤:失敗重試一次,並寫入 data/video-failures.ndjson。

限制條件

這塊直接影響可用性,先看清再裝:

  • 僅支持 B 站普通視頻,不支持分 P、直播、番劇、付費內容;
  • 視頻時長上限 15 分鐘,內聯文件上限 30MB;
  • 需要官方 QQ Bot 憑據,且目標羣已有 group_openid 映射;
  • 需要本機可執行 ffmpeg(或通過配置指定路徑)。

安裝與啓用

安裝命令來自 README,沒有走 github:owner/repo 形式:

dsh plugin --profile desktop add dsh-bili-video

安裝後在 profile 的 cordis.patch.yml 中覆蓋配置。最小配置示例:

- insert:
    - id: bili-video
      name: dsh-bili-video
      config:
        root: /path/to/dsh-bili-video-data
        groups: "123456789"
        maxBytes: 31457280
        maxDurationSec: 900
        oneBotWs: ws://127.0.0.1:3001/?access_token=...

這一步的作用是把插件掛進當前 profile,並把數據目錄和允許搬運的羣號定下來。

配置項

字段 說明
root 數據根目錄;默認當前工作目錄,也可用 BILI_VIDEO_ROOT 環境變量
groups 允許搬運的真實羣號,逗號分隔;留空表示不限制,生產環境不建議留空
maxBytes 內聯上限,默認 31457280(30MB)
maxDurationSec 時長上限,默認 900(15 分鐘)
ffmpeg ffmpeg 可執行文件;默認 ffmpeg,也可用 FFMPEG_PATH
oneBotWs SnowLuma OneBot v11 WS 地址;留空則只保留工具調用
cookieFile B 站 Cookie 文件;默認 <root>/secrets/bilibili-cookie.txt
appId / appSecret 官方 QQ Bot 憑據;也可用 QQBOT_APPID / QQBOT_SECRET

羣號到官方 group_openid 的映射默認讀取 <root>/data/official-bot/group-map.json。

典型用法

Agent 側,直接調用 bili_relay 工具,傳入視頻地址和羣號:

{
  "url": "https://www.bilibili.com/video/BV1xx411c7mD",
  "group_id": "123456789"
}

OneBot 側,配置 oneBotWs 後,羣消息裏的 B 站鏈接或卡片會被自動識別,無需用戶 @。同一 BV 號在 6 小時內不會重複發送。

適用場景與注意

適合已經在用官方 QQ Bot、且羣裏確實有人發 B 站鏈接的智能體工作流。需要強調兩點:一是插件以當前 dsh 進程的權限運行,能讀到的數據目錄、能訪問的網絡和憑據都取決於運行賬號,安裝前應先檢查源碼與許可證;二是官方 QQ Bot 對羣視頻消息有發送頻率和文件大小約束,插件的 groups、限流和去重配置就是爲此設計的,生產環境不建議把 groups 留空。

許可證爲 MIT,倉庫版本號 0.1.1,當前星標 0。代碼結構比較簡單:src/core.js 負責解析、下載、合併、分片上傳和發送,src/index.js 是 Cordis 插件入口,註冊 bili_relay 與 OneBot WS 監聽。開發自檢命令爲:

node --check src/core.js
node --check src/index.js

經過上面的步驟,可以直接把 B 站鏈接在 QQ 羣裏變成可播放的視頻消息,而不需要自己拼上傳協議。

目錄頁:https://www.skillhub.cn/plugins/lucifermbbgh/dsh-bilivideo-qqbot-forward-plugin
源碼:https://github.com/lucifermbbgh/dsh-bilivideo-qqbot-forward-plugin

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜