xiaomusic/README.md

327 lines
11 KiB
Markdown
Raw Normal View History

2023-10-14 11:50:32 +00:00
# xiaomusic
2024-06-26 04:53:05 +00:00
[![GitHub License](https://img.shields.io/github/license/hanxi/xiaomusic)](https://github.com/hanxi/xiaomusic)
[![Docker Image Version](https://img.shields.io/docker/v/hanxi/xiaomusic?sort=semver&label=docker%20image)](https://hub.docker.com/r/hanxi/xiaomusic)
[![Docker Pulls](https://img.shields.io/docker/pulls/hanxi/xiaomusic)](https://hub.docker.com/r/hanxi/xiaomusic)
[![PyPI - Version](https://img.shields.io/pypi/v/xiaomusic)](https://pypi.org/project/xiaomusic/)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/xiaomusic)](https://pypi.org/project/xiaomusic/)
[![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fhanxi%2Fxiaomusic%2Fmain%2Fpyproject.toml)](https://pypi.org/project/xiaomusic/)
[![GitHub Release](https://img.shields.io/github/v/release/hanxi/xiaomusic)](https://github.com/hanxi/xiaomusic/releases)
2023-10-14 11:50:32 +00:00
2024-06-25 02:50:32 +00:00
使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。
2023-10-14 11:50:32 +00:00
2024-06-29 01:18:26 +00:00
<https://github.com/hanxi/xiaomusic>
2024-05-19 16:03:27 +00:00
## 最简配置运行
已经支持在 web 页面配置其他参数docker compose 配置如下:
```yaml
services:
xiaomusic:
image: hanxi/xiaomusic
container_name: xiaomusic
restart: unless-stopped
ports:
- 8090:8090
volumes:
- ./music:/app/music
environment:
MI_USER: '小米账号'
MI_PASS: '小米密码'
2024-06-28 15:43:48 +00:00
XIAOMUSIC_VERBOSE: 'true'
2024-05-19 16:03:27 +00:00
XIAOMUSIC_HOSTNAME: 'docker 主机 ip'
```
2024-06-28 15:14:16 +00:00
对应的 docker 启动命令如下:
```yaml
docker run -e MI_USER='小米账号' \
-e MI_PASS='小米密码' \
2024-06-28 15:43:48 +00:00
-e XIAOMUSIC_VERBOSE='true' \
2024-06-28 15:14:16 +00:00
-e XIAOMUSIC_HOSTNAME='docker 主机 ip' \
-p 8090:8090 \
-v ./music:/app/music \
hanxi/xiaomusic
```
2024-05-19 16:03:27 +00:00
启动成功后,在 web 页面可以配置 MI_DID, MI_HARDWARE, XIAOMUSIC_SEARCH, XIAOMUSIC_PROXY 参数。
2024-06-30 04:06:01 +00:00
### ✨ 修改8090端口
如果需要修改 8090 端口为其他端口,比如 5678需要这样配3个数字都需要是 5678
2024-06-30 04:04:29 +00:00
2024-06-27 14:46:10 +00:00
```yaml
services:
xiaomusic:
image: hanxi/xiaomusic
container_name: xiaomusic
restart: unless-stopped
ports:
- 5678:5678
volumes:
- ./music:/app/music
environment:
MI_USER: '小米账号'
MI_PASS: '小米密码'
2024-06-28 15:43:48 +00:00
XIAOMUSIC_VERBOSE: 'true'
2024-06-27 14:46:10 +00:00
XIAOMUSIC_HOSTNAME: 'docker 主机 ip'
XIAOMUSIC_PORT: 5678
```
2024-06-28 15:45:18 +00:00
其中 XIAOMUSIC_VERBOSE 设置为 'true' 时表示开启 debug 日志,遇到问题可以去 web 设置页面底部【下载日志文件】按钮,然后搜索一下日志文件内容确保里面没有账号密码信息后(有就删除这些敏感信息),然后在提 issues 反馈问题时把下载的日志文件带上。
2024-06-28 15:43:48 +00:00
2024-05-19 16:03:27 +00:00
## 开发环境运行
2023-10-14 11:50:32 +00:00
2023-10-14 14:27:50 +00:00
- 使用 install_dependencies.sh 下载依赖
- 使用 pdm 安装环境
- 参考 [xiaogpt](https://github.com/yihong0618/xiaogpt) 设置好环境变量
2023-10-14 11:50:32 +00:00
```shell
export MI_USER="xxxxx"
export MI_PASS="xxxx"
export MI_DID=00000
export XIAOMUSIC_SEARCH='bilisearch:'
2023-10-14 11:50:32 +00:00
```
然后启动即可。默认监听了端口 8090 , 使用其他端口自行修改。
```shell
pdm run xiaomusic.py
````
### 支持口令
- **播放歌曲**
- **播放歌曲**+歌名 比如:播放歌曲周杰伦晴天
- 下一首
- 单曲循环
- 全部循环
2024-06-12 17:26:00 +00:00
- 随机播放
- 关机
- 停止播放
- 刷新列表
- 播放列表+列表名 比如:播放列表其他
2023-10-14 11:50:32 +00:00
2024-02-02 14:33:18 +00:00
> 隐藏玩法: 对小爱同学说播放歌曲小猪佩奇的故事,会播放小猪佩奇的故事。
2024-06-27 05:32:54 +00:00
## 已测试支持的设备
2023-10-14 11:50:32 +00:00
```txt
2024-06-29 01:32:41 +00:00
- L06A
2024-06-27 05:32:54 +00:00
- L07A
- S12
2024-06-28 16:14:52 +00:00
- S12A
2024-06-27 05:32:54 +00:00
- LX5A
- LX05
- L16A
2024-06-28 15:43:48 +00:00
- L17A
2024-06-27 05:32:54 +00:00
- LX06
- LX01
2024-06-28 04:18:18 +00:00
- L05B
- L05C
2023-10-14 11:50:32 +00:00
````
2024-06-28 16:14:52 +00:00
型号与产品名称对照可以在这里查询 <https://home.miot-spec.com/s/xiaomi.wifispeaker>
> 如果你的设备支持播放,请反馈给我添加到支持列表里,谢谢。
2024-01-27 15:09:30 +00:00
## 支持音乐格式
- mp3
- flac
2024-06-27 05:32:54 +00:00
- wav
- ape
2024-06-28 14:48:42 +00:00
- ogg
2024-01-27 15:09:30 +00:00
2024-06-28 14:48:42 +00:00
> 本地音乐会搜索目录下上面格式的文件,下载的歌曲是 mp3 格式的。
> 已知 L05B L05C 不支持 flac 格式。
2023-10-14 11:50:32 +00:00
2023-10-15 02:58:53 +00:00
## 在 Docker 里使用
```shell
2024-06-24 14:28:05 +00:00
docker run -e MI_USER='your-xiaomi-account' \
2024-06-04 07:14:14 +00:00
-e MI_PASS='your-xiaomi-password' \
-e MI_DID='your-xiaomi-speaker-mid' \
2024-05-19 16:03:27 +00:00
-e MI_HARDWARE='L07A' \
2024-06-04 07:14:14 +00:00
-e XIAOMUSIC_PROXY='proxy-for-yt-dlp' \
2024-05-19 16:03:27 +00:00
-e XIAOMUSIC_HOSTNAME=192.168.2.5 \
-e XIAOMUSIC_SEARCH='bilisearch:' \
-p 8090:8090 \
-v ./music:/app/music hanxi/xiaomusic
2023-10-15 02:58:53 +00:00
```
2024-05-19 16:03:27 +00:00
- XIAOMUSIC_SEARCH 可以配置为 'bilisearch:' 表示歌曲从哔哩哔哩下载;
- 配置为 'ytsearch:' 表示歌曲从 youtube 下载。
- XIAOMUSIC_PROXY 用于配置代理,默认为空;
- 当 XIAOMUSIC_SEARCH 配置为 'ytsearch:' 时在国内需要用到。
2023-10-16 10:07:07 +00:00
- MI_HARDWARE 是小米音箱的型号,默认为'L07A'
- 注意端口必须映射为与容器内一致, XIAOMUSIC_HOSTNAME 需要设置为宿主机的 IP 地址,否则小爱无法正常播放。
2023-10-15 02:58:53 +00:00
- 可以把 /app/music 目录映射到本地,用于保存下载的歌曲。
XIAOMUSIC_PROXY 参数格式参考 yt-dlp 文档说明:
2024-01-31 01:03:38 +00:00
```
Use the specified HTTP/HTTPS/SOCKS proxy. To
enable SOCKS proxy, specify a proper scheme,
e.g. socks5://user:pass@127.0.0.1:1080/.
Pass in an empty string (--proxy "") for
direct connection
```
<https://github.com/hanxi/xiaomusic/issues/2><https://github.com/hanxi/xiaomusic/issues/11>
2023-10-15 02:58:53 +00:00
### 本地编译Docker Image
```shell
docker build -t xiaomusic .
```
2024-01-31 01:17:13 +00:00
### docker compose 示例
使用哔哩哔哩下载歌曲:
```yaml
version: '3'
services:
xiaomusic:
image: hanxi/xiaomusic
container_name: xiaomusic
restart: unless-stopped
ports:
- 8090:8090
volumes:
- ./music:/app/music
environment:
2024-02-03 06:51:03 +00:00
MI_USER: '小米账号'
MI_PASS: '小米密码'
MI_DID: 00000
MI_HARDWARE: 'L07A'
XIAOMUSIC_SEARCH: 'bilisearch:'
XIAOMUSIC_HOSTNAME: '192.168.2.5'
```
使用 youtobe 下载歌曲:
2024-01-31 01:17:13 +00:00
```yaml
version: '3'
services:
xiaomusic:
image: hanxi/xiaomusic
container_name: xiaomusic
restart: unless-stopped
ports:
- 8090:8090
volumes:
- ./music:/app/music
environment:
2024-02-03 06:51:03 +00:00
MI_USER: '小米账号'
MI_PASS: '小米密码'
MI_DID: 00000
MI_HARDWARE: 'L07A'
XIAOMUSIC_SEARCH: 'ytsearch:'
XIAOMUSIC_PROXY: 'http://192.168.2.5:8080'
XIAOMUSIC_HOSTNAME: '192.168.2.5'
2024-01-31 01:17:13 +00:00
```
2024-06-28 14:55:31 +00:00
如果想让 setting.json 文件不存储到 music 目录,可以这样配,下面的示例会把 setting.json 文件放到容器的 /app/conf 目录且映射到本地的 ./conf 目录:
2024-06-27 06:17:00 +00:00
```yaml
services:
xiaomusic:
image: hanxi/xiaomusic
container_name: xiaomusic
restart: unless-stopped
ports:
- 8090:8090
volumes:
- ./music:/app/music
- ./conf:/app/conf
environment:
MI_USER: '小米账号'
MI_PASS: '小米密码'
XIAOMUSIC_HOSTNAME: 'docker 主机 ip'
XIAOMUSIC_CONF_PATH: '/app/conf'
```
2024-01-31 01:17:13 +00:00
2024-01-28 10:29:14 +00:00
## 简易的控制面板
浏览器进入 <http://192.168.2.5:8090>
- ip 是 XIAOMUSIC_HOSTNAME 设置的
- 8090 是默认端口
2024-06-28 15:20:45 +00:00
- 支持功能
2024-04-30 14:04:58 +00:00
- 显示正在播放的歌曲
- 模糊搜索本地歌曲
2024-06-28 15:20:45 +00:00
- 播放列表
- 删除歌曲
2024-05-19 15:22:52 +00:00
- 设置页面
2024-06-28 15:20:45 +00:00
- 配置网络歌单
- 日志文件下载
2024-05-19 15:22:52 +00:00
采用新的设置页面之后,必须在启动前配置的环境变量只剩下:
- MI_USER
- MI_PASS
- XIAOMUSIC_HOSTNAME
其他的这些可以在网页里配置:
- MI_DID
- MI_HARDWARE
- XIAOMUSIC_SEARCH
- XIAOMUSIC_PROXY
2024-06-25 18:03:38 +00:00
## 网络歌单功能
2024-06-28 15:00:01 +00:00
可以配置一个 json 格式的歌单,支持电台和歌曲,也可以直接用别人分享的链接,同时配备了 m3u 文件格式转换工具,可以很方便的把 m3u 电台文件转换成网络歌单格式的 json 文件,具体用法见 <https://github.com/hanxi/xiaomusic/issues/78>
> 欢迎有想法的朋友们制作更多的歌单转换工具。
2024-06-25 18:03:38 +00:00
2024-06-23 08:27:22 +00:00
## 更多其他可选配置
2024-06-28 14:52:04 +00:00
- XIAOMUSIC_ACTIVE_CMD 环境变量,用于唤醒口令,配置成'play,random_play'在非播放状态下只有这两个指令播放歌曲和随机播放可以触发触发后xiaomusic进入playing状态其他指令则可以正常触发。具体见 <https://github.com/hanxi/xiaomusic/pull/43>
2024-06-23 08:27:22 +00:00
- XIAOMUSIC_EXCLUDE_DIRS 配置歌曲目录里需要忽略的目录
2024-06-23 16:38:33 +00:00
- XIAOMUSIC_MUSIC_PATH_DEPTH 配置歌曲目录搜索深度,具体见 <https://github.com/hanxi/xiaomusic/issues/76>
- XIAOMUSIC_DISABLE_HTTPAUTH 配置成 false 表示开启密码访问web控制台具体见 <https://github.com/hanxi/xiaomusic/issues/47>
2024-06-23 08:27:22 +00:00
- XIAOMUSIC_HTTPAUTH_USERNAME 配置 web 控制台用户
- XIAOMUSIC_HTTPAUTH_PASSWORD 配置 web 控制台密码
2024-06-23 16:38:33 +00:00
- XIAOMUSIC_CONF_PATH 用来存放配置文件的目录记得把目录映射到主机默认情况会把配置存放在music目录具体见 <https://github.com/hanxi/xiaomusic/issues/74>
2024-06-26 16:23:22 +00:00
- XIAOMUSIC_DISABLE_DOWNLOAD 设为 true 时关闭下载功能,见 <https://github.com/hanxi/xiaomusic/issues/82>
2024-06-27 05:32:54 +00:00
- XIAOMUSIC_USE_MUSIC_API 设为 true 时使用 player_play_music 接口播放音乐,用于兼容不能播放的型号
2024-06-27 15:15:53 +00:00
- XIAOMUSIC_KEYWORDS_PLAY 用来播放歌曲的口令前缀,默认是 "播放歌曲,放歌曲" ,可以用英文逗号分割配置多个
- XIAOMUSIC_KEYWORDS_STOP 用来关机的口令,默认是 "关机,暂停,停止" ,可以用英文逗号分割配置多个。
- XIAOMUSIC_KEYWORDS_PLAYLOCAL 用来播放本地歌曲的口令前缀,本地找不到时不会下载歌曲,默认是 "播放本地歌曲,本地播放歌曲" ,可以用英文逗号分割配置多个。
2024-06-29 13:33:09 +00:00
- XIAOMUSIC_ENABLE_FUZZY_MATCH 设为 true 时开启模糊匹配(默认),设为 false 时关闭模糊匹配,支持模糊匹配歌名和歌单名。 具体见 <https://github.com/hanxi/xiaomusic/issues/52>
- XIAOMUSIC_FUZZY_MATCH_CUTOFF 设置模糊搜索匹配的最低相似度阈值默认0.6可以配0到1直接的小数越小越模糊越大越精准。具体见 <https://github.com/hanxi/xiaomusic/issues/52>
2024-06-23 08:27:22 +00:00
2024-05-15 01:18:50 +00:00
## 讨论区
- [点击链接加入QQ频道【xiaomusic】](https://pd.qq.com/s/e2jybz0ss)
2024-05-15 01:20:08 +00:00
- [点击链接加入群聊【xiaomusic】 604526973](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=13St5PLVcTxYlWTAs_iAawazjtdD1l-a&authKey=dJWEpaT2fDBDpdUUOWj%2FLt6NS1ePBfShDfz7a6seNURi05VvVnAGQzXF%2FM%2F5HgIm&noverify=0&group_code=604526973)
2024-06-27 05:32:54 +00:00
- <https://github.com/hanxi/xiaomusic/issues>
2024-06-28 07:32:19 +00:00
- [微信群二维码](https://github.com/hanxi/xiaomusic/issues/86)
2024-05-15 01:18:50 +00:00
2023-10-14 11:50:32 +00:00
## 感谢
- [xiaomi](https://www.mi.com/)
- [PDM](https://pdm.fming.dev/latest/)
- [xiaogpt](https://github.com/yihong0618/xiaogpt)
- [MiService](https://github.com/yihong0618/MiService)
2023-10-14 15:42:33 +00:00
- [yt-dlp](https://github.com/yt-dlp/yt-dlp)
2024-03-18 08:07:50 +00:00
- [NAS部署教程](https://post.m.smzdm.com/p/avpe7n99/)
2024-04-29 14:47:54 +00:00
- [群晖部署教程](https://post.m.smzdm.com/p/a7px7dol/)
2024-05-09 04:19:54 +00:00
- [QNAS部署教程](https://post.smzdm.com/p/a5xz5x63/)
2024-02-01 15:40:30 +00:00
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=hanxi/xiaomusic&type=Date)](https://star-history.com/#hanxi/xiaomusic&Date)
2024-06-23 12:05:20 +00:00
## 赞赏
2024-06-27 14:03:06 +00:00
- 爱发电 <https://afdian.net/a/imhanxi>
2024-06-27 15:06:34 +00:00
- 点个 Star ⭐
2024-06-27 15:09:40 +00:00
- 谢谢 ❤️