dsh-ximalaya
DeepSeek Harness 喜马拉雅播客插件:搜索/播放/收藏 + ximalaya_play 模型工具
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 25, 2026
- Updated
- Aug 26, 2026
Introduction
dsh-ximalaya
DeepSeek Harness 喜马拉雅播客插件。
在 DSH 的 Web 界面里直接收听喜马拉雅:搜索专辑/播客/有声书、浏览曲目列表、一键播放,聊天输入区常驻播放条(播放/暂停/上一集/下一集/进度拖动/音量/倍速)。还注册了 ximalaya_play 模型工具——直接在对话框里说「播放三体」「来点郭德纲相声」,节目就响起来。
特性
- 搜索:按关键词搜喜马拉雅专辑(封面/主播/分类/集数/完结状态/播放量卡片式展示),带搜索历史
- 专辑浏览:曲目列表分页加载(每页 30 集,可一直「加载更多」),点击即播
- 收藏的声音:「我的」页展示账号收藏(♥ 喜欢)的声音列表,分页加载、点击即播,含所属专辑/主播/时长/收藏时间
- 我的订阅:「我的」页展示账号订阅的专辑(含「最新:x天前 · 最新一集」更新提示),点击进专辑即听
- 关注的主播:「我的」页展示已关注主播(头像/简介/粉丝数/专辑数),点击主播浏览其公开专辑并进入收听
- 播放条:播放/暂停、上一集/下一集(自动连播专辑列表,翻页自动续)、可拖进度条、音量、倍速(0.75x–2x)、时间显示
- 音频流代理:播放地址由 Host 端解析并流式转发(支持 Range 拖动/续传),浏览器无 CORS 顾虑,登录态不出 Host
- 扫码登录(可选):喜马拉雅 App 扫码后可播 VIP/已购内容(免费内容无需登录)
- 收藏:专辑一键收藏(♥),收藏列表跨刷新/重启保留
- 断点续播:当前专辑/曲目/进度持久化在 Host 端,刷新页面自动恢复(点 ▶ 续听)
ximalaya_play模型工具:agent 可按关键词搜索播放(query),或直接指定albumId/trackId;支持action暂停/继续/停止/下一集/上一集- 免登录可播全部免费专辑;付费/VIP 专辑在登录且账号有权限时可播
安装
需要已安装 dsh CLI(Node ≥ 20)。
# 把 <profile> 换成实际 profile 名,如 web
dsh plugin --profile <profile> add dsh-ximalaya
或从本地目录 / tarball 安装:
# 本地目录
dsh plugin --profile <profile> add /path/to/dsh-ximalaya
# 或先打包再安装
npm pack
dsh plugin --profile <profile> add ./dsh-ximalaya-0.3.0.tgz
安装后重启 dsh web 并刷新页面:
- 聊天输入区上方出现「📻 喜马拉雅」播放条
- 点右侧 🔎 打开面板,搜索并点专辑即可收听
- 直接对 agent 说「播放三体」也能播
使用
- 搜索播放:面板「搜索」页输入关键词(如「三体」「郭德纲」「晓说」)→ 点专辑卡片 → 点任意曲目(或专辑头部的「▶ 播放」)
- 连续播放:一集播完自动播下一集;⏮/⏭ 在专辑内切换;翻到已加载列表末尾会自动拉取下一页续播
- 让 agent 播放:对话框里说「用喜马拉雅播放 XXX」;agent 会调用
ximalaya_play工具,播放条 2 秒内响应 - VIP/付费内容:面板「我的」页 → 喜马拉雅 App 扫码登录 → 已购/VIP 内容自动解锁(播放质量也会升到 128k M4A)
- 收藏的声音 / 我的订阅 / 关注的主播:登录后面板「我的」页分四段——「♥ 声音」(收藏的声音,点击任意一条即播)、「📻 订阅」(订阅的专辑,卡片带最新更新提示,点进专辑即听)、「👤 主播」(关注的主播,点主播看其公开专辑)、「★ 专辑」(本插件本地收藏)
- 倍速/音量:播放条上点
1.0x循环切换倍速;🔊 弹出音量条
说明:「声音 / 订阅 / 主播」三段读取的是喜马拉雅账号云端数据(App 内点 ♥ 喜欢、订阅专辑、+ 关注的都会出现),需先扫码登录;「★ 专辑」是插件本地的收藏(仅存本机)。
配置
插件为「Host 端 + Web 端」双面结构:
- Host 端(
lib/index.js):喜马拉雅接口代理(搜索/专辑/曲目/扫码登录/收藏声音/关注主播)、播放地址解析与音频流转发、ximalaya_play工具、状态持久化 - Web 端(
lib/client.js):浏览器里的播放条 + 面板(搜索/专辑/主播/我的)
由 cordis.patch.yml 插入 ximalaya-podcast 行自动组对:
- insert:
- id: ximalaya-podcast
name: 'dsh-ximalaya'
状态持久化:登录态、收藏、搜索历史、音量/倍速、面板位置、上次播放(专辑/曲目/进度)全部保存在 Host 端 ~/.dsh/ximalaya-state.json,重启/刷新不丢(dsh-desktop 随机端口下同样有效)。
开发
npm install
npm test # vitest:xmly 纯函数单测 + host 路由集成测试 + Web 渲染冒烟(42 用例)
修改 lib/ 后本地调试:
dsh plugin --profile <profile> add ./ # 或直接改 profile 里的 link 目标
结构:
lib/
├── xmly.js # 喜马拉雅 API 库:搜索/专辑/曲目/播放地址(xm-sign 签名 + 解密)/扫码登录/收藏声音/订阅专辑/关注主播
├── index.js # Host 半边:/dsh-ximalaya/* 路由、音频流代理、ximalaya_play 工具
└── client.js # 浏览器半边:播放条 + 面板(slots 注入)
使用声明(重要)
本插件通过非官方接口访问喜马拉雅内容,所播放内容的版权归喜马拉雅及权利方所有。仅供个人学习、技术研究、日常试听使用,严禁用于任何商业用途、公开传播、二次分发或盈利行为。扫码登录产生的账号风控、封禁等风险由使用者自行承担。如您不同意以上条款,请勿使用本插件。
常见问题
播放条显示「浏览器拦截了自动播放」? 浏览器安全策略禁止未交互的音频播放。首次自动播放被拦截是正常的——在播放条上点一次 ▶ 即可解锁,之后恢复自动播放。
某些曲目提示「需要登录或已购/VIP 权限」? 该曲目是付费/VIP 内容。面板「我的」页扫码登录;若账号未购买该专辑或非 VIP,则无法播放(这是平台版权限制,插件不会绕过付费墙)。
搜索有结果但某专辑曲目为空? 该专辑可能已下架或仅含视频内容。插件只处理音频曲目。
扫码二维码过期了? 二维码约 3 分钟过期,「我的」页会自动提示,点「刷新二维码」重新生成即可。
音频拖动进度后卡住? Host 端播放地址缓存约 10 分钟过期,过期后首次请求会自动重新解析(多花 1–2 秒)。若持续失败,暂停后再点播放重试。
登录后 VIP 曲目还是不能播? 确认账号确实拥有该内容权限(已购买专辑/有效 VIP)。播放权限由喜马拉雅服务端判定,插件只做登录态转发。