xiaomusic Documentation

使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。

9,843 stars Python Python 1 file · ~23,516 tokens #docker#docker-compose#music#pdm#python#vue#xiaoai#xiaoai-speaker
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy xiaomusic on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name xiaomusic -p 8090:8090 --restart always hanxi/xiaomusic:latest

File: README.md

XiaoMusic: 无限听歌,解放小爱音箱

[!IMPORTANT]
📢 项目停止维护通知

因个人精力有限,需将重心转移到其他项目,本项目将停止维护,不再接受新功能开发与 bug 修复,已有 issue 与 PR 也不再处理。

后续推荐使用社区接力项目:songloft-org/songloft,欢迎大家迁移、参与共建。

衷心感谢一路以来所有用户的支持与陪伴 ❤️











[!TIP]
新手指南:初次安装遇到问题请查阅 💬 FAQ问题集合,一般遇到的问题都已经有解决办法。

👋 快速入门指南

已经支持在 web 设置页面配置其他参数,不再需要设置环境变量, docker compose 配置如下(选一个即可):

yaml
services:
  xiaomusic:
    image: hanxi/xiaomusic
    container_name: xiaomusic
    restart: always
    ports:
      - 58090:8090
    volumes:
      - /xiaomusic_music:/app/music
      - /xiaomusic_conf:/app/conf

🔥 国内:

yaml
services:
  xiaomusic:
    image: docker.hanxi.cc/hanxi/xiaomusic
    container_name: xiaomusic
    restart: always
    ports:
      - 58090:8090
    volumes:
      - /xiaomusic_music:/app/music
      - /xiaomusic_conf:/app/conf

测试版:

yaml
services:
  xiaomusic:
    image: hanxi/xiaomusic:main
    container_name: xiaomusic
    restart: always
    ports:
      - 58090:8090
    volumes:
      - /xiaomusic_music:/app/music
      - /xiaomusic_conf:/app/conf

对应的 docker 启动命令如下:

bash
docker run -p 58090:8090 -v /xiaomusic_music:/app/music -v /xiaomusic_conf:/app/conf hanxi/xiaomusic

🔥 国内:

bash
docker run -p 58090:8090 -v /xiaomusic_music:/app/music -v /xiaomusic_conf:/app/conf docker.hanxi.cc/hanxi/xiaomusic

测试版:

text
docker run -p 58090:8090 -v /xiaomusic_music:/app/music -v /xiaomusic_conf:/app/conf hanxi/xiaomusic:main
  • 其中 conf 目录为配置文件存放目录,music 目录为音乐存放目录,建议分开配置为不同的目录。
  • /xiaomusic_music 和 /xiaomusic_conf 是 docker 所在的主机的目录,可以修改为其他目录。如果报错找不到 /xiaomusic_music 目录,可以先执行 mkdir -p /xiaomusic_{music,conf} 命令新建目录。
  • /app/music 和 /app/conf 是 docker 容器里的目录,不要去修改。
  • 58090 是 NAS 本地端口的。8090 是容器端口,不要去修改。
  • 后台访问地址为: http://NAS_IP:58090

[!NOTE]
docker 和 docker compose 二选一即可,启动成功后,在 web 页面可以配置其他参数,带有 * 号的配置是必须要配置的,其他的用不上时不用修改。初次配置时需要在页面上输入小米账号和密码保存后才能获取到设备列表。

遇到问题可以去 web 设置页面底部点击【下载日志文件】按钮,然后搜索一下日志文件内容确保里面没有账号密码信息后(有就删除这些敏感信息),然后在提 issues 反馈问题时把下载的日志文件带上。

[!TIP]
作者新写了一个更简洁的个人音乐服务器,支持更强的插件扩展 https://github.com/mimusic-org/mimusic

[!TIP]

[!TIP]

[!TIP]

[!TIP]

  • 免费主机

🎤 功能特性

🤐 支持语音口令

基础播放控制

  • 播放歌曲 - 播放本地的歌曲
  • 播放歌曲+歌名 - 例如:播放歌曲周杰伦晴天
  • 上一首 / 下一首 - 切换歌曲
  • 关机 / 停止播放 - 停止播放

播放模式

  • 单曲循环 - 重复播放当前歌曲
  • 全部循环 - 循环播放所有歌曲
  • 随机播放 - 随机顺序播放

歌单管理

  • 播放歌单+目录名 - 例如:播放歌单其他
  • 播放歌单第几个+列表名 - 详见 #158
  • 播放歌单收藏 - 播放收藏歌单

收藏功能

  • 加入收藏 - 将当前播放的歌曲加入收藏歌单
  • 取消收藏 - 将当前播放的歌曲从收藏歌单移除

[!TIP]
隐藏玩法:对小爱同学说"播放歌曲小猪佩奇的故事",会先下载小猪佩奇的故事,然后再播放。

📦 安装方式

方式一:Docker Compose(推荐)

详见 👋 快速入门指南

方式二:Pip 安装

shell
# 安装
pip install -U xiaomusic

# 查看帮助
xiaomusic --help

# 启动(使用配置文件)
xiaomusic --config config.json

# 启动(使用默认端口 8090)
xiaomusic

[!NOTE]
config.json 文件可以参考 config-example.json 文件配置。详见 #94

👨‍💻 开发指南

🔩 开发环境运行

  1. 下载依赖

    shell
    ./install_dependencies.sh
  2. 安装环境

    shell
    pdm install
  3. 启动服务

    shell
    pdm run xiaomusic.py

    默认监听端口 8090,使用其他端口请自行修改。

  4. 查看 API 文档

    访问 http://localhost:8090/docs 查看接口文档。

[!NOTE]
目前的 web 控制台非常简陋,欢迎有兴趣的朋友帮忙实现一个漂亮的前端,需要什么接口可以随时提需求。

🚦 代码提交规范

提交前请执行以下命令检查代码和格式化代码:

shell
pdm lintfmt

🐳 本地编译 Docker Image

shell
docker build -t xiaomusic .

🛠️ 技术栈

  • 后端:Python + FastAPI 框架
  • 容器化:Docker
  • 前端:jQuery

📱 设备支持

已测试支持的设备

型号 设备名称
L06A 小爱音箱
L07A Redmi小爱音箱 Play
S12/S12A/MDZ-25-DA 小米AI音箱
LX5A 小爱音箱 万能遥控版
LX05 小爱音箱Play(2019款)
L15A 小米AI音箱(第二代)
L16A Xiaomi Sound
L17A Xiaomi Sound Pro
LX06 小爱音箱Pro
LX01 小爱音箱mini
L05B 小爱音箱Play
L05C 小米小爱音箱Play 增强版
L09A 小米音箱Art
LX04/X10A/X08A 触屏版音箱
X08C/X08E/X8F 触屏版音箱
M01/XMYX01JY 小米小爱音箱HD
OH2P XIAOMI 智能音箱 Pro
OH2 XIAOMI 智能音箱

[!NOTE]

  • 型号与产品名称对照可在 小米IoT平台 查询
  • 如果你的设备支持播放,请反馈给我添加到支持列表里,谢谢
  • 目前应该所有设备类型都已经支持播放,有问题可随时反馈

🎵 支持音乐格式

  • mp3 - 标准音频格式
  • flac - 无损音频格式
  • wav - 无损音频格式
  • ape - 无损音频格式
  • ogg - 开源音频格式
  • m4a - AAC 音频格式

[!NOTE]

  • 本地音乐会搜索目录下上面格式的文件,下载的歌曲是 mp3 格式
  • 已知 L05B、L05C、LX06、L16A 不支持 flac 格式
  • 如果格式不能播放可以打开【转换为MP3】和【型号兼容模式】选项,详见 #153

🌏 网络歌单功能

可以配置一个 json 格式的歌单,支持电台和歌曲,也可以直接用别人分享的链接。同时配备了 m3u 文件格式转换工具,可以很方便地把 m3u 电台文件转换成网络歌单格式的 json 文件。

详细用法见 #78

[!NOTE]
欢迎有想法的朋友们制作更多的歌单转换工具,一起完善项目功能!

⚠️ 安全提醒

[!IMPORTANT]

  1. 如果配置了公网访问 xiaomusic ,请一定要开启密码登陆,并设置复杂的密码。且不要在公共场所的 WiFi 环境下使用,否则可能造成小米账号密码泄露。
  2. 强烈不建议将小爱音箱的小米账号绑定摄像头,代码难免会有 bug ,一旦小米账号密码泄露,可能监控录像也会泄露。

💬 社区与支持

📢 讨论区

🤝 如何贡献

我们欢迎所有形式的贡献,包括但不限于:

  • 🐛 报告 Bug:在 Issues 中提交问题
  • 💡 功能建议:分享你的想法和建议
  • 📝 改进文档:帮助完善文档和教程
  • 🎨 前端美化:优化 Web 控制台界面
  • 🔧 代码贡献:提交 Pull Request

[!TIP]
提交代码前请确保运行 pdm lintfmt 检查代码规范

📚 相关资源

👉 更多教程

更多功能见 📝 文档汇总

🎨 第三方主题

📱 配套应用

❤️ 致谢

核心依赖

开发工具

参考资料

特别感谢

  • 所有帮忙调试和测试的朋友
  • 所有反馈问题和建议的朋友
  • 所有贡献代码和文档的开发者

🚨 免责声明

本项目仅供学习和研究目的,不得用于任何商业活动。用户在使用本项目时应遵守所在地区的法律法规,对于违法使用所导致的后果,本项目及作者不承担任何责任。
本项目可能存在未知的缺陷和风险(包括但不限于设备损坏和账号封禁等),使用者应自行承担使用本项目所产生的所有风险及责任。
作者不保证本项目的准确性、完整性、及时性、可靠性,也不承担任何因使用本项目而产生的任何损失或损害责任。
使用本项目即表示您已阅读并同意本免责声明的全部内容。

Star History

License

MIT License © 2024 涵曦


File: docs/issues/19.md


title: 如何修改默认的8090端口

如何修改默认的8090端口

docker-compose 修改映射端口会播放失败

text
ports:
      - 80:8090

从日志看继续调用了 http://10.0.0.4:8090 而不是修改映射的80,还原成

text
ports:
      - 8090:8090

则一切正常

text
/* Detailed source-code truncated for AI context efficiency. */

评论

评论 1 - hanxi

需要添加环境变量

text
environment:
    XIAOMUSIC_PORT:80
ports:
      - 80:80

评论 2 - newrookie001

需要添加环境变量

text
environment:
    XIAOMUSIC_PORT:80
ports:
      - 80:80

自己走了点弯路,半天才搞明白。补充说明:

environment:
XIAOMUSIC_PORT: 5678 #就是“5678”可以根据自己要求设置,但要求上下的5678都设置成一个
ports:
- 5678:5678


评论 3 - hanxi

如果换端口,需要3个数字一致,比如

text
environment:
    XIAOMUSIC_PORT:6874
ports:
      - 6874:6874

评论 4 - hanxi

文档类型的我都打开下,方便其他人看到。

评论 5 - flymin

docker-compose 中对应关系应该是

yaml
ports:
    - aaaa:bbbb
environment:
    XIAOMUSIC_PORT: bbbb  # 配置文件中的 port,后台:监听端口(修改后需要重启)
    XIAOMUSIC_PUBLIC_PORT: aaaa # 配置文件中的 public_port,后台:外网访问端口(0表示跟监听端口一致)

以上,docker 环境中基本不存在需要修改 bbbb 的情况,也就是不用设置 XIAOMUSIC_PORT。如果需要修改端口,只需要修改两处 aaaa
如果使用反向代理,则转发 localhost:aaaa,XIAOMUSIC_PUBLIC_PORT 设置成代理的监听端口 cccc

另外,setting 文件存在会覆盖环境变量。启动过之后需要直接修改 settings.json 或者在后台修改

Issue 链接


File: docs/issues/78.md


title: 已支持配置自定义网络歌单,在这里分享你的歌单

已支持配置自定义网络歌单,在这里分享你的歌单

设置页面新增一个输入框配置json格式,可以定义配置音乐源,可以是电台或者其他的m3u8格式的。
再加一个输入框配置这个json文件的url,点击获取按钮把url对应的json内容填充到json输入框,方便直接使用别人分享的歌单。

比如这样的链接

已经测试能播放出来:

text
python3 micli.py play http://ngcdn001.cnr.cn/live/zgzs/index.m3u8

预计歌单格式是这样的, type 为 radio 作为电台的设定,会一直播放当前电台,不会播放下一首。

json
[
  {
    "name":"歌单1",
    "musics":[
      {
        "name":"歌名1",
        "url":"http://ngcdn001.cnr.cn/live/zgzs/index.m3u8",
        "type":"radio"
      },
      {
        "name":"歌名2",
        "url":"https://lhttp.qtfm.cn/live/4915/64k.mp3"
      }
    ]
  },
  {
    "name":"歌单2",
    "musics":[
      {
        "name":"歌名3",
        "url":"https://lhttp.qtfm.cn/live/4915/64k.mp3"
      },
      {
        "name":"花海",
        "url":"http://192.168.2.5:58090/proxy?urlb64=aHR0cHM6Ly93cy5zdHJlYW0ucXFtdXNpYy5xcS5jb20vTTgwMDAwM29rV3ZvMXFadTljLm1wMz9mcm9tdGFnPTAmZ3VpZD1mZmZmZmZmZmM4MWU2ZjVhZmZmZmZmZmZlZGZmZWI3ZiZ1aW49MzMxMjkzOTI1NCZ2a2V5PTc1MURBOEQ5RkRFNTkwOEQ5MjVCNUZFMTNBODhEREUyQkI3MzZGNDQ3NDU4MTA1OTk2Q0Q3QTEyMTQ2ODFGRUZERjNBQURDMkY0OTY2NjJEMDM1OUVDRkE0RjQwMkM2M0RDOTk4NzdDOENGMkM3OUJfX3YyMWUyYTE3MzM="
      }
    ]
  }
]

这里分享一个让 chatgpt 写 python 脚本来生成歌单的例子 https://chatgpt.com/share/6751c019-74c0-800a-a978-a20c636d4464 。

代理访问链接

上面的 http://192.168.2.5:58090/proxy?urlb64=aHR0cHM6Ly93cy5zdHJlYW0ucXFtdXNpYy5xcS5jb20vTTgwMDAwM29rV3ZvMXFadTljLm1wMz9mcm9tdGFnPTAmZ3VpZD1mZmZmZmZmZmM4MWU2ZjVhZmZmZmZmZmZlZGZmZWI3ZiZ1aW49MzMxMjkzOTI1NCZ2a2V5PTc1MURBOEQ5RkRFNTkwOEQ5MjVCNUZFMTNBODhEREUyQkI3MzZGNDQ3NDU4MTA1OTk2Q0Q3QTEyMTQ2ODFGRUZERjNBQURDMkY0OTY2NjJEMDM1OUVDRkE0RjQwMkM2M0RDOTk4NzdDOENGMkM3OUJfX3YyMWUyYTE3MzM= 是经过代理播放的链接。可以通过其他的工具来生成。其中 http://192.168.2.5:58090/ 是自己的 xiaomusic 地址。

评论

评论 1 - hanxi

可以使用 gist 来配置和分享 json 文件,比如 https://gist.github.com/hanxi/dda82d964a28f8110f8fba81c3ff8314

点击 raw 得到 json 文件的链接 https://gist.githubusercontent.com/hanxi/dda82d964a28f8110f8fba81c3ff8314/raw/8787844d81c39dbfaad4e37954dd449d8bba5728/example.json

