type
status
date
slug
summary
tags
category
icon
password
XiaoMusic: 无限听歌,解放小爱音箱
使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。
TIP
初次安装遇到问题请查阅 💬 FAQ问题集合 ,一般遇到的问题都已经有解决办法。
👋 最简配置运行
已经支持在 web 页面配置其他参数,docker 启动命令如下:
🔥 国内:
对应的 docker compose 配置如下:
🔥 国内:
- 其中 conf 目录为配置文件存放目录,music 目录为音乐存放目录,建议分开配置为不同的目录。
- /xiaomusic_music 和 /xiaomusic_conf 是 docker 所在的主机的目录,可以修改为其他目录。如果报错找不到 /xiaomusic_music 目录,可以先执行
mkdir -p /xiaomusic_{music,conf}
命令新建目录。
- /app/music 和 /app/conf 是 docker 容器里的目录,不要去修改。
- XIAOMUSIC_PUBLIC_PORT 是用来配置 NAS 本地端口的。8090 是容器端口,不要去修改。
- 后台访问地址为: http://NAS_IP:58090
NOTE
docker 和 docker compose 二选一即可,启动成功后,在 web 页面可以配置其他参数,带有
*
号的配置是必须要配置的,其他的用不上时不用修改。初次配置时需要在页面上输入小米账号和密码保存后才能获取到设备列表。🤐 支持语音口令
- 【播放歌曲】,播放本地的歌曲
- 【播放歌曲+歌名】,比如:播放歌曲周杰伦晴天
- 【上一首】
- 【下一首】
- 【单曲循环】
- 【全部循环】
- 【随机播放】
- 【关机】,【停止播放】,两个效果是一样的。
- 【刷新列表】,当复制了歌曲进 music 目录后,可以用这个口令刷新歌单。
- 【播放列表+列表名】,比如:播放列表其他。
- 【加入收藏】,把当前播放的歌曲加入收藏歌单。
- 【取消收藏】,把当前播放的歌曲从收藏歌单里移除。
- 【播放列表收藏】,这个用于播放收藏歌单。
- 【播放本地歌曲+歌名】,这个口令和播放歌曲的区别是本地找不到也不会去下载。
- 【播放列表第几个+列表名】,具体见: https://github.com/hanxi/xiaomusic/issues/158
- 【搜索播放+关键词】,会搜索关键词作为临时搜索列表播放,比如说【搜索播放林俊杰】,会播放所有林俊杰的歌。
- 【本地搜索播放+关键词】,跟搜索播放的区别是本地找不到也不会去下载。
TIP
隐藏玩法: 对小爱同学说播放歌曲小猪佩奇的故事,会先下载小猪佩奇的故事,然后再播放小猪佩奇的故事。
🛠️ pip 方式安装运行
不修改默认端口 8090 的情况下,只需要执行
xiaomusic
即可启动。🔩 开发环境运行
- 使用 install_dependencies.sh 下载依赖
- 使用 pdm 安装环境
- 默认监听了端口 8090 , 使用其他端口自行修改。
shell
pdm run xiaomusic.py
如果是开发前端界面,可以通过 http://localhost:8090/docs 查看有什么接口。目前的 web 控制台非常简陋,欢迎有兴趣的朋友帮忙实现一个漂亮的前端,需要什么接口可以随时提需求。
🚦 代码提交规范
提交前请执行
pdm lintfmt
用于检查代码和格式化代码。
本地编译 Docker Image
shell
docker build -t xiaomusic .
技术栈
- 后端代码使用 Python 语言编写。
- HTTP 服务使用的是 FastAPI 框架,
早期版本使用的是 Flask。
- 使用了 Docker ,在 NAS 上安装更方便。
- 默认的前端主题使用了 jQuery 。
已测试支持的设备
型号 | 名称 |
L06A | |
L07A | |
S12/S12A/MDZ-25-DA | |
LX5A | |
LX05 | |
L15A | |
L16A | |
L17A | |
LX06 | |
LX01 | |
L05B | |
L05C | |
L09A | |
LX04 X10A X08A | 已经支持的触屏版 |
X08C X08E X8F | 已经不需要设置了. ~需要设置【型号兼容模式】选项为 true~ |
M01/XMYX01JY | 小米小爱音箱HD 需要设置【特殊型号获取对话记录】选项为 true 才能语音播放 |
OH2P | XIAOMI 智能音箱 Pro |
OH2 | XIAOMI 智能音箱 |
型号与产品名称对照可以在这里查询 https://home.miot-spec.com/s/xiaomi.wifispeaker
NOTE
如果你的设备支持播放,请反馈给我添加到支持列表里,谢谢。 目前应该所有设备类型都已经支持播放,有问题随时反馈。 其他触屏版不能播放可以设置【型号兼容模式】选项为 true 试试。见 https://github.com/hanxi/xiaomusic/issues/30
🎵 支持音乐格式
- mp3
- flac
- wav
- ape
- ogg
- m4a
NOTE
本地音乐会搜索目录下上面格式的文件,下载的歌曲是 mp3 格式的。 已知 L05B L05C LX06 L16A 不支持 flac 格式。 如果格式不能播放可以打开【转换为MP3】和【型号兼容模式】选项。具体见 https://github.com/hanxi/xiaomusic/issues/153#issuecomment-2328168689
🌏 网络歌单功能
可以配置一个 json 格式的歌单,支持电台和歌曲,也可以直接用别人分享的链接,同时配备了 m3u 文件格式转换工具,可以很方便的把 m3u 电台文件转换成网络歌单格式的 json 文件,具体用法见 https://github.com/hanxi/xiaomusic/issues/78
NOTE
欢迎有想法的朋友们制作更多的歌单转换工具。
🍺 更多其他可选配置
⚠️ 安全提醒
IMPORTANT
- 如果配置了公网访问 xiaomusic ,请一定要开启密码登陆,并设置复杂的密码。且不要在公共场所的 WiFi 环境下使用,否则可能造成小米账号密码泄露。
- 强烈不建议将小爱音箱的小米账号绑定摄像头,代码难免会有 bug ,一旦小米账号密码泄露,可能监控录像也会泄露。
🤔 高级篇
📢 讨论区
- 作者:weny888
- 链接:https://weny888.com/article/XiaoMusic
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。