
XiaoMusic不仅支持播放本地存储的音乐文件,当本地没有特定歌曲时,还可自动从B站或其他网站下载并进行播放。该项目支持多种音频格式,包括mp3、flac、wav等,这使得用户可以根据个人偏好选择更为高质量的音频格式进行播放。对于热衷于高品质音乐的用户,这无疑是一大优势。
XiaoMusic: 无限听歌,解放小爱音箱
使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。
支持语音口令
【播放歌曲】,播放本地的歌曲 【播放歌曲+歌名】,比如:播放歌曲周杰伦晴天 【上一首】 【下一首】 【单曲循环】 【全部循环】 【随机播放】 【关机】,【停止播放】,两个效果是一样的。 【刷新列表】,当复制了歌曲进 music 目录后,可以用这个口令刷新歌单。 【播放列表+列表名】,比如:播放列表其他。 【加入收藏】,把当前播放的歌曲加入收藏歌单。 【取消收藏】,把当前播放的歌曲从收藏歌单里移除。 【播放列表收藏】,这个用于播放收藏歌单。 【播放本地歌曲+歌名】,这个口令和播放歌曲的区别是本地找不到也不会去下载。 【播放列表第几个+列表名】,具体见: #158 【搜索播放+关键词】,会搜索关键词作为临时搜索列表播放,比如说【搜索播放林俊杰】,会播放所有林俊杰的歌。 【本地搜索播放+关键词】,跟搜索播放的区别是本地找不到也不会去下载。
隐藏玩法: 对小爱同学说播放歌曲小猪佩奇的故事,会先下载小猪佩奇的故事,然后再播放小猪佩奇的故事。
技术栈
后端代码使用 Python 语言编写。
HTTP 服务使用的是 FastAPI 框架,早期版本使用的是 Flask。
使用了 Docker ,在 NAS 上安装更方便。
默认的前端主题使用了 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 已经不需要设置了. 需要设置【型号兼容模式】选项为 true M01/XMYX01JY 小米小爱音箱HD 需要设置【特殊型号获取对话记录】选项为 true 才能语音播放 OH2P XIAOMI 智能音箱 Pro OH2 XIAOMI 智能音箱
支持音乐格式
mp3
flac
wav
ape
ogg
m4a
网络歌单功能
可以配置一个 json 格式的歌单,支持电台和歌曲,也可以直接用别人分享的链接,同时配备了 m3u 文件格式转换工具,可以很方便的把 m3u 电台文件转换成网络歌单格式的 json 文件
安全提醒
如果配置了公网访问 xiaomusic ,请一定要开启密码登陆,并设置复杂的密码。且不要在公共场所的 WiFi 环境下使用,否则可能造成小米账号密码泄露。
强烈不建议将小爱音箱的小米账号绑定摄像头,代码难免会有bug,一旦小米账号密码泄露,可能监控录像也会泄露。
对应的 docker compose 配置如下:
国外可使用
services: xiaomusic: image: hanxi/xiaomusic container_name: xiaomusic restart: unless-stopped ports: - 58090:8090 environment: XIAOMUSIC_PUBLIC_PORT: 58090 volumes: - /xiaomusic_music:/app/music - /xiaomusic_conf:/app/conf
国内:
services: xiaomusic: image: docker.hanxi.cc/hanxi/xiaomusic container_name: xiaomusic restart: unless-stopped ports: - 58090:8090 environment: XIAOMUSIC_PUBLIC_PORT: 58090 volumes: - /xiaomusic_music:/app/music - /xiaomusic_conf:/app/conf
其中 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
docker 和 docker compose 二选一即可,启动成功后,在 web 页面可以配置其他参数,带有 * 号的配置是必须要配置的,其他的用不上时不用修改。初次配置时需要在页面上输入小米账号和密码保存后才能获取到设备列表。
pip 方式安装运行
> pip install -U xiaomusic > xiaomusic --help __ __ _ __ __ _ \\ \\/ / (_) __ _ ___ | \\/ | _ _ ___ (_) ___ \\ / | | / _` | / _ \\ | |\\/| | | | | | / __| | | / __| / \\ | | | (_| | | (_) | | | | | | |_| | \\__ \\ | | | (__ /_/\\_\\ |_| \\__,_| \\___/ |_| |_| \\__,_| |___/ |_| \\___| XiaoMusic v0.3.69 by: github.com/hanxi usage: xiaomusic [-h] [--port PORT] [--hardware HARDWARE] [--account ACCOUNT] [--password PASSWORD] [--cookie COOKIE] [--verbose] [--config CONFIG] [--ffmpeg_location FFMPEG_LOCATION] options: -h, --help show this help message and exit --port PORT 监听端口 --hardware HARDWARE 小爱音箱型号 --account ACCOUNT xiaomi account --password PASSWORD xiaomi password --cookie COOKIE xiaomi cookie --verbose show info --config CONFIG config file path --ffmpeg_location FFMPEG_LOCATION ffmpeg bin path > xiaomusic --config config.json
其中 config.json 文件可以参考 config-example.json 文件配置。
不修改默认端口 8090 的情况下,只需要执行 xiaomusic 即可启动。