当然还可以用其他工具分享json文件,比如 github 和国内的 gitee 。

评论 2 - hanxi

已经有工具支持将 m3u 格式的电台文件转为网络歌单格式,见 /issues/88.html

欢迎有兴趣的朋友制作其他格式转换工具,比如网易歌单那一类的。

评论 3 - hanxi

设备掉线了

评论 4 - hanxi

怎么获取 他正在播放什么?或者是播放进度 ?播放列表?我想给他加进去

这个接口 `/playingmusic`

评论 5 - 114514thD

加不加"type":"radio"都会一直播放不切换到下一首歌是为什么呢

评论 6 - hanxi

加不加"type":"radio"都会一直播放不切换到下一首歌是为什么呢

发出来看看?

评论 7 - 114514thD

加不加"type":"radio"都会一直播放不切换到下一首歌是为什么呢

发出来看看?

本地开服务器,生成的m3u列表
格式如下
#EXTINF:247,周传雄 - 临别一眼.mp3 http://192.168.1.147:8000/%E5%91%A8%E4%BC%A0%E9%9B%84%20-%20%E4%B8%B4%E5%88%AB%E4%B8%80%E7%9C%BC.mp3
包含了时长信息
版本是0.3.46
potplayer里播放完全正常

仔细研究了一下,发现确实存在问题,不过是另一种情况,下面单说

评论 8 - 114514thD

加不加"type":"radio"都会一直播放不切换到下一首歌是为什么呢

发出来看看?

这几天再仔细研究了一下,发现一个可能的原因:这样获取到的是m4a文件,我尝试着在json里配置获取到的m4a链接,发现播放同样也是无时长

评论 9 - hanxi

获取歌曲时长确实有些格式获取不到。

评论 10 - 114514thD

获取歌曲时长确实有些格式获取不到。

http://m7.music.126.net/20241216093525/75c9080afa2929d7eec8e1cdbcbc0a92/yyaac/0709/535a/5358/0c6e2dcac3d0e9fa4415d22e1eca1337.m4a
以这个文件为例,我用ffmpeg可以获取时长等元数据
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'http://m7.music.126.net/20241216093525/75c9080afa2929d7eec8e1cdbcbc0a92/yyaac/0709/535a/5358/0c6e2dcac3d0e9fa4415d22e1eca1337.m4a': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: M4A mp42isom creation_time : 2019-02-21T02:51:36.000000Z iTunSMPB : 00000000 00000920 000003E8 00000000004BE2F8 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 encoder : Nero AAC codec / 1.5.4.0 Duration: 00:03:45.70, start: 0.052971, bitrate: 64 kb/s Chapters: Chapter #0:0: start 0.105941, end 225.750930 Metadata: title : Stream #0:0[0x1](und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 63 kb/s (default) Metadata: creation_time : 2019-02-21T02:51:36.000000Z handler_name : Sound Media Handler vendor_id : [0][0][0][0]

那是为什么播放就不行呢

评论 11 - hanxi

因为代码有问题。

评论 12 - 114514thD

因为代码有问题。

好吧😂😂,大佬真是直接😁

评论 13 - hanxi

重构方案 #314

评论 14 - LiyuTian-web

下指令后会重新播放歌曲。比如正在播放晴天,下指令声音小一点,这时会重新从头开始播放晴天这首歌,而不会继续播放。

评论 15 - hanxi

v0.3.86 版本支持 LX 歌单,歌单导出工具地址:

评论 16 - airroy888

https://github.com/airroy888/xiaomusic 插件工具特点: 1、解锁网易云灰色音乐,网易云歌单实现秒同步。同步歌曲时仅将歌名保存在播放列表中,无需等待播放链接更新,歌单保存内存配置中,不修改setting.json避免影响系统开机加载速度。 2、当播放歌单时,系统才会实时更新查询播放链接,并调用xiaomusic的API下载播放。 3、歌单播放采取播1备1方式随时待命状态,当用户喊“切歌”可以实现快速播放歌单的下一首歌曲。

评论 17 - 382263999

播放电台提示:Failed to play music: API Error: 500 Internal Server Error

评论 18 - hanxi

v0.4.15 版本已经支持在线歌单格式, url 是 self:///api/proxy/plugin-url?data= 开头的,需要配合【OnlineSearch】在线音乐里的 JS 插件使用,下面是一个歌单示例,如果想合并多个歌单,可以配合【歌单合并工具】把多个 json 歌单合并成一个。同时需要打开 【网络歌曲过代理】开关。

text
/* Detailed source-code truncated for AI context efficiency. */

也支持这种格式的网络歌单,歌单内容来自于 https://api.tunefree.fun/ :

text
/* Detailed source-code truncated for AI context efficiency. */

评论 19 - lowtianwei

请问自定义网络歌单需要在哪里配置啊?

评论 20 - hanxi

#786 现已经支持B站在线播放形式的歌单,无需下载,适合小机器部署:

json
[
    {
        "name": "英文电台",
        "musics": [
            {
                "name": "BBC NEWS",
                "url": "https://stream.live.vc.bbcmedia.co.uk/bbc_world_service",
                "type": "radio"
            },
            {
                "name": "CGTN ENGLISH",
                "url": "https://english-livetx.cgtn.com/hls/yypdyyctzb_sd.m3u8",
                "type": "radio"
            },
            {
                "name": "CGTN BEIJING HOUR",
                "url": "https://sk.cri.cn/am846.m3u8",
                "type": "radio"
            }
        ]
    },
    {
        "name": "B站测试歌单",
        "musics": [
            {
                "name": "晴天",
                "url": "https://www.bilibili.com/video/BV1U44y1G7a6"
            }
        ]
    }
]

评论 21 - 114514thD

L07A测试失败
没注意到是新版本功能,0.5.0就可以了


Issue 链接


File: docs/issues/86.md


title: 微信交流群二维码

微信交流群二维码

无内容

评论

评论 1 - DarrenWen

群满200人,没法加入了

评论 2 - hanxi

没想到这么快就满了,新建了一个。

评论 3 - weplayro

二维码过期了


评论 4 - hanxi

二维码过期了

更新了

评论 5 - JmsWang

来晚了,又过期了

评论 6 - hanxi

来晚了,又过期了

更新了

评论 7 - scrawld

二维码过期了

评论 8 - hanxi

二维码过期了

更新了

评论 9 - hanlinwangluo

二维码过期了

评论 10 - hanxi

二维码过期了

更新了

评论 11 - goooodGAO

二维码过期了

评论 12 - hanxi

二维码过期了

更新了

Issue 链接


File: docs/issues/88.md


title: 如何添加m3u格式文件的电台

如何添加m3u格式文件的电台

比如可以找到这样的 m3u 电台文件: https://github.com/YueChan/Live/blob/main/Radio.m3u

  1. 复制文件内容,粘贴到 m3u 转换工具里,点击转换为 json 格式:

  2. 然后复制 json 内容,粘贴到歌单内容里,点击保存,再返回首页:

  3. 在首页点击刷新列表,选择所有电台,再点击播放列表歌曲:

  4. 也可以用口令播放电台: 播放列表所有电台 ,或者口令: 播放歌曲北京城市广播

评论

评论 1 - guoxiangke

转换m3u链接: http://127.0.0.1:8090/static/m3u.html

评论 2 - guoxiangke

http://127.0.0.1:8090/playurl?did=mydid&url=https://a.com/test.m3u 如果能支持 这么播放m3u 就太完美了 希望能够支持,谢谢作者。

评论 3 - hanxi

http://127.0.0.1:8090/playurl?did=mydid&url=https://a.com/test.m3u 如果能支持 这么播放m3u 就太完美了 希望能够支持,谢谢作者。

不想破坏现有接口,可以考虑用插件的方式来实现。

评论 4 - lazybabyz

potplayer 测试 https://raw.githubusercontent.com/YueChan/Live/refs/heads/main/Radio.m3u 部分可以听
xiaomusic测试 https://github.com/YueChan/Live/blob/main/Radio.m3u 复制raw文件转换 全部失败不停转台

以下potplayer测试 可以听,xiaomusic测试 复制raw文件转换 全部失败不停转台

https://raw.githubusercontent.com/kaige-cai/live/refs/heads/main/radio.m3u
https://raw.githubusercontent.com/imDazui/Tvlist-awesome-m3u-m3u8/master/m3u/%E5%B9%BF%E6%92%AD%E7%94%B5%E5%8F%B02021.m3u


评论 5 - hanxi

检查一下是不是 ipv6 的地址?小米音箱不支持 ipv6

评论 6 - lazybabyz

检查一下是不是 ipv6 的地址?小米音箱不支持 ipv6

是我硬件设置的问题 重新安装了 解决!

Issue 链接


File: docs/issues/94.md


title: 采用config.json配置方式

采用config.json配置方式

docker 方式部署默认推荐使用环境变量的方式来配置参数,如果是自己用命令行启动,目前支持的参数配置比较少,但是是支持 --config 参数。

使用 pip 安装 xiaomusic 【0.1.83版本才支持 pip 安装】

shell
pip install xiaomusic

依赖的 ffmpeg 需要自己安装。

仓库中有个 config-example.json 文件,可以把这个文件拷贝为 config.json 然后修改 config.json 里的配置,再用下面的命令启动。

shell
xiaomusic --config ./config.json

默认的 config.json 模板如下:

json
{
    "hardware": "L07A",
    "account": "",
    "password": "",
    "mi_did": "",
    "cookie": "",
    "verbose": false,
    "music_path": "music",
    "conf_path": null,
    "hostname": "192.168.2.5",
    "port": 8090,
    "proxy": null,
    "search_prefix": "ytsearch:",
    "ffmpeg_location": "./ffmpeg/bin",
    "active_cmd": "play,random_play,playlocal,play_music_list,stop",
    "exclude_dirs": "@eaDir",
    "music_path_depth": 10,
    "disable_httpauth": true,
    "httpauth_username": "admin",
    "httpauth_password": "admin",
    "music_list_url": "",
    "music_list_json": "",
    "disable_download": false,
    "use_music_api": false,
    "log_file": "/tmp/xiaomusic.txt",
    "fuzzy_match_cutoff": 0.6,
    "enable_fuzzy_match": true
}

如果采用 docker compose 启动想用 config.json 的配置方式,可以这样配:

yaml
services:
  xiaomusic:
    image: hanxi/xiaomusic
    container_name: xiaomusic
    restart: unless-stopped
    ports:
      - 8090:8090
    volumes:
      - ./music:/app/music
      - ./config.json:/app/config.json
    command: ['--config', '/app/config.json']

主要就是把 config.json 文件映射进容器和传 --config 参数。

评论

评论 1 - alitime

正需要,有配置文件方便多了

评论 2 - hanxi

ffmpeg 如果是用 apt install 这类系统工具安装的,默认会在 /usr/bin 目录下,ffmpeg_location 这个参数就需要设置为 /usr/bin .

目前 armv7 cpu 的 docker 镜像里的 ffmpeg 有问题,最好是用 pip 方式安装运行。

评论 3 - hanxi

ffmpeg 如果是用 apt install 这类系统工具安装的,默认会在 /usr/bin 目录下,ffmpeg_location 这个参数就需要设置为 /usr/bin .

目前 armv7 cpu 的 docker 镜像里的 ffmpeg 有问题,最好是用 pip 方式安装运行。

armv7 问题已经解决。

评论 4 - wuqiang0720

pip 部署完了然后怎么操作呢,有配置文件参数解释的文档吗?

评论 5 - hanxi

pip 部署完了然后怎么操作呢,有配置文件参数解释的文档吗?

可以不需要的,直接一样在web后台设置即可。

Issue 链接


File: docs/issues/96.md


title: ios系统上的捷径配置

ios系统上的捷径配置

下面是播放音乐和关机两个示例。只要在 web 页面上能看到的功能,都有对应的 http 请求接口,都可以用来配置捷径。

评论

评论 1 - Yumega

为什么我的捷径设置无效
http://192.168.11.1:5678/cmd 这个电脑可以打开 显示 {"detail":"Method Not Allowed"}

参照楼主的方法 用iOS捷径无效

评论 2 - hanxi

方便截图看看怎么填的吗?

评论 3 - Yumega


评论 4 - Yumega

方便截图看看怎么填的吗?

😏什么原因

评论 5 - hanxi

@Yumega 等有空我试试,目前没时间。

Issue 链接


File: docs/issues/99.md


title: 💬 FAQ问题集合

💬 FAQ问题集合

[!NOTE]
这个 issue 用来总结报错日志和对应的解决方法。

Login Failed 登陆失败

表现就是 后台看不到设备列表 ,日志中会有对应的报错。

可以试试用 cookie 登陆:

这个有专门的讨论,见 ,一般是因为开了加速代理,关代理再尝试即可。也可以试试在局域网设备里的米家app上退出再重新登录一下。

在小米官网 www.mi.com 登陆过人脸或滑块验证基本上能解决 99%的 login failed 问题。

来自 @yilikun 的友情提示:

  1. 关闭本地代理。
  2. 如果是nas运行的,网络由bridge改为host。
  3. 米家app重新登陆。
  4. mi.com官网重新登陆。
  5. 检查 setting.json 文件里的账号密码是否正确。

如果是在 openwrt 类路由器系统上安装的,请检查路由器的防火墙设置。

用一段时间就看不到设备

  • 获取对话记录太频繁,不用的时候请关闭【语音口令】开关。

  • 不使用小米的TTS,改完 Edge-TTS,在设置界面选一个 Edge-TTS 音色。

网页后台可以播放,语音控制无效

语音口令功能默认关闭,需要去设置页面打开【获取对话记录】开关 / 也就是主页的【语音口令】开关。请谨慎打开这个功能,可能会因为频繁请求导致登陆失败的问题,建议不使用的时候随手关闭。

这种情况是拉取不到对话记录导致的。
如果是首次在网页后台保存 did 后需要重启一次容器。
其他情况可能是被限制拉取对话记录次数,也可以尝试重启容器。
还有一种情况是配错了唤醒口令,可以在小爱音箱app里查看对话记录,也可以查看 xiaomusic 的日志。默认口令前缀是【播放歌曲】,没有这个前缀是无法识别的,说播放音乐是没用的,除非自己设置其他口令词。
已知 M01/XMYX01JY 小米小爱音箱HD 获取对话记录的接口比较特殊,需要开启【特殊型号获取对话记录:】开关才能正常语音控制。

语音提示音无效

一般是因为 TTS 登陆失败,可以配置 【Edge-TTS 语音角色:】来解决,只是无法使用音箱自带的 TTS 语音。

日志显示正在播放,却没有声音

可以点击播放链接按钮,看看默认的那个链接能否播放。

已知部分触屏版不能播放可以在后台设置 【型号兼容模式】为 true 试试。如果你的设备型号需要手动设置这个选项,请在 /issues/453.html 中反馈。

其他情况可能是 XIAOMUSIC_HOSTNAME 配错了地址,不是 docker 主机地址会导致小爱音箱无法访问到,而且需要和小爱音箱在同一个局域网下的地址。还有可能是端口配错了,修改了默认 8090 端口映射,需要同步修改其他参数,可以翻阅端口修改的文档。

如果端口不是8090,首次启动没配好端口的话,需要手动修改setting.json文件里的端口,或者把setting.json文件删除重新配置,或者在后台修改监听端口后重启。

