import{_ as s,c as a,a0 as t,o as l}from"./chunks/framework.p2VkXzrt.js";const c=JSON.parse('{"title":"XiaoMusic: 无限听歌,解放小爱音箱","description":"","frontmatter":{},"headers":[],"relativePath":"issues/index.md","filePath":"issues/index.md","lastUpdated":null}'),h={name:"issues/index.md"};function e(n,i,p,k,r,o){return l(),a("div",null,i[0]||(i[0]=[t(`

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

GitHub LicenseDocker Image VersionDocker PullsPyPI - VersionPyPI - DownloadsPython Version from PEP 621 TOMLGitHub ReleaseVisitorsVisitors

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

https://github.com/hanxi/xiaomusic

TIP

初次安装遇到问题请查阅 💬 FAQ问题集合 ,一般遇到的问题都已经有解决办法。

👋 最简配置运行

已经支持在 web 页面配置其他参数,docker 启动命令如下:

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

🔥 国内:

bash
docker run -p 8090:8090 -v /xiaomusic/music:/app/music -v /xiaomusic/conf:/app/conf m.daocloud.io/docker.io/hanxi/xiaomusic

对应的 docker compose 配置如下:

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

🔥 国内:

yaml
services:
  xiaomusic:
    image: m.daocloud.io/docker.io/hanxi/xiaomusic
    container_name: xiaomusic
    restart: unless-stopped
    ports:
      - 8090:8090
    volumes:
      - /xiaomusic/music:/app/music
      - /xiaomusic/conf:/app/conf

其中 conf 目录为配置文件存放目录,music 目录为音乐存放目录,建议分开配置为不同的目录。

NOTE

上面配置的 /xiaomusic/music 和 /xiaomusic/conf 是 docker 主机里的 /xiaomusic 目录下的,可以修改为其他目录。如果报错找不到 /xiaomusic/music 目录,可以先执行 mkdir -p /xiaomusic/{music,conf} 命令新建目录。

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

TIP

目前安装步骤已经是最简化了,如果还是嫌安装麻烦,可以微信或者 QQ 约我远程安装,我一般周末和晚上才有时间,收个辛苦费 💰 50 元一次,安装失败不收费。

🔥 修改默认8090端口映射

方法1: 不修改监听端口 8090

【监听端口】保持为默认的 8090 不变,把【外网访问端口】改为 5678 。

yaml
services:
  xiaomusic:
    image: hanxi/xiaomusic
    container_name: xiaomusic
    restart: unless-stopped
    ports:
      - 5678:8090
    volumes:
      - /xiaomusic/music:/app/music
      - /xiaomusic/conf:/app/conf
    environment:
      XIAOMUSIC_PUBLIC_PORT: 5678

XIAOMUSIC_PUBLIC_PORT 对应后台设置里的【外网访问端口】,修改后可以不用重启。

方法2: 修改监听端口 8090 为 5678

如果需要修改 8090 端口为其他端口,比如 5678,需要这样配,3个数字都需要是 5678 。见 https://github.com/hanxi/xiaomusic/issues/19

yaml
services:
  xiaomusic:
    image: hanxi/xiaomusic
    container_name: xiaomusic
    restart: unless-stopped
    ports:
      - 5678:5678
    volumes:
      - /xiaomusic/music:/app/music
      - /xiaomusic/conf:/app/conf
    environment:
      XIAOMUSIC_PORT: 5678

如果不是首次修改端口,还需要修改 /xiaomusic/conf/setting.json 文件里的端口(也可以在后台修改监听端口后重启)。

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

IMPORTANT

XIAOMUSIC_PORT 也可以在后台配置,对应的是监听端口,修改后记得重启。

🤐 支持语音口令

TIP

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

🛠️ pip 方式安装运行

shell
> pip install -U xiaomusic
> xiaomusic --help
 __  __  _                   __  __                 _
 \\ \\/ / (_)   __ _    ___   |  \\/  |  _   _   ___  (_)   ___
  \\  /  | |  / _\` |  / _ \\  | |\\/| | | | | | / __| | |  / __|
  /  \\  | | | (_| | | (_) | | |  | | | |_| | \\__ \\ | | | (__
 /_/\\_\\ |_|  \\__,_|  \\___/  |_|  |_|  \\__,_| |___/ |_|  \\___|
          XiaoMusic v0.3.37 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 文件配置。见 https://github.com/hanxi/xiaomusic/issues/94

不修改默认端口 8090 的情况下,只需要执行 xiaomusic 即可启动。

🔩 开发环境运行

shell
pdm run xiaomusic.py

如果是开发前端界面,可以通过 http://localhost:8090/docs 查看有什么接口。目前的 web 控制台非常简陋,欢迎有兴趣的朋友帮忙实现一个漂亮的前端,需要什么接口可以随时提需求。

🚦 代码提交规范

提交前请执行

pdm lintfmt

用于检查代码和格式化代码。

本地编译 Docker Image

shell
docker build -t xiaomusic .

技术栈

已测试支持的设备

型号名称
L06A小爱音箱
L07ARedmi小爱音箱 Play
S12/S12A/MDZ-25-DA小米AI音箱
LX5A小爱音箱 万能遥控版
LX05小爱音箱Play(2019款)
L15A小米AI音箱(第二代)
L16AXiaomi Sound
L17AXiaomi Sound Pro
LX06小爱音箱Pro
LX01小爱音箱mini
L05B小爱音箱Play
L05C小米小爱音箱Play 增强版
L09A小米音箱Art
LX04 X10A X08A已经支持的触屏版
X08C X08E X8F需要设置【型号兼容模式】选项为 true
M01/XMYX01JY小米小爱音箱HD 需要设置【特殊型号获取对话记录】选项为 true 才能语音播放

型号与产品名称对照可以在这里查询 https://home.miot-spec.com/s/xiaomi.wifispeaker

NOTE

如果你的设备支持播放,请反馈给我添加到支持列表里,谢谢。 目前应该所有设备类型都已经支持播放,有问题随时反馈。 其他触屏版不能播放可以设置【型号兼容模式】选项为 true 试试。见 https://github.com/hanxi/xiaomusic/issues/30

🎵 支持音乐格式

NOTE

本地音乐会搜索目录下上面格式的文件,下载的歌曲是 mp3 格式的。 已知 L05B L05C LX06 L16A 不支持 flac 格式。 如果格式不能播放可以打开【转换为MP3】和【型号兼容模式】选项。具体见 https://github.com/hanxi/xiaomusic/issues/153#issuecomment-2328168689

💡 简易的控制面板

浏览器进入 http://192.168.2.5:8090

采用新的设置页面之后,没有必须在启动前配置的环境变量了,除非是改默认的 8090 端口才需要配置环境变量。

🌏 网络歌单功能

可以配置一个 json 格式的歌单,支持电台和歌曲,也可以直接用别人分享的链接,同时配备了 m3u 文件格式转换工具,可以很方便的把 m3u 电台文件转换成网络歌单格式的 json 文件,具体用法见 https://github.com/hanxi/xiaomusic/issues/78

NOTE

欢迎有想法的朋友们制作更多的歌单转换工具。

🍺 更多其他可选配置

⚠️ 安全提醒

IMPORTANT

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

🤔 高级篇

📢 讨论区

❤️ 感谢

👉 其他教程

更多功能见 📝 文档汇总

🚨 免责声明

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

Star History

Star History Chart

赞赏

License

MIT License © 2024 涵曦

`,82)]))}const g=s(h,[["render",e]]);export{c as __pageData,g as default};