dsh-music-player 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -1
- package/lib/client.js +1013 -56
- package/lib/index.js +133 -17
- package/lib/qq.js +16 -0
- package/lib/whatsnew.js +21 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,10 +15,12 @@ DeepSeek Harness 音乐/小说播放插件。
|
|
|
15
15
|
- 实时频谱可视化,两种样式可在「系统配置」切换(默认柱状图):**柱状图**与**波形图**(示波器式连续曲线,按低/中/高频分成三条层次线)
|
|
16
16
|
- **实时歌词/字幕**:本地歌曲自动显示同步歌词——优先读取文件**内嵌歌词**(FLAC `LYRICS`/MP3 `USLT` 标签,无需额外 `.lrc`),其次同名 `.lrc`,都没有时自动在线匹配;在线 QQ 歌曲显示官方歌词(外语歌带逐句翻译);AI 讲书时显示当前朗读句子。**单击播放条歌词**可打开完整歌词/字幕面板(标识当前进度、可拖动/拉伸、位置独立记忆),面板默认开启**透明模式**——歌词像直接悬浮在页面上,可在「系统配置」关闭
|
|
17
17
|
- 播放时防止电脑熄屏/休眠(需浏览器支持,如 Chrome/Edge)
|
|
18
|
+
- **播放条位置可换**:在「系统配置 → 播放条位置」(配置页最后一项)里三选一——**输入框上方**(默认)/ **页面底部** / **悬浮可拖动**。悬浮条是紧凑的三行卡片(歌词整行 / 歌名+频谱 / 播放控制,行高固定不随歌词有无跳动),整条可以直接拖着挪地方,位置会记住(配置页可「重置位置」回到默认右下角);改到底部/悬浮后,播放条不再挂在输入框区域,因此对话里的询问弹窗(会接管输入区)也不会再把它一起盖住——弹窗开着照样能暂停/切歌
|
|
18
19
|
- 播放列表面板可自由拖动,右下角可拖拽调整大小,位置与尺寸跨刷新记忆
|
|
19
20
|
- AI 讲书:本地 `.txt` / `.epub` 小说 AI 语音朗读,自动识别**书名/前言/章节/尾声**结构,播放条带**章节目录**跳转(打开即定位到当前正在播放的章节)、章节切换,可选 4 种中文 AI 声音(默认白桦)
|
|
20
21
|
- `music_play` 模型工具:agent 可按关键词播放本地音乐,也可按小说名启动 AI 讲书
|
|
21
22
|
- **每日新闻播报**:agent 用 web search 收集当天头条(可分类别/自定义主题),整理筛选后 AI 语音播报;播放面板「新闻播报」页签随时回看、挑条目播放、看文字版;支持每日多定时任务定时与静默收集(详见下文「每日新闻播报」)
|
|
23
|
+
- **多标签页统一播放器**:同时开多个 DSH 标签页时,所有标签页共用**同一个播放器**——同一时刻只有一页出声,其余页静音并**同步显示**同一首歌/同一进度/同一播放状态(曲目、歌手、歌词、播放模式、音量、讲书章节全都一致),在任意一页点播放/暂停、上一首/下一首或直接点歌,都会作用到这个唯一播放器上(详见 FAQ)
|
|
22
24
|
- 支持的格式:`mp3 / m4a / m4b / aac / flac / wav / ogg / opus / webm / aiff`(自动递归扫描子目录,上限 500 首)
|
|
23
25
|
- **真实音质识别**:扫描时自动识别每首歌的音质档位,播放条显示「格式 · 音质档」(如 `FLAC · 无损` / `MP3 · 高音质` / `MP3 · 标准`),与在线音乐的音质标签一致
|
|
24
26
|
- **自建歌单**:可新建多个歌单,从本地文件(支持多选、可跨目录)添加歌曲;播放条爱心按钮一键收藏到默认歌单「我最喜欢」;歌单作为播放来源时,顺序/乱序循环只在该歌单内进行
|
|
@@ -196,7 +198,7 @@ dsh plugin --profile <profile> add github:kendu76/dsh-music-player
|
|
|
196
198
|
|
|
197
199
|
1. **对话即时播报**(收集完立即播放):对 agent 说「**播报今天的新闻**」。它会按类别搜索当天头条(默认热点/国内/国际/科技/财经/体育/娱乐,可任意指定,如「播一下 AI 相关的新闻」)、跨源去重、每条写口播摘要并标注来源,然后自动开播;说「收集一下今天的新闻,先别播」则只生成不出声。
|
|
198
200
|
2. **面板回看**:播放面板「新闻播报」页签——期次按时间倒序排列(**当日期次全保留,跨天自动清理**),未播放的标「待播」;点进详情可**播整期 / 播某类 / 点某一条新闻从该条播**;「文字版」按钮可全文阅读(不方便听语音时)。播放条上与讲书一致:📖 类别目录跳转、上/下一类、逐句字幕、AI 声音切换、`N%` 已读进度。
|
|
199
|
-
3. **每日定时(Host 自维护)**:在「新闻播报」页签的「⏰ 每日定时」里可视化配置**多定时任务**(如 08:00 / 12:30 / 18:00),每个定时任务可独立指定收集范围与**新闻条数**(1-20,默认 8;选了多个类别时各类别尽量平均分配),并勾选「收集后立即播放」(不勾选 =
|
|
201
|
+
3. **每日定时(Host 自维护)**:在「新闻播报」页签的「⏰ 每日定时」里可视化配置**多定时任务**(如 08:00 / 12:30 / 18:00),每个定时任务可独立指定收集范围与**新闻条数**(1-20,默认 8;选了多个类别时各类别尽量平均分配),并勾选「收集后立即播放」(不勾选 = **静默收集**,只更新简报不出声;熄屏/锁屏时也不会自动出声——该期保持「待播」徽标,解锁后点播即可,见下方 FAQ);也可勾选「**仅工作日执行**」——按工作日历判断:周一至周五**扣除法定节假日**放假不跑、**周末调休补班视为工作日照常**。节假日数据**按需自动联网获取**(仅在到点判断「仅工作日」定时任务、且日历缺失/过期时才查询 timor.tech,失败自动回退内置表/周一至周五),**无需任何手工维护**。**保存即生效**——定时器由插件在 DSH 主机进程内自维护(无需 agent 创建/同步 DSH 定时任务、无需手动开会话),到点自动执行。也可对 agent 说「每天早上 9 点播报新闻」让其引导配置。可在「⏰ 每日定时」里给执行会话选一个**新闻会话模型**(不选则跟随当前活跃会话)。
|
|
200
202
|
4. **手动补收**:定时任务行有「▶ 立即执行」——一键自动跑一轮(不等时刻);同一定时任务 10 分钟内重复收集会被自动跳过。
|
|
201
203
|
5. **RSS 信源池(可选加强,默认开启,Host 后台自动使用)**:内置 **10 个核心源**(中新网时政/国际/财经/体育/文化/即时/要闻 + IT之家 + 量子位 + 少数派,全部实测今日新鲜、开箱即用、零配置),池条目带可靠发布时间作为第一信源——**每次新闻收集执行前自动懒拉取最新数据**(无后台定时器、无需手动刷新),agent 先从池中筛选(按定时任务范围预筛注入指令),`web_search` 只作补盲(热点榜单、自定义主题、池外突发);某源连续失败自动停用 24h。**无 UI、无需任何配置**——面板不展示信源池,Host 直接在后台使用(详见 RFC `docs/news-rss-pool-rfc.md`)。**关掉信源池也不影响功能**——收集完全退回 web_search,能力不降级。
|
|
202
204
|
6. **工具层确定性去重**:`news_broadcast` 提交时对标题归一化 + 相似度比对,自动剔除与**本期次内**或**当日已有期次**重复的条目(notice 透明报告);同一事件多个来源时,更权威源(official > major > secondary > kol)可**升级替换**当日旧期次里的旧条目。**同类任务当天多次执行不会因去重短收**:收集指令会注入【已报条目】清单(今天已播过哪些),且**仅当当天该定时任务已执行过**时才要求每类按目标条数 1.5~2 倍提交候选缓冲去重(首次执行零冗余、不浪费 token);工具层先去重(剔除重复候选)、再按定时任务条数收敛到目标——收集 8 条就播 8 条(详见 RFC §7.5)。
|
|
@@ -237,6 +239,20 @@ dsh plugin --profile <profile> add ./ # 或直接改 profile 里的 link 目
|
|
|
237
239
|
**播放没有声音 / 显示"浏览器拦截了自动播放"?**
|
|
238
240
|
浏览器安全策略禁止未经交互的音频播放。首次自动播放被拦截是正常的——在播放条上点一次 ▶ 即可解锁,之后恢复播放。
|
|
239
241
|
|
|
242
|
+
**播放条固定在输入框上方,太抢注意力 / 想让它挪个地方?**
|
|
243
|
+
打开播放面板 →「系统配置」→ 最下方的「播放条位置」,三选一:
|
|
244
|
+
|
|
245
|
+
| 选项 | 说明 |
|
|
246
|
+
| --- | --- |
|
|
247
|
+
| 输入框上方 | 默认(与旧版一致),全宽显示在输入卡片上方 |
|
|
248
|
+
| 页面底部 | 贴在**窗口底边**、横向对齐会话列的一条细条;插件会给输入区底座补一段等高的下内边距,让输入卡片整体上移,因此这条既压不住输入框、也不遮住对话内容 |
|
|
249
|
+
| 悬浮可拖动 | 紧凑三行卡片,**高度固定不跳**:① **歌词独占整行**(第一行,中文歌词基本不用截断;当前没有歌词时留同高占位,所以有词/无词、空闲/播放中都不会变高变矮)② 歌名 + 实时频谱(频谱紧跟歌名/音质徽章)③ 时长 + 播放控制。**整条可直接拖动**,位置记在 Host 上、刷新后仍在;默认贴窗口右下角,「悬浮位置 → 重置位置」可复位 |
|
|
250
|
+
|
|
251
|
+
悬浮条闲置时会按「沉浸感」变淡,鼠标移上去恢复——不抢注意力但也一眼能找到。另外:改用页面底部或悬浮位置后,播放条不再挂在输入框区域,对话里的**询问弹窗**(它会接管输入区)不会再连播放条一起盖住,弹窗开着也能直接暂停/切歌。
|
|
252
|
+
|
|
253
|
+
**同时开了好几个 DSH 标签页,会不会两首歌一起响?**
|
|
254
|
+
不会。插件把多个标签页收拢成**一个播放器**:同一时刻只有一页出声(由开始播放的那一页担任「出声页」),其余页自动静音并**同步显示**同一个播放器的状态——同一首歌、同一播放进度、同一播放/暂停状态,歌词、播放模式、音量、讲书章节都一致。在任意一页上的操作都会作用到这个唯一播放器:播放/暂停、上一首/下一首、停止、音量、播放模式、讲书换声音/跳章、点歌/点电台/点书/点新闻期次,都会转发到出声页执行。静音的那些页会在播放条歌名后显示 **「此页静音」** 徽标,提示声音来自另一个标签页。出声页被关闭时,其余页会停在最后的位置(不会两页抢播),在任意一页点 ▶ 即可就地接着播(讲书按 Host 上保存的进度续播)。
|
|
255
|
+
|
|
240
256
|
**音乐面板显示"暂无音乐"或"不是有效的音乐目录"?**
|
|
241
257
|
点面板顶部「选择音乐目录」,选一个包含音频文件的实际目录(默认 `~/Music`)。目录路径不可读或不存在时会回退到默认目录而不是报错。
|
|
242
258
|
|
|
@@ -283,6 +299,9 @@ AI 语音目前仅支持 xiaomi 提供方(限时免费)。请先在 DSH 模
|
|
|
283
299
|
**新闻定时任务设置了却不触发?**
|
|
284
300
|
定时器由插件在 DSH 主机进程内自维护(读面板已保存的定时任务偏好,每 30s 检查一次,到点触发)——**请确认 dsh-desktop / dsh 服务主机进程保持运行**;浏览器没开不影响收集(只影响出声)。每次触发会新建一个执行会话去收集并绑定结果(归入侧边栏「新闻收集」分组)。可在「新闻播报」页签的「⏰ 每日定时」里查看/修改定时任务;保存即生效。
|
|
285
301
|
|
|
302
|
+
**勾了「收集后立即播放」,为什么熄屏/锁屏时没自动出声?**
|
|
303
|
+
熄屏/锁屏时插件**不会自动起播**新闻:页面不可见(后台标签/最小化/锁屏),或页面不再渲染帧(macOS 熄屏/锁屏时浏览器不把页面置为 hidden,但合成器停发帧)即视为「无人观看」——避免对着空房间把整期播完,也避免播放期反复申请/释放防熄屏锁让音频设备进出低功耗态(解锁瞬间的「咚咚」爆音)。该期会保持**「待播」**徽标,解锁后在「新闻播报」页签点一下即可播。若熄屏时本来就在听音乐/讲书(有人在听),定时播报照常插入,播完自动切回原内容。
|
|
304
|
+
|
|
286
305
|
**收集时看到 `web_fetch` 报 `WEB_BLOCKED_URL`(non-public IP)?**
|
|
287
306
|
说明本机开着 TUN 代理的 **fake-ip DNS 模式**(Clash/mihomo、sing-box 等):所有域名都会被解析成 `198.18.x.x` 这类代理内部地址,DSH 的 `web_fetch` 防 SSRF 保护会拒绝连接。收集流程会正常尝试抓取原文,但遇到这种报错会自动跳过、降级为只用 `web_search` 摘要继续整理,**新闻照常生成**。想让 `web_fetch` 恢复可用:把代理的 DNS 改为真实 IP 解析即可(Clash/mihomo 设 `enhanced-mode: redir-host`;sing-box 删除 DNS 配置里的 `fakeip`)。
|
|
288
307
|
|