可以点击播放歌曲后,查看日志里的歌曲链接,放到浏览器里打开试试,不能访问说明是端口或者hostname问题,如果是异地访问,需要把 hostname 修改为外网ip或者域名,需要注意音箱只支持访问ipv4,不能是ipv6的公网。

如果是配了公网反代端口,注意区分是 http 还是 https ,如果是 https 的,配置 XIAOMUSIC_HOSTNAME 时需要加上 https:// 前缀。

如果是在 openwrt 类路由器系统上安装的,请检查路由器的防火墙设置。

如果是在 windows 上安装的,请关闭防火墙。另外ip别填localhost,填192开头的那个ip.

无法播放 flac 格式歌曲

因设备差异和文件格式差异,已知部分设备不支持 flac 格式,比如 L05B L05C 。建议提前用其他工具批量把文件格式转为 mp3 ,也可以在后台设置里打开【转换为MP3】,但是会比较消耗 CPU ,会影响体验。

docker 镜像拉取失败

请更换镜像源或者使用代理。不同环境更换镜像源的方式不一样,可以网上搜索自己的 NAS 如何更换镜像源。

已经可以通过 DaoCloud 拉取镜像。

text
docker pull m.daocloud.io/docker.io/hanxi/xiaomusic:latest
docker tag m.daocloud.io/docker.io/hanxi/xiaomusic:latest hanxi/xiaomusic:latest

更多镜像源见

启动失败,日志中出现 RuntimeError: can't start new thread

一般是 docker 版本太低,或者系统限制了 docker 使用的 cpu 数量,可以尝试升级 docker 到最新版本。

DNS 解析错误

一般会出现下面这样的日志,表现就是设置页面看不到设备列表。

text
aiohttp.client_ _exceptions. ClientConnectorError: Cannot connect to host account.xiaomi.com:443 ssl:False [Temporary failure in name resolution]

可以尝试把主机的 DNS 设为 223.5.5.5 之后重启 docker 主机。

如果还是不行可以把 docker 的网络模式改成 host 模式。

如何配置多个歌曲目录

yaml
services:
  xiaomusic:
    image: hanxi/xiaomusic
    container_name: xiaomusic
    restart: unless-stopped
    ports:
      - 8090:8090
    volumes:
      - /data/music1:/app/music/music1
      - /data/music2:/app/music/music2
      - /data/download:/app/music/download
      - /data/xiaomusic/conf:/app/conf

冒号左边的 /data/music1 和 /data/music2 改成你的目录即可。如果你是 windows 的 docker ,可以改成 D:/music1 和 D:/music2,盘符号开头,用 / 分割。配置多个歌曲目录时,冒号右边不要有单独的 /app/music ,都只能是 /app/music/ 的子目录。

另外如果是 docker 部署的,建议不要去修改 web 后台里的音乐路径和配置路径等等所有路径除非你熟悉 docker 的目录映射机制。

能不能中文名

yaml
services:
  xiaomusic:
    image: hanxi/xiaomusic
    container_name: xiaomusic
    restart: unless-stopped
    ports:
      - 8090:8090
    volumes:
      - /data/music1:/app/music/歌曲目录1
      - /data/music2:/app/music/歌曲目录2
      - /data/download:/app/music/download
      - /data/xiaomusic/conf:/app/conf

能不能多层目录

可以,每层的每个目录会识别为一个播放列表。

是否需要手动获取 did

不需要手动获取配置 did,不需要配置环境变量,直接在 web 后台填入小米账号密码保存后会自动获取到 did ,然后勾选对应的设备即可。

报错 601

报错日志大致如下:

txt
Exception: Error https://api2.mina.mi.com/remote/ubus: {"code":601,"message":"illegal argument exception","data":"IllegalArgumentException: ubus call format illegal!"}

原因是没有配置 did ,或者 did 配置错误。可以到设置页面选择正确的设备类型和 did 然后保存。

新功能没有生效

在设置页面重新保存一下,或者删除 setting.json 文件,重新在后台设置一次。

为什么会先说小爱音箱自带的回答,再说下载中或者过一会儿才播放本地歌曲

设计原理就是每秒不停的抓取对话记录,然后再打断小爱音箱自带的处理流程。整个过程下来会有延时,所以打断不会很及时,做不到无缝衔接。

云服务器上能否安装

可以安装,登录 mi.com 这个步骤可以使用终端里的浏览器 carbonyl 来操作:

shell
docker run --rm -ti fathyb/carbonyl https://mi.com

或者使用 browsh

shell
docker run --rm -it browsh/browsh --startup-url https://mi.com

在播放歌曲时,问小爱查询天气,小爱查询天气时,中途会断掉。

播放中会被xiaomusic接管,会跟原有功能冲突,需要先说关机来关闭xiaomusic的功能,再问小爱查询天气。

我家有个奇怪的问题,你给它暂停了,它过一会儿又自己开始唱了,不勘其扰。小爱重启都没用。

要说【关机】才能关掉 xiaomusic ,否则下一曲定时器到了会继续播放下一曲。

为什么播放进度条不能拖动

没有接口,目前做不到。

小爱触屏能不能显示本地的歌名歌词封面

可以,设置页面打开【启用继续播放】开关。

看不到歌曲列表

  1. 检查目录挂载是否正确
  2. 检查目录权限是否正确
  3. 检查文件夹名字是否是 UTF-8 格式

本机有声音,小爱音箱没声音,请问什么原因?

排查步骤:

  1. 测试链接是否能播放,能播放说明小爱音箱控制没问题,继续下一步排查。不能播放说明控制不了你的小爱音箱,一般是【型号兼容模式】设置问题。
  2. 小爱音箱和 NAS 是否在同一个局域网,检查 NAS 的 IP 和音箱的 IP 是否在同一个网段,不在同一个网段会导致音箱无法访问到 NAS 。如果在同一个局域网,检查 NAS 上的防火墙配置,关闭防火墙再测试,如果还是不行就继续下一步。
  3. 查看容器日志中的歌曲链接是否正常,点击后台页面上的播放歌曲时,容器中会有歌曲链接,一般是 http 开头的链接,复制完整链接到浏览器试试看能否打开,能打开说明网络没问题,继续下一步排查。不能打开有可能是 ip 和端口配置错误,请使用设置页面的自动填按钮自动填 ip 和端口。
  4. 歌曲文件格式是否是 mp3 格式,有些型号无法播放 flac 格式的歌曲,请使用 mp3 格式的歌曲文件测试,一个不行就多找几个文件测试。

在安装好第一次用语音正常,第二天就不能用语音了

拉取对话记录的问题。拉取对话记录太频繁了,可以使用定时任务功能,设置晚上关闭拉取对话记录。比如这样设置是早上6点开启拉取对话记录,晚上12点关闭:

text
[
   {
        "expression": "0 6 * * *",
        "name": "set_pull_ask",
        "arg1": "enable"
   },
   {
        "expression": "0 0 * * *",
        "name": "set_pull_ask",
        "arg1": "disable"
   }
]

播放下一首歌曲时会重复播放上一首歌曲的前几秒

时间延迟问题,可以把【下一首歌延迟播放秒数】设置成负数,表示提前几秒结束播放。

启动不了,报错 supervisord not found

text
/bin/sh: /usr/bin/supervisord: not found

清除 docker 镜像缓存,重启 docker 。 见 #695

评论

评论 1 - shissx

安装的最新版本,即使没有使用,日志一直在不停的刷新,示例:
[10:20:36] [0.1.101] [DEBUG] Polling_event, timestamp: {'eeb70da5-baa9-4b56-b2f3-7ee01276a18a': 1720430457236}
[10:20:36] [0.1.101] [DEBUG] Sleep 0.0003166699898429215, timestamp: {'eeb70da5-baa9-4b56-b2f3-7ee01276a18a': 1720430457236}
[10:20:37] [0.1.101] [DEBUG] Listening new message, timestamp: {'eeb70da5-baa9-4b56-b2f3-7ee01276a18a

之前的版本没有这个问题,这个是设置错误?还是本来就如此呢?

评论 2 - hanxi

安装的最新版本,即使没有使用,日志一直在不停的刷新,示例: [10:20:36] [0.1.101] [DEBUG] Polling_event, timestamp: {'eeb70da5-baa9-4b56-b2f3-7ee01276a18a': 1720430457236} [10:20:36] [0.1.101] [DEBUG] Sleep 0.0003166699898429215, timestamp: {'eeb70da5-baa9-4b56-b2f3-7ee01276a18a': 1720430457236} [10:20:37] [0.1.101] [DEBUG] Listening new message, timestamp: {'eeb70da5-baa9-4b56-b2f3-7ee01276a18a

之前的版本没有这个问题,这个是设置错误?还是本来就如此呢?

正常现象,现在默认把调试日志打开了,可以在后台设置关闭调试日志的。

评论 3 - Dx0123

大佬,docker安装提示缺少很多module,我一个个在dockerfilie里加上,最后卡在miservice装不上了~

评论 4 - hanxi

@Dx0123 其实不用手动安装依赖的,直接一行应该就行。

text
RUN pip install -U xiaomusic

评论 5 - Dx0123

@Dx0123 其实不用手动安装依赖的,直接一行应该就行。

text
RUN pip install -U xiaomusic

我直接用pip安装好之后,执行仍然有缺少的依赖,和docker里缺的一样。截图的module安装了之后还会有其他依赖缺失


评论 6 - hanxi

@Dx0123 你的python版本是不是有问题?你参考下项目里的Dockerfile,用同一个From镜像试试。

评论 7 - hanxi

有时候指令已停止,可是一会儿,又自动播放下一首,根本就停不下来。需要重启容器才能正常

点关机按钮也不行吗?

评论 8 - hanxi

有时候指令已停止,可是一会儿,又自动播放下一首,根本就停不下来。需要重启容器才能正常

点关机按钮也不行吗?

是的,说关机,点关机,暂停都不行。只能重启容器。

有没有日志看看?

评论 9 - sqmcool

为什么我的没有显示设备?


评论 10 - hanxi

为什么我的没有显示设备?

应该是登陆失败,可以查看一下日志。

评论 11 - schppd

楼主您好,请问这个我需要怎么处理?


评论 12 - hanxi

楼主您好,请问这个我需要怎么处理?

删掉重新配置一下试试。

评论 13 - schppd

会不会跟网络不稳定有关系?我都弄了几次还是这样子

------------------ 原始邮件 ------------------
发件人: "hanxi/xiaomusic" @.>;
发送时间: 2024年9月15日(星期天) 晚上10:57
@.
>;
@.@.>;
主题: Re: [hanxi/xiaomusic] FAQ问题集合 (Issue #99)

楼主您好,请问这个我需要怎么处理?

删掉重新配置一下试试。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: ***@***.***>

评论 14 - hanxi

会不会跟网络不稳定有关系?我都弄了几次还是这样子
…
------------------ 原始邮件 ------------------ 发件人: "hanxi/xiaomusic" @.>; 发送时间: 2024年9月15日(星期天) 晚上10:57 @.>; @.@.>; 主题: Re: [hanxi/xiaomusic] FAQ问题集合 (Issue #99) 楼主您好,请问这个我需要怎么处理? 删掉重新配置一下试试。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

有可能的,用代理试试。

评论 15 - guoxiangke

定制的时候,"全部"和”所有歌曲"的区别,帮助有需要的朋友:
歌单中 "全部" 指的是 所有歌单中歌曲,但不包括“歌单内容”配置(http://127.0.0.1:8090/static/setting.html)中的电台 "type": "radio",的
”所有歌曲" 指的是下载的歌曲,在download文件夹里


评论 16 - agigogo

在docker里可以运行,但是没法播放设置页面中的播放链接,选中设备那里是空的,是不是没成功?怎么调整?


评论 17 - hanxi

在docker里可以运行,但是没法播放设置页面中的播放链接,选中设备那里是空的,是不是没成功?怎么调整?

设置页面输入小米的账号密码后,再勾选一个设备。

评论 18 - agigogo

在docker里可以运行,但是没法播放设置页面中的播放链接,选中设备那里是空的,是不是没成功?怎么调整?

设置页面输入小米的账号密码后,再勾选一个设备。

设置页面里没有勾选的选项

在docker里可以运行,但是没法播放设置页面中的播放链接,选中设备那里是空的,是不是没成功?怎么调整?

设置页面输入小米的账号密码后,再勾选一个设备。

设置页面没有可勾选项?

评论 19 - agigogo

在docker里可以运行,但是没法播放设置页面中的播放链接,选中设备那里是空的,是不是没成功?怎么调整?

设置页面输入小米的账号密码后,再勾选一个设备。

设置页面里没有勾选的选项

在docker里可以运行,但是没法播放设置页面中的播放链接,选中设备那里是空的,是不是没成功?怎么调整?

设置页面输入小米的账号密码后,再勾选一个设备。

设置页面没有可勾选项?

显示未检测到设备,设备型号是MDZ-25-DA

评论 20 - hanxi

@agigogo 应该是登陆失败了,局域网的手机重新登陆一下小爱音箱app吧。

评论 21 - agigogo

@agigogo 应该是登陆失败了,局域网的手机重新登陆一下小爱音箱app吧。

一直都是用米家APP来控制小爱音箱,那要下个小爱音响APP试一试

评论 22 - agigogo

@agigogo 应该是登陆失败了,局域网的手机重新登陆一下小爱音箱app吧。

搞定了,小爱音箱app重新绑定就可以了。真6~

评论 23 - Tueafternoon

一首歌结束不能自动切到下一首,随机播放模式,日志中显示下一曲定时器不见了....这个是咋回事啊

评论 24 - hanxi

一首歌结束不能自动切到下一首,随机播放模式,日志中显示下一曲定时器不见了....这个是咋回事啊

可能是音乐文件有问题,获取歌曲长度失败,你可以把歌曲文件上传一下给我测试。

评论 25 - hanxi

或者搜下日志里有没有 不会设置下一首歌的定时器 这个

评论 26 - Tueafternoon

或者搜下日志里有没有 不会设置下一首歌的定时器 这个

有这个,应该是我的文件格式问题,晚上我处理一下再试试

评论 27 - zealler9560

istore系统可以拉取创建镜像,但是无法启动,错误提示见图一,求助大佬!路由器信息见图二


评论 28 - adidas004

在群晖使用docker安装的,只能通过重装来升级到最新版本吗?有快捷的一键升级吗

评论 29 - hanxi

在群晖使用docker安装的,只能通过重装来升级到最新版本吗?有快捷的一键升级吗

不会命令行,就用这个工具吧。 https://github.com/onlyLTY/dockerCopilot

评论 30 - adidas004

谢谢您的工具,我刚去群晖的docker上有提示直接升级,还是非常的感觉你的回答

------------------ 原始邮件 ------------------
发件人: @.>;
发送时间: 2024年11月11日(星期一) 下午4:20
收件人: @.
>;
抄送: @.>; @.>;
主题: Re: [hanxi/xiaomusic] 💬 FAQ问题集合 (Issue #99)

在群晖使用docker安装的,只能通过重装来升级到最新版本吗?有快捷的一键升级吗

不会命令行,就用这个工具吧。 https://github.com/onlyLTY/dockerCopilot

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: ***@***.***>

评论 31 - sinojelly

运行时遇到下面问题,请问要怎么排查?

text
2024/11/21 19:27:00  xiaomusic.py: error: unrecognized arguments: .venv/bin/python3 xiaomusic.py
2024/11/21 19:27:00         [--enable_config_example]
2024/11/21 19:27:00         [--ffmpeg_location FFMPEG_LOCATION]
2024/11/21 19:27:00         [--config CONFIG]
2024/11/21 19:27:00         [--verbose]
2024/11/21 19:27:00         [--cookie COOKIE]
2024/11/21 19:27:00         [--password PASSWORD]
2024/11/21 19:27:00         [--account ACCOUNT]
2024/11/21 19:27:00         [--hardware HARDWARE]
2024/11/21 19:27:00         [--port PORT]
2024/11/21 19:27:00         [-h]
2024/11/21 19:27:00  usage: xiaomusic.py

评论 32 - hanxi

运行时遇到下面问题,请问要怎么排查?

text
2024/11/21 19:27:00  xiaomusic.py: error: unrecognized arguments: .venv/bin/python3 xiaomusic.py
2024/11/21 19:27:00         [--enable_config_example]
2024/11/21 19:27:00         [--ffmpeg_location FFMPEG_LOCATION]
2024/11/21 19:27:00         [--config CONFIG]
2024/11/21 19:27:00         [--verbose]
2024/11/21 19:27:00         [--cookie COOKIE]
2024/11/21 19:27:00         [--password PASSWORD]
2024/11/21 19:27:00         [--account ACCOUNT]
2024/11/21 19:27:00         [--hardware HARDWARE]
2024/11/21 19:27:00         [--port PORT]
2024/11/21 19:27:00         [-h]
2024/11/21 19:27:00  usage: xiaomusic.py

看不出来

评论 33 - sinojelly

请问登录验证失败要怎么定位?小米登录邮箱,还是小米id 都报同样的错。

text
2024/11/25 0:50:44  [2024-11-25 00:50:44] [0.3.48] [ERROR] xiaomusic.py:259: /root/.mi.token file not exist
2024/11/25 0:50:44  Exception: Error https://api2.mina.mi.com/admin/v2/device_list?master=0&requestId=app_ios_: Login failed
2024/11/25 0:50:44      raise Exception(f"Error {url}: {resp}")
2024/11/25 0:50:44    File "/app/.venv/lib/python3.10/site-packages/miservice/miaccount.py", line 150, in mi_request
2024/11/25 0:50:44      return await self.account.mi_request(
2024/11/25 0:50:44    File "/app/.venv/lib/python3.10/site-packages/miservice/minaservice.py", line 49, in mina_request
2024/11/25 0:50:44      result = await self.mina_request("/admin/v2/device_list?master=" + str(master))
2024/11/25 0:50:44    File "/app/.venv/lib/python3.10/site-packages/miservice/minaservice.py", line 54, in device_list
2024/11/25 0:50:44      hardware_data = await self.mina_service.device_list()
2024/11/25 0:50:44    File "/app/xiaomusic/xiaomusic.py", line 232, in try_update_device_id
2024/11/25 0:50:44  Traceback (most recent call last):
2024/11/25 0:50:44  [2024-11-25 00:50:44] [0.3.48] [ERROR] xiaomusic.py:251: Execption Error https://api2.mina.mi.com/admin/v2/device_list?master=0&requestId=app_ios_xx: Login failed
2024/11/25 0:50:44  Exception: {'qs': '%3Fsid%3Dmicoapi%26_json%3Dtrue', 'code': 70016, 'description': '登录验证失败', 'securityStatus': 0, '_sign': 'xxx', 'sid': 'micoapi', 'result': 'error', 'captchaUrl': None, 'callback': 'https://api2.mina.mi.com/sts', 'location': '', 'pwd': 0, 'child': 0, 'desc': '登录验证失败'}
2024/11/25 0:50:44      raise Exception(resp)
2024/11/25 0:50:44    File "/app/.venv/lib/python3.10/site-packages/miservice/miaccount.py", line 69, in login

评论 34 - hanxi

请问登录验证失败要怎么定位?小米登录邮箱,还是小米id 都报同样的错。

text
2024/11/25 0:50:44  [2024-11-25 00:50:44] [0.3.48] [ERROR] xiaomusic.py:259: /root/.mi.token file not exist
2024/11/25 0:50:44  Exception: Error https://api2.mina.mi.com/admin/v2/device_list?master=0&requestId=app_ios_: Login failed
2024/11/25 0:50:44      raise Exception(f"Error {url}: {resp}")
2024/11/25 0:50:44    File "/app/.venv/lib/python3.10/site-packages/miservice/miaccount.py", line 150, in mi_request
2024/11/25 0:50:44      return await self.account.mi_request(
2024/11/25 0:50:44    File "/app/.venv/lib/python3.10/site-packages/miservice/minaservice.py", line 49, in mina_request
2024/11/25 0:50:44      result = await self.mina_request("/admin/v2/device_list?master=" + str(master))
2024/11/25 0:50:44    File "/app/.venv/lib/python3.10/site-packages/miservice/minaservice.py", line 54, in device_list
2024/11/25 0:50:44      hardware_data = await self.mina_service.device_list()
2024/11/25 0:50:44    File "/app/xiaomusic/xiaomusic.py", line 232, in try_update_device_id
2024/11/25 0:50:44  Traceback (most recent call last):
2024/11/25 0:50:44  [2024-11-25 00:50:44] [0.3.48] [ERROR] xiaomusic.py:251: Execption Error https://api2.mina.mi.com/admin/v2/device_list?master=0&requestId=app_ios_xx: Login failed
2024/11/25 0:50:44  Exception: {'qs': '%3Fsid%3Dmicoapi%26_json%3Dtrue', 'code': 70016, 'description': '登录验证失败', 'securityStatus': 0, '_sign': 'xxx', 'sid': 'micoapi', 'result': 'error', 'captchaUrl': None, 'callback': 'https://api2.mina.mi.com/sts', 'location': '', 'pwd': 0, 'child': 0, 'desc': '登录验证失败'}
2024/11/25 0:50:44      raise Exception(resp)
2024/11/25 0:50:44    File "/app/.venv/lib/python3.10/site-packages/miservice/miaccount.py", line 69, in login

上面给出了4个办法都试过了吗?局域网登陆mi.com了?

评论 35 - wusemao

设置web访问登录时,账号密码设置完之后登不进去了,账号名称用的中文的可以么

评论 36 - hanxi

设置web访问登录时,账号密码设置完之后登不进去了,账号名称用的中文的可以么

不确定是否可以,你可以考虑setting.json里的内容,不行就修改再重启。

评论 37 - quanmao

运行后会在音乐目录下生成一个tmp文件夹,如何指定路径,因为还有其应用访问音乐路径,不希望其识别tmp目录下的音乐。

评论 38 - hanxi

运行后会在音乐目录下生成一个tmp文件夹,如何指定路径,因为还有其应用访问音乐路径,不希望其识别tmp目录下的音乐。

忽略目录(逗号分割) 改成 `@eaDir,tmp` 即可。

评论 39 - quanmao

运行后会在音乐目录下生成一个tmp文件夹,如何指定路径,因为还有其应用访问音乐路径,不希望其识别tmp目录下的音乐。

忽略目录(逗号分割) 改成 @eaDir,tmp 即可。

抱歉,是我没有说清楚,是运行xiaomusic后会在音乐路径下生成tmp文件夹, 但我同时还在用navidrome,也会访问音乐目录,他会把tmp目录下的歌曲也扫描进去,所以想移动tmp目录。 navidrome没找到在哪里可以设置,忽略这个文件夹

评论 40 - hanxi

运行后会在音乐目录下生成一个tmp文件夹,如何指定路径,因为还有其应用访问音乐路径,不希望其识别tmp目录下的音乐。

忽略目录(逗号分割) 改成 @eaDir,tmp 即可。

抱歉,是我没有说清楚,是运行xiaomusic后会在音乐路径下生成tmp文件夹, 但我同时还在用navidrome,也会访问音乐目录,他会把tmp目录下的歌曲也扫描进去,所以想移动tmp目录。 navidrome没找到在哪里可以设置,忽略这个文件夹

提个新 issue 吧,有空加下配置项。

评论 41 - CallEdison

问题一:能进控制面板,进不了设置页面,容器没有log生成,我昨天已经设置好了,现在功能能正常使用,但是进不了设置页面了问题二:昨天能进的时候发现本地下载目录有歌曲,但是设置里面的全部歌曲里面没有,搜索框搜索又能搜的到。

评论 42 - hanxi

问题一:能进控制面板,进不了设置页面,容器没有log生成,我昨天已经设置好了,现在功能能正常使用,但是进不了设置页面了问题二:昨天能进的时候发现本地下载目录有歌曲,但是设置里面的全部歌曲里面没有,搜索框搜索又能搜的到。

问题一:打不开的地址是哪个? 问题二:可以点击刷新列表按钮试试。

评论 43 - huahua-er

是关闭了网络搜索了吗?现在的搜索只有本地数据没有网络歌曲了?

评论 44 - CallEdison

默认主题有歌曲

pure主题没有歌曲

xmusicPlayer也没有歌曲

 

Edison
@.***

 

------------------ 原始邮件 ------------------
发件人: @.>;
发送时间: 2024年11月30日(星期六) 上午6:26
收件人: @.
>;
抄送: @.>; @.>;
主题: Re: [hanxi/xiaomusic] 💬 FAQ问题集合 (Issue #99)

是关闭了网络搜索了吗?现在的搜索只有本地数据没有网络歌曲了?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: ***@***.***>

评论 45 - hanxi

是关闭了网络搜索了吗?现在的搜索只有本地数据没有网络歌曲了?

等 yt-dlp 修复。

评论 46 - hanxi

默认主题有歌曲 pure主题没有歌曲 xmusicPlayer也没有歌曲   Edison @.***  
…
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2024年11月30日(星期六) 上午6:26 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [hanxi/xiaomusic] 💬 FAQ问题集合 (Issue #99) 是关闭了网络搜索了吗?现在的搜索只有本地数据没有网络歌曲了? — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

需要刷新缓存

评论 47 - like1020

请教一下,本地列表歌单里的歌曲即便设置为全部循环或随机播放,依然是不断地单曲循环,只能自己手动点下一首,请问是什么情况?

评论 48 - tchgtr

请问网络搜索功能修复了吗?感谢!

评论 49 - hanxi

请问网络搜索功能修复了吗?感谢!

修复了。

评论 50 - tchgtr

请问网络搜索功能修复了吗?感谢!

修复了。

我已经更新到最新版0.3.55,音箱是LX04触屏音箱,但是使用指令对小爱说“播放歌曲。。。“还是通过音箱绑定的QQ音乐播放,解绑了QQ音乐账号,就会提示先让我绑定账号(包括播放本地歌曲指令),感觉音箱还没跟docker连接上(已经重启过容器)。但是通过8090端口进入后台,搜索歌曲,播放,调节声音大小,单曲、随机所有的功能都可以通过按键实现,唯独不能通过语音跟小爱对话播放我指定的内容,请问这个是什么问题,感谢!

评论 51 - hanxi

请问网络搜索功能修复了吗?感谢!

修复了。

我已经更新到最新版0.3.55,音箱是LX04触屏音箱,但是使用指令对小爱说“播放歌曲。。。“还是通过音箱绑定的QQ音乐播放,解绑了QQ音乐账号,就会提示先让我绑定账号(包括播放本地歌曲指令),感觉音箱还没跟docker连接上(已经重启过容器)。但是通过8090端口进入后台,搜索歌曲,播放,调节声音大小,单曲、随机所有的功能都可以通过按键实现,唯独不能通过语音跟小爱对话播放我指定的内容,请问这个是什么问题,感谢!

贴下你的 setting.json 文件看看吧,把里面的账号密码删除。

评论 52 - tchgtr

请问网络搜索功能修复了吗?感谢!

修复了。

我已经更新到最新版0.3.55,音箱是LX04触屏音箱,但是使用指令对小爱说“播放歌曲。。。“还是通过音箱绑定的QQ音乐播放,解绑了QQ音乐账号,就会提示先让我绑定账号(包括播放本地歌曲指令),感觉音箱还没跟docker连接上(已经重启过容器)。但是通过8090端口进入后台,搜索歌曲,播放,调节声音大小,单曲、随机所有的功能都可以通过按键实现,唯独不能通过语音跟小爱对话播放我指定的内容,请问这个是什么问题,感谢!

贴下你的 setting.json 文件看看吧,把里面的账号密码删除。

{
"account": "",
"password": "",
"mi_did": "603807070",
"miio_tts_command": "",
"cookie": "",
"verbose": false,
"music_path": "music",
"temp_path": "music/tmp",
"download_path": "music/download",
"conf_path": "conf",
"cache_dir": "cache",
"hostname": "192.168.31.159",
"port": 8090,
"public_port": 0,
"proxy": "",
"search_prefix": "bilisearch:",
"ffmpeg_location": "./ffmpeg/bin",
"active_cmd": "play,set_play_type_rnd,playlocal,play_music_list,play_music_list_index,stop_after_minute,stop",
"exclude_dirs": "@eaDir,tmp",
"music_path_depth": 10,
"disable_httpauth": true,
"httpauth_username": "",
"httpauth_password": "",
"music_list_url": "",
"music_list_json": "",
"custom_play_list_json": "",
"disable_download": false,
"key_word_dict": {
"下一首": "play_next",
"上一首": "play_prev",
"单曲循环": "set_play_type_one",
"全部循环": "set_play_type_all",
"随机播放": "set_play_type_rnd",
"单曲播放": "set_play_type_sin",
"顺序播放": "set_play_type_seq",
"分钟后关机": "stop_after_minute",
"刷新列表": "gen_music_list",
"加入收藏": "add_to_favorites",
"收藏歌曲": "add_to_favorites",
"取消收藏": "del_from_favorites",
"播放列表第": "play_music_list_index",
"播放本地歌曲": "playlocal",
"本地播放歌曲": "playlocal",
"播放歌曲": "play",
"放歌曲": "play",
"关机": "stop",
"暂停": "stop",
"停止": "stop",
"停止播放": "stop",
"播放列表": "play_music_list",
"播放歌单": "play_music_list",
"测试自定义口令": "exec#code1("hello")",
"测试链接": "exec#httpget("https://github.com/hanxi/xiaomusic\")"
},
"key_match_order": [
"分钟后关机",
"下一首",
"上一首",
"单曲循环",
"全部循环",
"随机播放",
"单曲播放",
"顺序播放",
"关机",
"刷新列表",
"播放列表第",
"播放列表",
"加入收藏",
"收藏歌曲",
"取消收藏",
"播放本地歌曲",
"本地播放歌曲",
"播放歌曲",
"放歌曲",
"暂停",
"停止",
"停止播放",
"播放歌单",
"测试自定义口令",
"测试链接"
],
"use_music_api": false,
"use_music_audio_id": "1582971365183456177",
"use_music_id": "355454500",
"log_file": "xiaomusic.log.txt",
"fuzzy_match_cutoff": 0.6,
"enable_fuzzy_match": true,
"stop_tts_msg": "收到,再见",
"enable_config_example": false,
"keywords_playlocal": "播放本地歌曲,本地播放歌曲",
"keywords_play": "播放歌曲,放歌曲",
"keywords_stop": "关机,暂停,停止,停止播放",
"keywords_playlist": "播放列表,播放歌单",
"user_key_word_dict": {
"测试自定义口令": "exec#code1("hello")",
"测试链接": "exec#httpget("https://github.com/hanxi/xiaomusic\")"
},
"enable_force_stop": false,
"devices": {
"603807070": {
"did": "603807070",
"device_id": "60b8f875-4101-416a-9278-4d4170929b4d",
"hardware": "LX04",
"name": "小爱触屏音箱",
"play_type": 1,
"cur_music": "七里香",
"cur_playlist": "临时搜索列表"
}
},
"group_list": "",
"remove_id3tag": false,
"convert_to_mp3": false,
"delay_sec": 3,
"continue_play": false,
"pull_ask_sec": 1,
"crontab_json": "",
"enable_yt_dlp_cookies": false,
"get_ask_by_mina": true,
"play_type_one_tts_msg": "已经设置为单曲循环",
"play_type_all_tts_msg": "已经设置为全部循环",
"play_type_rnd_tts_msg": "已经设置为随机播放",
"play_type_sin_tts_msg": "已经设置为单曲播放",
"play_type_seq_tts_msg": "已经设置为顺序播放",
"recently_added_playlist_len": 50

}

评论 53 - hanxi

get_ask_by_mina 【特殊型号获取对话记录】这个需要设置为 false

评论 54 - tchgtr

get_ask_by_mina 【特殊型号获取对话记录】这个需要设置为 false

已经重新设置并重启容器,尝试还是不行,会不会是这个触屏音箱不支持?

评论 55 - tchgtr

get_ask_by_mina 【特殊型号获取对话记录】这个需要设置为 false

已经重新设置并重启容器,尝试还是不行,会不会是这个触屏音箱不支持?

或者是在创建容器的时候,我的小米账号填写了我的手机号码,应该需要填写实际的小米账号?因为手机号码对应的小米账号,和输入对应的密码,都是可以登陆的,但是我不知道有什么区别,就把手机号码输入进去了

评论 56 - tchgtr

get_ask_by_mina 【特殊型号获取对话记录】这个需要设置为 false

已经重新设置并重启容器,尝试还是不行,会不会是这个触屏音箱不支持?

或者是在创建容器的时候,我的小米账号填写了我的手机号码,应该需要填写实际的小米账号?因为手机号码对应的小米账号,和输入对应的密码,都是可以登陆的,但是我不知道有什么区别,就把手机号码输入进去了

我重新创建容器,问题解决了,主要是两个地方改变了,一个是上面的小米账号的问题,另外一个是关于conf和music这两个文件夹,这次我都把他们放在/container/xiaomusic下,即/container/xiaomusic/conf(music),分别对应两个容器和主机app/conf(music),问题就解决了。之前我是分开在两个文件夹的。

评论 57 - tianting123

0 B的APE文件, 建议直接跳过播放

评论 58 - oklrc

新人请教:使用DOCKER镜像 或者 composer安装 如何升级到最新版本呢?是删除镜像再重新拉取吗

评论 59 - hanxi

新人请教:使用DOCKER镜像 或者 composer安装 如何升级到最新版本呢?是删除镜像再重新拉取吗

text
docker compose pull
docker compose up -d

评论 60 - oklrc

更新到最新版后,找不到小爱同学了

日志:
[2024-12-14 11:34:54] [0.3.57] [ERROR] xiaomusic.py:1283: Execption 'NoneType' object has no attribute 'device_list'
Traceback (most recent call last):
File "/app/xiaomusic/xiaomusic.py", line 1281, in getalldevices
device_list = await self.mina_service.device_list()
AttributeError: 'NoneType' object has no attribute 'device_list'
[2024-12-14 11:34:54] [0.3.57] [INFO] httpserver.py:246: getsetting device_list: []
[2024-12-14 11:34:54] [0.3.57] [INFO] httpserver.py:246: getsetting device_list: []
[2024-12-14 11:34:54] [0.3.57] [INFO] httpserver.py:246: getsetting device_list: []


评论 61 - hanxi

更新到最新版后,找不到小爱同学了

日志: [2024-12-14 11:34:54] [0.3.57] [ERROR] xiaomusic.py:1283: Execption 'NoneType' object has no attribute 'device_list' Traceback (most recent call last): File "/app/xiaomusic/xiaomusic.py", line 1281, in getalldevices device_list = await self.mina_service.device_list() AttributeError: 'NoneType' object has no attribute 'device_list' [2024-12-14 11:34:54] [0.3.57] [INFO] httpserver.py:246: getsetting device_list: [] [2024-12-14 11:34:54] [0.3.57] [INFO] httpserver.py:246: getsetting device_list: [] [2024-12-14 11:34:54] [0.3.57] [INFO] httpserver.py:246: getsetting device_list: []

登陆掉了吧,重新登陆一下。

评论 62 - sprout-cooler

登录后,显示无设备;上面提到的方法都试过了。没有用,日志显示
File "/app/xiaomusic/xiaomusic.py", line 1270, in reinit

text
await self.init_all_data(self.session)

AttributeError: 'XiaoMusic' object has no attribute 'session'

评论 63 - fu-yuming

今天更新后,找不到设备了。重新输账号密码保存了,怎么都不行。重新部署也找不到。

评论 64 - zhiquanchi

今天更新后,找不到设备了。重新输账号密码保存了,怎么都不行。重新部署也找不到。

用默认主题试下

评论 65 - hanxi

可以更新试试。

评论 66 - lijichao2018

我点保存,网页显示[object Object],不知道啥情况

评论 67 - hanxi

我点保存,网页显示[object Object],不知道啥情况

0.3.58版本吗?

评论 68 - lijichao2018

0.3.57

 

该邮件从移动设备发送

 

------------------ 原始邮件 ------------------
发件人: @.>;
发送时间: 2024年12月15日(星期天) 中午12:17
收件人: @.
>;
抄送: @.>; @.>;
主题: Re: [hanxi/xiaomusic] 💬 FAQ问题集合 (Issue #99)

我点保存,网页显示[object Object],不知道啥情况

0.3.58版本吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: ***@***.***>

评论 69 - hanxi

那你更新吧。58应该是修复了。

评论 70 - oklrc

那你更新吧。58应该是修复了。

新版本确实好了,我昨天遇到的问题和楼上是一样的

评论 71 - lijichao2018

绿联的NAS怎么更新到58版本啊,没找到,要用口令吗?

评论 72 - zjzj52

容器一直重启,网页后台也进不去

评论 73 - hanxi

容器一直重启,网页后台也进不去

这种情况有日志吗?可能是端口冲突?

评论 74 - BladPit

不知道有没有用unraid系统NAS的朋友?
我这里使用docker安装xiaomusic有一个很奇怪的现象,不知道有没有大佬能够解惑:

我的unraid系统版本是6.8.2,通过docker安装后发现,如果没有开启特权模式(Privileged),那么(从内网)访问webGUI的时候,在首页选择了主题之后会直接网页报错【Internal Server Error】+显示空白页面,查看docker运行日志,是正常的,没有什么相关的报错:
`2025-01-04 00:29:06,055 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.

2025-01-04 00:29:06,064 INFO RPC interface 'supervisor' initialized

2025-01-04 00:29:06,064 CRIT Server 'unix_http_server' running without any HTTP authentication checking

2025-01-04 00:29:06,065 INFO supervisord started with pid 1

2025-01-04 00:29:07,068 INFO spawned: 'xiaomusic' with pid 6`

然而如果开启特权模式运行docker,则会完全正常,webGUI能够正常访问。感觉非常疑惑,不知道是什么原因。 这个问题之前在安装docker版迅雷的时候有类似情况,必须开启特权模式迅雷的docker才能启动,但迅雷的docker应该是所有人都如此,但xiaomusic的这种情况,我询问过其他unraid群友,似乎没有遇到该问题。

评论 75 - FoolishWiser

容器一直重启,日志一直循环一段
Unlinking stale socket /var/run/supervisor.sock

/usr/lib/python3/dist-packages/supervisor/options.py:474: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.

self.warnings.warn(

Unlinking stale socket /var/run/supervisor.sock

评论 76 - hanxi

@ZYT1601 试试看这个方法: /issues/348.html#issuecomment-2568722472

评论 77 - FoolishWiser

可以了,飞牛把容器设置里面的命令全部删掉也是一个道理


评论 78 - FoolishWiser

可以了,飞牛把容器设置里面的命令全部删掉也是一个道理

好像不能一劳永逸


评论 79 - hanxi

可以了,飞牛把容器设置里面的命令全部删掉也是一个道理

好像不能一劳永逸

等后续版本吧。

评论 80 - Ivysaur-91

有个问题请教下,建立容器的时候指定了nas本地的位置映射到容器的音乐路径,但是在nas路径防止文件无法被识别出来。

直接在xiaomusic里面下载音乐是可以播放的,进入到docker里面的路径也是有音乐文件的

建容器的命令如下:
docker run -p 58090:8090 -e XIAOMUSIC_PUBLIC_PORT=58090 -v /Public/Music/[[xiaomusic]]:/app/music -v /Public/Music/[[xiaomusic]]:/app/conf m.daocloud.io/docker.io/hanxi/xiaomusic


评论 81 - hanxi

有个问题请教下,建立容器的时候指定了nas本地的位置映射到容器的音乐路径,但是在nas路径防止文件无法被识别出来。 直接在xiaomusic里面下载音乐是可以播放的,进入到docker里面的路径也是有音乐文件的

建容器的命令如下: docker run -p 58090:8090 -e XIAOMUSIC_PUBLIC_PORT=58090 -v /Public/Music/[[xiaomusic]]:/app/music -v /Public/Music/[[xiaomusic]]:/app/conf m.daocloud.io/docker.io/hanxi/xiaomusic

为啥路径要加方括号?另外两个路径不能重复。

评论 82 - Ivysaur-91

有个问题请教下,建立容器的时候指定了nas本地的位置映射到容器的音乐路径,但是在nas路径防止文件无法被识别出来。 直接在xiaomusic里面下载音乐是可以播放的,进入到docker里面的路径也是有音乐文件的
建容器的命令如下: docker run -p 58090:8090 -e XIAOMUSIC_PUBLIC_PORT=58090 -v /Public/Music/[[xiaomusic]]:/app/music -v /Public/Music/[[xiaomusic]]:/app/conf m.daocloud.io/docker.io/hanxi/xiaomusic

为啥路径要加方括号?另外两个路径不能重复。

方括号是为了让文件夹在第一位,重新安装容器,路径不一样后还是一样的问题:

语句: docker run -p 58090:8090 -e XIAOMUSIC_PUBLIC_PORT=58090 -v /Public/Music/xiaomusic/music:/app/music -v /Public/Music/xiaomusic/config:/app/conf m.daocloud.io/docker.io/hanxi/xiaomusic

评论 83 - Ivysaur-91

有个问题请教下,建立容器的时候指定了nas本地的位置映射到容器的音乐路径,但是在nas路径防止文件无法被识别出来。 直接在xiaomusic里面下载音乐是可以播放的,进入到docker里面的路径也是有音乐文件的
建容器的命令如下: docker run -p 58090:8090 -e XIAOMUSIC_PUBLIC_PORT=58090 -v /Public/Music/[[xiaomusic]]:/app/music -v /Public/Music/[[xiaomusic]]:/app/conf m.daocloud.io/docker.io/hanxi/xiaomusic

为啥路径要加方括号?另外两个路径不能重复。

方括号是为了让文件夹在第一位,重新安装容器,路径不一样后还是一样的问题:

语句: docker run -p 58090:8090 -e XIAOMUSIC_PUBLIC_PORT=58090 -v /Public/Music/xiaomusic/music:/app/music -v /Public/Music/xiaomusic/config:/app/conf m.daocloud.io/docker.io/hanxi/xiaomusic

yi以为是文件夹关联失败了,但是进入容器看应该是成功的

评论 84 - kern111

本地歌曲如何创建歌单?我的歌曲全在/volumeUSB1/usbshare/Music/这个目录下,想手动设置类别播放

评论 85 - hanxi

本地歌曲如何创建歌单?我的歌曲全在/volumeUSB1/usbshare/Music/这个目录下,想手动设置类别播放

目前的方法就是自己整理分类好目录,或者去小程序里建歌单。

评论 86 - wjcroom

说, 加入收藏, 或 收藏歌曲 指令. 小爱说没有播放歌曲, 当前肯定在播放. 但是无法执行这个操作

评论 87 - hanxi

说, 加入收藏, 或 收藏歌曲 指令. 小爱说没有播放歌曲, 当前肯定在播放. 但是无法执行这个操作

那个是小爱自带的回答,没影响。

评论 88 - wjcroom

说, 加入收藏, 或 收藏歌曲 指令. 小爱说没有播放歌曲, 当前肯定在播放. 但是无法执行这个操作

那个是小爱自带的回答,没影响。

但是无法起到效果,收藏夹不会加入当前歌曲. 只能在web端,点一下收藏,才能加入.
语音命令,都是忽略的, setting.json能看到,这两个命令,定义
"加入收藏": "add_to_favorites",
"收藏歌曲": "add_to_favorites",
后面需要在附加歌名吗.

ZZZZZZ最后发现是没刷新页面, 收藏没刷新出来. 语音命令是有效的.

评论 89 - alvin1234579

網頁播放正常,但是語音口令無法正常搜尋撥放本地音樂,還是會撥QQ音樂試聽版.偶而會亂撥不相干的歌,docker和小米音箱都重啟過了

[xiaomusic (13).txt](https://github.com/user-attachments/files/18867950/xiaomusic.13.txt)

评论 90 - hanxi

@alvin1234579 看日志是没啥问题的,多试几次,用播放歌曲开头。

评论 91 - alvin1234579

抱歉剛剛有語音撥放歌曲成功但是撥幾秒就停止了,如果搜尋不到本地音樂不是應該yt-dlp下載嗎,一直會跳QQ音樂試聽版

xiaomusic (16).txt


评论 92 - hanxi

@alvin1234579 下载歌曲是需要时间的,看日志是在下载中了。QQ音乐试听只是会语音提示,下载成功后会播放下载的歌曲的。

评论 93 - alvin1234579

抱歉剛剛有語音撥放歌曲成功但是撥幾秒就停止了,如果搜尋不到本地音樂不是應該yt-dlp下載嗎,一直會跳QQ音樂試聽版

xiaomusic (16).txt

已經找到原因了語音搜索會用簡體搜尋,曲名如果是繁體會搜尋不到,還有數字會用中文搜尋像是說2024會搜尋二零二四的檔名所以2024搜尋不到,這有修正的方法嗎

评论 94 - hanxi

@alvin1234579 你提个issue吧,算是个bug吧,应该处理了简体和繁体才对。

评论 95 - laolihb

我的安装运行都很顺利,但目前只能播放本地(nas音乐文件夹)的音乐,本地没有的无法播放,可以看到歌词滚动和“下载中”的语音提示,但之后就静默无声,下载文件夹空白,折腾了很多次没有解决,实在弄不好了,请楼主指导一哈,谢谢啦。 (我平时无法登录这里,只能借用朋友的饿饭临时用一哈)

评论 96 - hanxi

我的安装运行都很顺利,但目前只能播放本地(nas音乐文件夹)的音乐,本地没有的无法播放,可以看到歌词滚动和“下载中”的语音提示,但之后就静默无声,下载文件夹空白,折腾了很多次没有解决,实在弄不好了,请楼主指导一哈,谢谢啦。 (我平时无法登录这里,只能借用朋友的饿饭临时用一哈)

可以加微信群或者QQ群。

评论 97 - wjcroom

@hanxi 我做了一个 自定义语音播放nas电影的HA自动化。 怎么样 取消小爱不能执行的操作。这种默认回答呢。 我的指令搜电视* 。虽然后台执行了。 但是小爱的默认回复总是出现。 个人训练,无法通配符

评论 98 - hanxi

@hanxi 我做了一个 自定义语音播放nas电影的HA自动化。 怎么样 取消小爱不能执行的操作。这种默认回答呢。 我的指令搜电视* 。虽然后台执行了。 但是小爱的默认回复总是出现。 个人训练,无法通配符

没啥办法,有些型号就是无法打断小爱说话。

评论 99 - wjcroom

@hanxi 我做了一个 自定义语音播放nas电影的HA自动化。 怎么样 取消小爱不能执行的操作。这种默认回答呢。 我的指令搜电视* 。虽然后台执行了。 但是小爱的默认回复总是出现。 个人训练,无法通配符

没啥办法,有些型号就是无法打断小爱说话。

我也用搜索播放,这样类似的指令呢? 它就不会随便带来干涉。 只是这和 xiaomusic重合了啊。 还有类似的这样开始的吗。

评论 100 - eleght2000

能不能播放网络磁盘的歌曲 比如FTP 或者SMB共享的磁盘内的歌曲

评论 101 - hanxi

能不能播放网络磁盘的歌曲 比如FTP 或者SMB共享的磁盘内的歌曲

可以用rclone挂载

评论 102 - KagurazakaAsahi

作者你好,我出现了上述“本机有声音,小爱音箱没声音,请问什么原因?”这个问题,按顺序排查,默认测试链接正常,容器日志中音乐链接也正常播放,但测试链接中如果填写我的容器日志中音乐链接,也就是本地音源就无法播放,换了十几个mp3音源,均无法正常播放,小爱总说网络错误
`[2025-04-26 00:24:09] [0.3.78] [INFO] analytics.py:105: umami Status: 400

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[2025-04-26 00:25:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3

[2025-04-26 00:25:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48064 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48064 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39316 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39332 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39334 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39316 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[2025-04-26 00:26:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3

[2025-04-26 00:26:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39332 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39354 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39344 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39370 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[2025-04-26 00:27:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3

[2025-04-26 00:27:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51676 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200`

评论 103 - hanxi

作者你好,我出现了上述“本机有声音,小爱音箱没声音,请问什么原因?”这个问题,按顺序排查,默认测试链接正常,容器日志中音乐链接也正常播放,但测试链接中如果填写我的容器日志中音乐链接,也就是本地音源就无法播放,换了十几个mp3音源,均无法正常播放,小爱总说网络错误 `[2025-04-26 00:24:09] [0.3.78] [INFO] analytics.py:105: umami Status: 400

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[2025-04-26 00:25:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3

[2025-04-26 00:25:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48064 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:25:03] [0.3.78] [INFO] 172.17.0.1:48064 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39316 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39332 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39334 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39316 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[2025-04-26 00:26:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3

[2025-04-26 00:26:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39332 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39354 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39344 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:26:03] [0.3.78] [INFO] 172.17.0.1:39370 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[2025-04-26 00:27:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3

[2025-04-26 00:27:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51676 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

[00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200`

你部署在哪里的?是不是防火墙的问题?

评论 104 - KagurazakaAsahi

作者你好,我出现了上述“本机有声音,小爱音箱没声音,请问什么原因?”这个问题,按顺序排查,默认测试链接正常,容器日志中音乐链接也正常播放,但测试链接中如果填写我的容器日志中音乐链接,也就是本地音源就无法播放,换了十几个mp3音源,均无法正常播放,小爱总说网络错误 [2025-04-26 00:24:09] [0.3.78] [INFO] analytics.py:105: umami Status: 400 [00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:25:03] [0.3.78] [INFO] 172.17.0.1:48048 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [2025-04-26 00:25:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3 [2025-04-26 00:25:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3 [00:25:03] [0.3.78] [INFO] 172.17.0.1:48064 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200 [00:25:03] [0.3.78] [INFO] 172.17.0.1:48054 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:25:03] [0.3.78] [INFO] 172.17.0.1:48064 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:26:03] [0.3.78] [INFO] 172.17.0.1:39316 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:26:03] [0.3.78] [INFO] 172.17.0.1:39332 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:26:03] [0.3.78] [INFO] 172.17.0.1:39334 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:26:03] [0.3.78] [INFO] 172.17.0.1:39316 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [2025-04-26 00:26:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3 [2025-04-26 00:26:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3 [00:26:03] [0.3.78] [INFO] 172.17.0.1:39332 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200 [00:26:03] [0.3.78] [INFO] 172.17.0.1:39354 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:26:03] [0.3.78] [INFO] 172.17.0.1:39344 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:26:03] [0.3.78] [INFO] 172.17.0.1:39370 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:27:03] [0.3.78] [INFO] 172.17.0.1:51656 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [2025-04-26 00:27:03] [0.3.78] [INFO] xiaomusic.py:430: try get_filename. filename:music/Kalafina - oblivious.mp3 [2025-04-26 00:27:03] [0.3.78] [INFO] xiaomusic.py:536: get_music_url local music. name:Kalafina - oblivious, filename:Kalafina - oblivious.mp3 [00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /musicinfo?name=Kalafina%20-%20oblivious&musictag=true HTTP/1.1" 200 [00:27:03] [0.3.78] [INFO] 172.17.0.1:51676 - "GET /playingmusic?did=725574603 HTTP/1.1" 200 [00:27:03] [0.3.78] [INFO] 172.17.0.1:51664 - "GET /playingmusic?did=725574603 HTTP/1.1" 200

你部署在哪里的?是不是防火墙的问题?

部署在我台式机上,关闭了防火墙,台式机与小爱音箱连接了同一个热点

评论 105 - ocean412257013

请教 在build的时候报错,是哪个意思


评论 106 - hanxi

请教 在build的时候报错,是哪个意思

换个国内的镜像。

评论 107 - quickflash2

我用DOCKER布署的,语音可以正常播放本地音乐,但是说“本地搜索播放”始终无法执行,都是小爱本身的的语音提示,网页里的搜索和下载是正常使用的,想问下怎么解决

评论 108 - hanxi

我用DOCKER布署的,语音可以正常播放本地音乐,但是说“本地搜索播放”始终无法执行,都是小爱本身的的语音提示,网页里的搜索和下载是正常使用的,想问下怎么解决

播放歌曲口令是否正常?

评论 109 - quickflash2

我用DOCKER布署的,语音可以正常播放本地音乐,但是说“本地搜索播放”始终无法执行,都是小爱本身的的语音提示,网页里的搜索和下载是正常使用的,想问下怎么解决

播放歌曲口令是否正常?

播放口令正常,使用网页版搜索功能正常,就是“本地搜索播放”和“小爱搜索播放”语音不能使用

评论 110 - wtyeoh

我在设置里勾选了两台小爱音箱,叫任意一台播放的时候两台都会一起播放,是不是只能勾选一个?

评论 111 - quickflash2

我用DOCKER布署的,语音可以正常播放本地音乐,但是说“本地搜索播放”始终无法执行,都是小爱本身的的语音提示,网页里的搜索和下载是正常使用的,想问下怎么解决

播放歌曲口令是否正常?

楼主,我问题解决了,命令调用里不知道怎么回事这个搜索播放的命令没有了,重新加上就可以了,谢谢大佬

评论 112 - 22555642

你好,我在群辉DOCKER上部署运行后,一直打不开设置页面,点开日志里面写的是这个,请问要怎么办呢?

2025/07/18 17:15:55 stdout [2025-07-18 17:15:54] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:55 stdout [2025-07-18 17:15:54] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:55 stdout ==> /app/xiaomusic.log.txt <==
2025/07/18 17:15:55 stdout
2025/07/18 17:15:55 stderr tail: /app/xiaomusic.log.txt has been replaced; following end of new file
2025/07/18 17:15:52 stdout 2025-07-18 17:15:51,292 INFO spawned: 'xiaomusic' with pid 21
2025/07/18 17:15:48 stdout 2025-07-18 17:15:47,284 WARN exited: xiaomusic (exit status 1; not expected)
2025/07/18 17:15:48 stdout ==> /app/supervisord.log <==
2025/07/18 17:15:48 stdout
2025/07/18 17:15:43 stderr tail: /app/xiaomusic.log.txt has been replaced; following end of new file
2025/07/18 17:15:43 stdout [2025-07-18 17:15:42] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:43 stdout [2025-07-18 17:15:42] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:43 stdout ==> /app/xiaomusic.log.txt <==
2025/07/18 17:15:43 stdout
2025/07/18 17:15:40 stdout 2025-07-18 17:15:39,479 INFO spawned: 'xiaomusic' with pid 18
2025/07/18 17:15:37 stdout 2025-07-18 17:15:36,473 WARN exited: xiaomusic (exit status 1; not expected)
2025/07/18 17:15:37 stdout ==> /app/supervisord.log <==
2025/07/18 17:15:37 stdout
2025/07/18 17:15:33 stdout [2025-07-18 17:15:32] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:33 stdout [2025-07-18 17:15:32] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:33 stdout ==> /app/xiaomusic.log.txt <==

评论 113 - daheiniu851

播放歌曲时一会停止,一会又继续播放 ,怎么办

评论 114 - hanxi

播放歌曲时一会停止,一会又继续播放 ,怎么办

是不是歌曲文件太大了?

评论 115 - 15700085709

nalytics.py:111: Execption Cannot connect to host umami.hanxi.cc:443 ssl:default [Connection reset by peer] 请问这个是什么问题

评论 116 - daheiniu851

弄好了 再群晖里安装不可以  换飞牛正常了  

---原始邮件---
发件人: @.>
发送时间: 2025年8月13日(周三) 中午1:49
收件人: @.
>;
抄送: @.@.>;
主题: Re: [hanxi/xiaomusic] 💬 FAQ问题集合 (Issue #99)

15700085709 left a comment (hanxi/xiaomusic#99)

nalytics.py:111: Execption Cannot connect to host umami.hanxi.cc:443 ssl:default [Connection reset by peer]
请问这个是什么问题

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: ***@***.***>

评论 117 - 467815891a

Bilibili现在也需要cookies,建议作者大大改一下改一下说明。按照youtube那样上传cookies就行了

评论 118 - leonardwillian13-qwe

在绿联nas上部署了下,测试连接可以播放,但语言指令不能执行,说了指令后就一直卡在那,本地音乐也播放不了,请问这个问题有人碰到过吗

[xiaomusic.txt](https://github.com/user-attachments/files/22310884/xiaomusic.txt)

评论 119 - alex13by

怎么语音控制播放子目录中的歌曲?

评论 120 - hanxi

怎么语音控制播放子目录中的歌曲?

播放歌曲加上文件名就行

评论 121 - alex13by

怎么语音控制播放子目录中的歌曲?

播放歌曲加上文件名就行

我的意思是语音控制播放子目录中歌,并且只在这个目录中循环,UI控制选目录播放那种效果,比如轻音乐的子目录,睡觉时直接控制只循环这些

评论 122 - hanxi

怎么语音控制播放子目录中的歌曲?

播放歌曲加上文件名就行

我的意思是语音控制播放子目录中歌,并且只在这个目录中循环,UI控制选目录播放那种效果,比如轻音乐的子目录,睡觉时直接控制只循环这些

播放歌单加上目录名

评论 123 - liaowuyichu

未匹配到指令怎么解决啊

评论 124 - hanxi

@liaowuyichu 口令说错了

评论 125 - liaowuyichu

@hanxi 如果要特定某人的歌曲要怎么说呢,我刚刚输入的是播放黄龄歌曲牵丝戏

评论 126 - liaowuyichu

请问:批量下载歌曲,每次只能下载21首歌,怎么调整这个数量

评论 127 - cnchef

最新版镜像在面板填写小米账号密码无法获取设备 需要重启才可以看到设备,我的小米S12A 使用语音口令无效不知道什么原因

评论 128 - wbbaxb

请问:客户端考虑开发手机app吗?web操作不太方便。

评论 129 - hanxi

请问:客户端考虑开发手机app吗?web操作不太方便。

微信群里有人开发了个手机app。

评论 130 - jszx55

请问:客户端考虑开发手机app吗?web操作不太方便。

微信群里有人开发了个手机app。

大佬可以进个群吗?

评论 131 - lucklyday2023

L06A 测试-播放文字无效,web界面和语音控制,无提示音

评论 132 - Tomasno1

所有设置都对的,但是始终无法获取到设备列表。点击保存后,在滑动上去又是什么都没有。搞了5天,终于搞好了 我一个小白 从刷N1盒子到部署容器,再到排除故障,定位故障。问了kimi5天。终于定位到问题所在,我的小米账号有问题,不知道为啥小米始终不给我通过。今天kimi提示让我换个账号 重新绑定小爱,我K 直接一次就成了。如果有和我一样的情况 也可以换一个账号试一试。

评论 133 - dsbajyp

为什么我的没有显示设备?

在手机米家APP退出登陆重新用人脸登陆就可用弄

评论 134 - zhzyjb

1、本地播放没问题,测试歌曲小米音箱也可以播放; 2、选择小米音箱播放时,提示"播放失败请检查网络或换一个试试吧"; 3、都在同一个网段; 还是存在以上问题,麻烦不忙的时候回复一下吧,谢谢

评论 135 - zhzyjb


评论 136 - hanxi

1、本地播放没问题,测试歌曲小米音箱也可以播放; 2、选择小米音箱播放时,提示"播放失败请检查网络或换一个试试吧"; 3、都在同一个网段; 还是存在以上问题,麻烦不忙的时候回复一下吧,谢谢

ip端口有没有填对?

评论 137 - zhzyjb

谢谢你,祝你开心每一天……

评论 138 - zhzyjb

我用windows系统安装的docker,IP地址是自动获取的;是不是要修改一下,修改为下面哪个呢

1、电脑的192.168……
2、WSL的172.


评论 139 - zhzyjb

可以了,大佬,我把IP改为电脑的就好了

评论 140 - deepcoldy

专门创建了个小号,把音响共享给小号,想以此做安全隔离,但貌似是不支持共享设备的?这种方式找不到音响设备

评论 141 - zhzyjb

谢谢你,祝你开心每一天……

评论 142 - hanxi

专门创建了个小号,把音响共享给小号,想以此做安全隔离,但貌似是不支持共享设备的?这种方式找不到音响设备

反过来使用,把音箱设备放到小号,分享给大号。

评论 143 - pengpeng221

最新版本0.45解决无法发现音箱问题,又出现无法发现本地音乐库问题,不知道是不是版本问题?

评论 144 - zhzyjb

谢谢你,祝你开心每一天……

评论 145 - vttv88888888

0.45版本提示:未发现可用的小爱设备。日志很多行都是: [0.4.5] [WARNING] conversation.py:200: Request failed with status 400 [0.4.5] [WARNING] conversation.py:224: get_latest_ask_from_xiaoai. All retries failed.

评论 146 - alililala

0.45版本提示:未发现可用的小爱设备。日志很多行都是: [0.4.5] [WARNING] conversation.py:200: Request failed with status 400 [0.4.5] [WARNING] conversation.py:224: get_latest_ask_from_xiaoai. All retries failed.

0.47也是一样

评论 147 - ChaunceyGu

提示 /bin/sh: /usr/bin/supervisord: not found

评论 148 - hanxi

@ChaunceyGu 清空docker镜像缓存,重启系统。

评论 149 - wangzhan333a

总是在0.38版,怎么升级到最新版

评论 150 - turuiheng

1-27日最新版本0.4.22有个UBG,让播放歌手,不会自动创建本地歌曲搜索到的歌曲列表自动播放,上个版本0.4.21都可以完美完成这条命令,比如我本地歌曲文件夹里的歌曲都 刘德华 - 1 刘德华 - 2 刘德华 - 3 刘德华 - 4,就会自动创建临时播放列表,刘德华的歌曲列出来,然后开始自动播放

评论 151 - coco0948

未发现可用的小爱设备,请检查账号密码是否输错,并关闭加速代理或在[小米官网](https://www.mi.com/)登陆过人脸或滑块验证。如仍未解决。请根据[FAQ](/issues/99.html)的内容解决问题。近期经常提示这样?怎么解决

评论 152 - cowcanfly

我也是这样,log里提示登录失败。以前是正常的

评论 153 - Steohen126

我发现w4a格式,日志一直出现这个

[2026-02-11 22:15:31] [0.4.22] [INFO] 192.168.2.1:34358 - "GET /music/%E8%BD%BB%E9%9F%B3%E4%B9%90/%E8%88%92%E7%BC%93%E7%A5%9E%E7%BB%8F%E9%9F%B3%E4%B9%90%F0%9F%8C%BF%E8%B0%83%E8%8A%82%E5%BF%83%E8%84%8F%E5%92%8C%E8%A1%80%E7%AE%A1%E7%9A%84%E6%94%BE%E6%9D%BE%E9%9F%B3%E4%B9%90%EF%BC%8C%E6%94%BE%E6%9D%BE%EF%BC%8C%E8%87%AA%E5%9C%A8.m4a HTTP/1.1" 206

直到结束了才能播放,如果是3-4分钟的还好,大概这个出现10个,但是如果是40多分钟的就很久了

评论 154 - zjs820

我用一个很老的账号可以识别设备L05C,为了安全新注册了一个,结果就识别不到设备了

评论 155 - zhzyjb

谢谢你,祝你开心每一天……

评论 156 - leouid

已通过Docker在NAS上部署成功,有新的版本后要怎么更新??

评论 157 - zhzyjb

谢谢你,祝你开心每一天……

评论 158 - leouid

总是在0.38版,怎么升级到最新版

同问!我也部署在自己的NAS上,现在有新的版本,请问要怎么升级???

评论 159 - github-0xffff

将NAS上xiaomusic路径下的mp3下载到Windows电脑上用potplayer播放,提示【无法获取 音频|视频 信息。(不支持播放加密媒体)】,原存放在该Windows电脑上的同一个mp3正常播放。请问此是否为正常情况?

评论 160 - ygllong

新版本还需要添加一些环境变量吗?如小米账号等?我没有添加,后台也能上,后台有音乐列表,可是点播放没有声音,语音让音箱播放时说不能下载本地音乐,申明问题呢?谢谢

Issue 链接


File: docs/issues/101.md


title: 群晖docker安装 xiaomusic

群晖docker安装 xiaomusic

由于现在群晖已经无法正常下载 docker 里的镜像了,绕了好多弯;现在用 ssh 服务命令拉取镜像来创建容器;

1. ssh 输入账号密码进入群晖

2. 输入 sudo -i 再次输入密码进入 root 权限

3. 输入 docker search xiaomusic来查找到该镜像名;

4. 然后输入 docker pull xiaomusic 试试是否能安装,如果不能;就得在命令前加个代理地址;下面列了一些代理地址可以一个个的试

text
docker.fxxk.dedyn.iodocker.io
registry-docker-hub-latest-9vgc.onrender.com
docker.chenby.cn
dockerproxy.com
hub.uuuadc.top
docker.jsdelivr.fyi
docker.registry.cyou
dockerhub.anzu.vip

我是用的最下面这个成功的

text
docker pull dockerhub.anzu.vip/hanxi/xiaomusic:latest

5. 安装完成后就进入群晖 DOCKER 配置 xiaomusic

  • MI_HARDWARE=型号 前面第4 步骤获取的
  • XIAOMUSIC_SEARCH=搜索方式,我填写的bilisearch: 意思是通过 bilibili 搜索
  • MI_DID=前面第4 步骤获取的
  • MI_USER=小米账号
  • MI_PASS=小米密码
  • XIAOMUSIC_FUZZY_MATCH_CUTOFF=模糊匹配,最小为 0.1 最大为 1,越小越模糊,越大越精准

6. 配置端口

7. 映射路径

评论

评论 1 - kiwi5656

MI_DID=前面第4 步骤获取的,第4步骤在哪?

评论 2 - hanxi

MI_DID=前面第4 步骤获取的,第4步骤在哪?

不用设置 MI_DID

评论 3 - hanxi

国内 docker 镜像

text
docker pull m.daocloud.io/docker.io/hanxi/xiaomusic:latest
docker tag m.daocloud.io/docker.io/hanxi/xiaomusic:latest hanxi/xiaomusic:latest

评论 4 - SenyFish

如果手头上有能科学上网的机器,直接把群辉的代理服务器IP填写成可以科学上网的机器IP+端口,翻墙软件打开允许局域网连接就可以

评论 5 - SmartElec

文档中 docker pull dockerhub.anzu.vip/xiaomusic:latest这句命令写错了
修改为

text
docker pull dockerhub.anzu.vip/hanxi/xiaomusic:latest

评论 6 - hanfz123

你好。为什么我这个地方的文字不是中文的?求解

评论 7 - hanxi

@hanfz123 你是不是屏蔽了谷歌的某些域名?

评论 8 - hanfz123

@hanfz123 你是不是屏蔽了谷歌的某些域名?

不确定,但是我访问谷歌啥的都正常啊

评论 9 - 22555642

你好,我在群辉DOCKER上部署运行后,一直打不开设置页面,点开日志里面写的是这个,请问要怎么办呢?

2025/07/18 17:15:55 stdout [2025-07-18 17:15:54] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:55 stdout [2025-07-18 17:15:54] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:55 stdout ==> /app/xiaomusic.log.txt <==
2025/07/18 17:15:55 stdout
2025/07/18 17:15:55 stderr tail: /app/xiaomusic.log.txt has been replaced; following end of new file
2025/07/18 17:15:52 stdout 2025-07-18 17:15:51,292 INFO spawned: 'xiaomusic' with pid 21
2025/07/18 17:15:48 stdout 2025-07-18 17:15:47,284 WARN exited: xiaomusic (exit status 1; not expected)
2025/07/18 17:15:48 stdout ==> /app/supervisord.log <==
2025/07/18 17:15:48 stdout
2025/07/18 17:15:43 stderr tail: /app/xiaomusic.log.txt has been replaced; following end of new file
2025/07/18 17:15:43 stdout [2025-07-18 17:15:42] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:43 stdout [2025-07-18 17:15:42] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:43 stdout ==> /app/xiaomusic.log.txt <==
2025/07/18 17:15:43 stdout
2025/07/18 17:15:40 stdout 2025-07-18 17:15:39,479 INFO spawned: 'xiaomusic' with pid 18
2025/07/18 17:15:37 stdout 2025-07-18 17:15:36,473 WARN exited: xiaomusic (exit status 1; not expected)
2025/07/18 17:15:37 stdout ==> /app/supervisord.log <==
2025/07/18 17:15:37 stdout
2025/07/18 17:15:33 stdout [2025-07-18 17:15:32] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:33 stdout [2025-07-18 17:15:32] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:33 stdout ==> /app/xiaomusic.log.txt <==

评论 10 - hanxi

你好,我在群辉DOCKER上部署运行后,一直打不开设置页面,点开日志里面写的是这个,请问要怎么办呢?

2025/07/18 17:15:55 stdout [2025-07-18 17:15:54] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:55 stdout [2025-07-18 17:15:54] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:55 stdout ==> /app/xiaomusic.log.txt <==
2025/07/18 17:15:55 stdout  
2025/07/18 17:15:55 stderr tail: /app/xiaomusic.log.txt has been replaced; following end of new file
2025/07/18 17:15:52 stdout 2025-07-18 17:15:51,292 INFO spawned: 'xiaomusic' with pid 21
2025/07/18 17:15:48 stdout 2025-07-18 17:15:47,284 WARN exited: xiaomusic (exit status 1; not expected)
2025/07/18 17:15:48 stdout ==> /app/supervisord.log <==
2025/07/18 17:15:48 stdout  
2025/07/18 17:15:43 stderr tail: /app/xiaomusic.log.txt has been replaced; following end of new file
2025/07/18 17:15:43 stdout [2025-07-18 17:15:42] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:43 stdout [2025-07-18 17:15:42] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:43 stdout ==> /app/xiaomusic.log.txt <==
2025/07/18 17:15:43 stdout  
2025/07/18 17:15:40 stdout 2025-07-18 17:15:39,479 INFO spawned: 'xiaomusic' with pid 18
2025/07/18 17:15:37 stdout 2025-07-18 17:15:36,473 WARN exited: xiaomusic (exit status 1; not expected)
2025/07/18 17:15:37 stdout ==> /app/supervisord.log <==
2025/07/18 17:15:37 stdout  
2025/07/18 17:15:33 stdout [2025-07-18 17:15:32] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:33 stdout [2025-07-18 17:15:32] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:33 stdout ==> /app/xiaomusic.log.txt <==

看不出来为啥

评论 11 - 22555642

我把日志发给您,您可以帮我看看嘛?

------------------ 原始邮件 ------------------
发件人: "hanxi/xiaomusic" @.>;
发送时间: 2025年7月19日(星期六) 凌晨1:31
@.
>;
@.@.>;
主题: Re: [hanxi/xiaomusic] 群晖docker安装 xiaomusic (Issue #101)

hanxi left a comment (hanxi/xiaomusic#101)

你好,我在群辉DOCKER上部署运行后,一直打不开设置页面,点开日志里面写的是这个,请问要怎么办呢?

2025/07/18 17:15:55 stdout [2025-07-18 17:15:54] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:55 stdout [2025-07-18 17:15:54] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:55 stdout ==> /app/xiaomusic.log.txt <==
2025/07/18 17:15:55 stdout  
2025/07/18 17:15:55 stderr tail: /app/xiaomusic.log.txt has been replaced; following end of new file
2025/07/18 17:15:52 stdout 2025-07-18 17:15:51,292 INFO spawned: 'xiaomusic' with pid 21
2025/07/18 17:15:48 stdout 2025-07-18 17:15:47,284 WARN exited: xiaomusic (exit status 1; not expected)
2025/07/18 17:15:48 stdout ==> /app/supervisord.log <==
2025/07/18 17:15:48 stdout  
2025/07/18 17:15:43 stderr tail: /app/xiaomusic.log.txt has been replaced; following end of new file
2025/07/18 17:15:43 stdout [2025-07-18 17:15:42] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:43 stdout [2025-07-18 17:15:42] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:43 stdout ==> /app/xiaomusic.log.txt <==
2025/07/18 17:15:43 stdout  
2025/07/18 17:15:40 stdout 2025-07-18 17:15:39,479 INFO spawned: 'xiaomusic' with pid 18
2025/07/18 17:15:37 stdout 2025-07-18 17:15:36,473 WARN exited: xiaomusic (exit status 1; not expected)
2025/07/18 17:15:37 stdout ==> /app/supervisord.log <==
2025/07/18 17:15:37 stdout  
2025/07/18 17:15:33 stdout [2025-07-18 17:15:32] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:33 stdout [2025-07-18 17:15:32] [0.3.83] [INFO] xiaomusic.py:1373: The file conf/setting.json does not exist.
2025/07/18 17:15:33 stdout ==> /app/xiaomusic.log.txt <==

看不出来为啥

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: ***@***.***>

Issue 链接


File: docs/issues/105.md


title: 【插件】自定义口令功能

【插件】自定义口令功能

自定义口令配置需要配置到 config.json 文件里,使用 config.json 方式启动。参考 。

口令的配置方式见 config-example.json 文件。口令对应的代码需要写到 plugins/ 目录下面,如果是容器启动,则需要把这个目录挂载出来。

config.json 格式是下面这样的。

text
/* Detailed source-code truncated for AI context efficiency. */

配置自定义口令时,只需要配置 user_key_word_dict 即可,会自动插入到 key_word_dict 里的。配置格式是:

text
"测试自定义口令": "exec#code1(\"hello\")",

其中 "测试自定义口令" 就是对小爱音箱说的,"exec#code1(\"hello\")" 就是要执行的插件代码,代码以 exec# 开头,后面紧跟着执行代码。这里 code1 是一个插件函数,插件函数需要在 plugin 目录里实现,一个文件只会导出一个与文件名相同的插件函数。所以 code1 函数是在 plugin/code1.py 里实现的。

text
async def code1(arg1):
    global log, xiaomusic
    log.info(f"code1:{arg1}")
    await xiaomusic.do_tts("你好,我是自定义的测试口令")

这里只是演示了打印日志和让小爱音箱说话。还有一个示例插件是 httpget ,可以用来访问 url 。

比如下面这样配置的话,当对小爱音箱说测试链接时,会去访问 url ,可以用来很多其他的事情。

text
"测试链接": "exec#httpget(\"https://github.com/hanxi/xiaomusic\")

最后还需要在 active_cmd 中配上口令用于唤醒:

text
"active_cmd": "play,set_random_play,playlocal,play_music_list,play_music_list_index,stop_after_minute,stop,测试自定义口令",

感兴趣的可以体验一下,写了有什么好玩的插件也可以在这里分享,或者提 pr 合并进官方库里作为自带插件。

评论

评论 1 - carson512

如果开启服务的状态下 如何唤醒才能调用原有的播放QQ 网易云?而特定唤醒词调用xiaoai播放?

评论 2 - hanxi

如果开启服务的状态下 如何唤醒才能调用原有的播放QQ 网易云?而特定唤醒词调用xiaoai播放?

不使用 xiaomusic 的唤醒词就会调用音箱自带的,比如说播放音乐

评论 3 - shellingford37

text
[23:26:12] [0.3.30] [INFO] xiaomusic.py:531: 收到消息:测试自定义口令 控制面板:False did:290874427
[23:26:12] [0.3.30] [INFO] xiaomusic.py:577: 完全匹配指令. query:测试自定义口令 opvalue:exec#code1("hello")
[23:26:12] [0.3.30] [INFO] code1.py:3: code1:hello
[23:26:12] [0.3.30] [ERROR] xiaomusic.py:542: Execption XiaoMusic.do_tts() missing 1 required positional argument: 'value'
Traceback (most recent call last):
  File "/app/xiaomusic/xiaomusic.py", line 540, in do_check_cmd
    await func(did=did, arg1=oparg)
  File "/app/xiaomusic/xiaomusic.py", line 890, in exec
    await self.plugin_manager.execute_plugin(code)
  File "/app/xiaomusic/plugin.py", line 66, in execute_plugin
    await coroutine
  File "/app/plugins/code1.py", line 4, in code1
    await xiaomusic.do_tts("你好,我是自定义的测试口令")
TypeError: XiaoMusic.do_tts() missing 1 required positional argument: 'value'

我用code1的代码执行报错,有大佬知道为什么吗?

评论 4 - hanxi

@shellingford37 重构后漏改了,修复了。

评论 5 - guoxiangke

先说播放歌曲,再说 测试自定义口令 就行

评论 6 - CZJCC

想请教下插件那个功能,如何把用户的语音输入作为参数内容传到自定义函数里

评论 7 - hanxi

想请教下插件那个功能,如何把用户的语音输入作为参数内容传到自定义函数里

现在获取不到,等我加个接口获取吧。

评论 8 - CZJCC

666,支持以后我可以贡献一个接入通义模型的插件

评论 9 - hanxi

@CZJCC 你可以更新看看 plugins/code1.py 的测试代码,我测试了是可以拿到语音输入的原始内容的。

评论 10 - hanxi

文档更新了下,active_cmd 也需要配置一下才能正常唤醒。

评论 11 - CZJCC

@CZJCC 你可以更新看看 plugins/code1.py 的测试代码,我测试了是可以拿到语音输入的原始内容的。

我原先设想的事用户的话术是”通义提问为什么地球是圆的“,指令匹配的时候通义提问前缀匹配到类似于code1方法,为什么地球是圆的作为参数传入这个函数,但我看现在是拿历史记录实现的

评论 12 - hanxi

是的,插件函数里面再切割一下前缀就行。last_record就是当前的那条语音数据。

评论 13 - hanxi

@CZJCC 你可以更新看看 plugins/code1.py 的测试代码,我测试了是可以拿到语音输入的原始内容的。

我原先设想的事用户的话术是”通义提问为什么地球是圆的“,指令匹配的时候通义提问前缀匹配到类似于code1方法,为什么地球是圆的作为参数传入这个函数,但我看现在是拿历史记录实现的

是的,这样比较简单,交给插件里面处理也比较自由。

评论 14 - mogeqian

key_word_dict中的“播放歌曲”口令是不能修改的是吧?因为以前用小爱同学播放歌曲说习惯了,总是触发xiaomusic自动下载歌曲,我想把口令改成“查找歌曲”,这样我当说播放歌曲的时候就调用网易云音乐或者QQ音乐,当我说查找歌曲的时候就先看本地有没有歌曲,没有话就自动下载到本地。
当我先按照config-example.json的模板写好如下配置并重命名为config.json

text
"key_word_dict": {
    "查找歌曲": "play",
    "播放本地歌曲": "playlocal",
    "关机": "stop",
    "下一首": "play_next",
    "单曲循环": "set_play_type_one",
    "全部循环": "set_play_type_all",
    "随机播放": "set_random_play",
    "分钟后关机": "stop_after_minute",
    "播放列表": "play_music_list",
    "刷新列表": "gen_music_list",
    "本地播放歌曲": "playlocal",
    "下载歌曲": "play",
    "暂停": "stop",
    "停止": "stop",
    "停止播放": "stop",
    "测试自定义口令": "exec#code1(\"hello\")",
    "测试链接": "exec#httpget(\"https://github.com/hanxi/xiaomusic\")"
  },
  "key_match_order": [
    "分钟后关机",
    "查找歌曲",
    "下一首",
    "单曲循环",
    "全部循环",
    "随机播放",
    "关机",
    "刷新列表",
    "播放列表",
    "播放本地歌曲",
    "本地播放歌曲",
    "下载歌曲",
    "暂停",
    "停止",
    "停止播放",
    "测试自定义口令",
    "测试链接"
  ],

用以下命令安装docker
docker run --name xiaomusic -p 5488:5488 -v /mnt/sharedata/audiodata/musci/xiaomusic:/app/music -v /mnt/data_sdb1/docker/xiaomusic/config.json:/app/config.json -e XIAOMUSIC_PORT=5488 hanxi/xiaomusic --config /app/config.json
日志里提示的依然是:

key_word_dict={'播放歌曲': 'play', '播放本地歌曲': 'playlocal', '关机': 'stop', '下一首': 'play_next', '上一首': 'play_prev', '单曲循环': 'set_play_type_one', '全部循环': 'set_play_type_all', '随机播放': 'set_random_play', '分钟后关机': 'stop_after_minute', '播放列表': 'play_music_list', '刷新列表': 'gen_music_list', '加入收藏': 'add_to_favorites', '收藏歌曲': 'add_to_favorites', '取消收藏': 'del_from_favorites', '播放列表第': 'play_music_list_index', '本地播放歌曲': 'playlocal', '查找歌曲': 'play', '下载歌曲': 'play', '暂停': 'stop', '停止': 'stop', '停止播放': 'stop', '播放歌单': 'play_music_list', '测试自定义口令': 'exec#code1("hello")', '测试链接': 'exec#httpget("https://github.com/hanxi/xiaomusic")'}, key_match_order=['分钟后关机', '播放歌曲', '下一首', '上一首', '单曲循环', '全部循环', '随机播放', '关机', '刷新列表', '播放列表第', '播放列表', '加入收藏', '收藏歌曲', '取消收藏', '播放本地歌曲', '本地播放歌曲', '查找歌曲', '下载歌曲', '暂停', '停止', '停止播放', '播放歌单', '测试自定义口令', '测试链接']

似乎自定义的口令只能以插入的方式添加上去,并不能替换掉原来的口令


评论 15 - hanxi

key_word_dict中的“播放歌曲”口令是不能修改的是吧?因为以前用小爱同学播放歌曲说习惯了,总是触发xiaomusic自动下载歌曲,我想把口令改成“查找歌曲”,这样我当说播放歌曲的时候就调用网易云音乐或者QQ音乐,当我说查找歌曲的时候就先看本地有没有歌曲,没有话就自动下载到本地。 当我先按照config-example.json的模板写好如下配置并重命名为config.json

text
"key_word_dict": {
    "查找歌曲": "play",
    "播放本地歌曲": "playlocal",
    "关机": "stop",
    "下一首": "play_next",
    "单曲循环": "set_play_type_one",
    "全部循环": "set_play_type_all",
    "随机播放": "set_random_play",
    "分钟后关机": "stop_after_minute",
    "播放列表": "play_music_list",
    "刷新列表": "gen_music_list",
    "本地播放歌曲": "playlocal",
    "下载歌曲": "play",
    "暂停": "stop",
    "停止": "stop",
    "停止播放": "stop",
    "测试自定义口令": "exec#code1(\"hello\")",
    "测试链接": "exec#httpget(\"https://github.com/hanxi/xiaomusic\")"
  },
  "key_match_order": [
    "分钟后关机",
    "查找歌曲",
    "下一首",
    "单曲循环",
    "全部循环",
    "随机播放",
    "关机",
    "刷新列表",
    "播放列表",
    "播放本地歌曲",
    "本地播放歌曲",
    "下载歌曲",
    "暂停",
    "停止",
    "停止播放",
    "测试自定义口令",
    "测试链接"
  ],

用以下命令安装docker docker run --name xiaomusic -p 5488:5488 -v /mnt/sharedata/audiodata/musci/xiaomusic:/app/music -v /mnt/data_sdb1/docker/xiaomusic/config.json:/app/config.json -e XIAOMUSIC_PORT=5488 hanxi/xiaomusic --config /app/config.json 日志里提示的依然是:

key_word_dict={'播放歌曲': 'play', '播放本地歌曲': 'playlocal', '关机': 'stop', '下一首': 'play_next', '上一首': 'play_prev', '单曲循环': 'set_play_type_one', '全部循环': 'set_play_type_all', '随机播放': 'set_random_play', '分钟后关机': 'stop_after_minute', '播放列表': 'play_music_list', '刷新列表': 'gen_music_list', '加入收藏': 'add_to_favorites', '收藏歌曲': 'add_to_favorites', '取消收藏': 'del_from_favorites', '播放列表第': 'play_music_list_index', '本地播放歌曲': 'playlocal', '查找歌曲': 'play', '下载歌曲': 'play', '暂停': 'stop', '停止': 'stop', '停止播放': 'stop', '播放歌单': 'play_music_list', '测试自定义口令': 'exec#code1("hello")', '测试链接': 'exec#httpget("https://github.com/hanxi/xiaomusic")'}, key_match_order=['分钟后关机', '播放歌曲', '下一首', '上一首', '单曲循环', '全部循环', '随机播放', '关机', '刷新列表', '播放列表第', '播放列表', '加入收藏', '收藏歌曲', '取消收藏', '播放本地歌曲', '本地播放歌曲', '查找歌曲', '下载歌曲', '暂停', '停止', '停止播放', '播放歌单', '测试自定义口令', '测试链接']

似乎自定义的口令只能以插入的方式添加上去,并不能替换掉原来的口令

可以在网页后台设置页面改。

评论 16 - mogeqian

不行,后台设置如图

日志如下:

text
/* Detailed source-code truncated for AI context efficiency. */

使用的docker-compose命令安装
services:
xiaomusic:
image: hanxi/xiaomusic
container_name: xiaomusic
restart: unless-stopped
ports:
- 8090:8090
volumes:
- /mnt/sharedata/audiodata/musci/xiaomusic:/app/music
- /mnt/data_sdb1/docker/xiaomusic/config.json:/app/config.json
command: ['--config', '/app/config.json']

根据日志的提示,'播放歌曲': 'play'依然存在,只是增加了 '查找歌曲': 'play', '下载歌曲': 'play', 这两个关于play的自定义口令,所以实际上play有三条口令 “播放歌曲、查找歌曲、下载歌曲”,能否删除掉'播放歌曲': 'play'这个系统默认的口令?只使用 '查找歌曲': 'play', '下载歌曲': 'play', 这两个关于play的自定义口令

评论 17 - hanxi

@mogeqian 另外提个 issue 吧,现在应该是不支持删除默认的口令。

评论 18 - mogeqian

好的,已经重开了一个issue #259

评论 19 - wjcroom

@hanxi 你好大神 , 自定义口令基本搞定了,还有些不确定对不对
在项目命令中只有停止,没有继续.
能把stop.做成, 乒乓吗.继续. 暂停的切换.pause play
"active_cmd": "play,set_random_play,playlocal,play_music_list,play_music_list_index,stop_after_minute,stop,测试自定义口令",
这个激活cmd是什么作用呢, 怎么看着默认的是函数,只有最后一个是中文呢?

已经把自定义3thplay音量加入了. 其他的大点声小点声, 大点音,小点音.,还有好多.
好的好像是激活xiaomusic的 但是为啥前面的是单词?
config.json, 已经被setting.json替换了的.

text
async def set_myvolume(self, did="", arg1=0, **kwargs):
        if did not in self.devices:
            self.log.info(f"设备 did:{did} 不存在, 不能设置音量")
            return
        if arg1=="up":
                await self.devices[did].thdplay('up')
        elif arg1=="down":
            await self.devices[did].thdplay('dow')
            
        else:
          volume =  chinese_to_number(arg1)    
          await self.devices[did].thdplay('volume',str(volume))

评论 20 - hanxi

激活cmd支持配置 key 和 value,用于决定是否能在 xiaomusic 不播放的时候能否唤醒 xiaomusic 。

config.json 是基本废弃了,作为一个初始化配置存在。

暂停不方便做,没有好的接口控制音箱暂停,所以就没加这个口令。

评论 21 - wjcroom

激活cmd支持配置 key 和 value,用于决定是否能在 xiaomusic 不播放的时候能否唤醒 xiaomusic 。

config.json 是基本废弃了,作为一个初始化配置存在。

暂停不方便做,没有好的接口控制音箱暂停,所以就没加这个口令。
1.现在有了停止,我觉得继续可以是重启最近一首歌,在停止前把正在播放存放在某处。存 stop 里的name可以吗。感觉会有重名呢?

  1. 有没有可能让小爱在技能中心增加自己的【小音乐】技能,进入xiaomusic对话模式,直到退出。这样不再互相干扰。

评论 22 - hanxi

  1. 目前会记录最后一次播放的歌曲,正常说播放歌曲,不带歌曲名字应该就会重头播放的。
  2. 对话模式有些设备不支持,实现也比较复杂,xiaogpt那些项目是支持对话模式的,我就懒得支持了。

评论 23 - thefreezoo

我想写个可以读小说的,现在就是可以读不能关闭了,只能一次读完,我本想重新发送一条关闭命令,上一个自定义命令没有结束,似乎不能接受新的命令,包括关机,有什么语音控制接口可以关闭这个运行中的任务吗

评论 24 - hanxi

我想写个可以读小说的,现在就是可以读不能关闭了,只能一次读完,我本想重新发送一条关闭命令,上一个自定义命令没有结束,似乎不能接受新的命令,包括关机,有什么语音控制接口可以关闭这个运行中的任务吗

可以看看你是怎么写的?估计得用 asyncio 异步的写法。

评论 25 - thefreezoo

我想写个可以读小说的,现在就是可以读不能关闭了,只能一次读完,我本想重新发送一条关闭命令,上一个自定义命令没有结束,似乎不能接受新的命令,包括关机,有什么语音控制接口可以关闭这个运行中的任务吗

可以看看你是怎么写的?估计得用 asyncio 异步的写法。

python我用的不很熟,基本逻辑都是用服务器实现的,好像python不能直接这样开启异步线程:import json
import threading
import requests
import asyncio

async def getbook(xiaomusic):
# global log, xiaomusic
offset = '0'
did = xiaomusic._cur_did

text
requests.get("http://192.168.1.16:8001/note/off?off=N",timeout=100)
while True:
    url="http://192.168.1.16:8001/note/list?name=test&offset=" + offset
    try:
        response=requests.get(url,timeout=100)
        if response.status_code==200:
            print(response.text)
            res = json.loads(response.text)
            await xiaomusic.do_tts(did, res['data'])
            offset=str(res["offset"])
            if res['off'] == 1:
                break
        else:
            print(f"no 200")
            break
    except requests.exceptions.RequestException as e:
        print(f"{e}")
        break

def read():
global log, xiaomusic
loop=asyncio.get_event_loop()
loop.run_until_complete(getbook(xiaomusic))


评论 26 - hanxi

@thefreezoo 你用了个死循环,把整个服务卡住了。你可以在死循环里加个 asyncio.sleep ,然后再写一个自定义口令杀掉你的这个 task 。

评论 27 - thefreezoo

@thefreezoo 你用了个死循环,把整个服务卡住了。你可以在死循环里加个 asyncio.sleep ,然后再写一个自定义口令杀掉你的这个 task 。
似乎还是不行,不能识别其他口令
import json
import threading
import requests
import asyncio

async def read():
global log, xiaomusic
offset = '0'
did = xiaomusic._cur_did

text
requests.get("http://192.168.1.16:8001/note/off?off=N",timeout=100)
while True:
    url="http://192.168.1.16:8001/note/list?name=test&offset=" + offset
    try:
        response=requests.get(url,timeout=100)
        if response.status_code==200:
            print(response.text)
            res = json.loads(response.text)
            await xiaomusic.do_tts(did, res['data'])
            offset=str(res["offset"])
            if res['off'] == 1:
                break
        else:
            print(f"no 200")
            break
    except requests.exceptions.RequestException as e:
        print(f"{e}")
        break
    await asyncio.sleep(1)

评论 28 - hanxi

要不你问问ai吧,你缺少一个自定义指令干掉你这个死循环。

评论 29 - thefreezoo

要不你问问ai吧,你缺少一个自定义指令干掉你这个死循环。

插件是同步调用的,需要把插件包装成任务放回当前事件循环,我把plugins.py异步调用那里直接改成在事件循环中执行,然后放回running_task,stop的时候在终止任务,这样就可以用关机命令了

评论 30 - hu847266

能不能实现播放玩一个歌曲自动暂停

评论 31 - hanxi

能不能实现播放玩一个歌曲自动暂停

设置为单曲播放模式就行。

评论 32 - hu847266

问一下这个如果设置了离家后停止播放音乐,改了这个还能实现吗

评论 33 - hu847266

用服务器配置,容器端口和ip填什么,ip填公网ip吗

Issue 链接