Skip to content

backtracker/xiaoemby

Repository files navigation

XiaoEmby: 小爱音箱播放Emby音乐库

项目说明

本项目是基于 xiaomusic 0.4.23 版本进行功能精简,保留核心功能并专注于Emby媒体库的小爱音箱音乐播放工具。

主要特性

  • 仅支持Emby媒体库作为音乐源
  • 移除本地文件和网络歌曲相关功能
  • 保留小爱音箱语音控制功能
  • 简化配置,专注于核心播放体验

安装与运行

安装环境

pdm install

启动服务

pdm run python app.py

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

配置说明

安全提醒

  • 重要: 本项目一定不要暴露在外网,以确保数据安全!
  • 项目已删除原xiaomusic中的认证相关功能,因此需特别注意网络安全。

NAS地址配置

  • 默认填写本地的NAS地址和端口号即可
  • Emby的流媒体地址会通过配置的NAS地址由本程序代理转发

外网访问配置

如果需要从外网控制小爱音箱播放Emby音乐,需完成以下两步:

  1. 在本地nginx中配置代理(见下方配置示例)
  2. 将反向代理地址填入NAS地址配置项中
location /xiaoemby/proxy/emby/audio/ { 
    # 转发到本地流媒体地址 
    proxy_pass http://<host>:<port>;
    
    # 关键:保留原始请求路径(必须) 
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    
    # 流媒体优化配置 
    proxy_buffering off;  # 关闭缓冲,实时传输 
    proxy_cache off;      # 关闭缓存 
    proxy_http_version 1.1;  # 支持 HTTP/1.1,适配流媒体 
    proxy_set_header Connection "";  # 清除连接头,避免长连接问题 
    
    # 大文件传输配置 
    client_max_body_size 0;  # 不限制请求体大小 
    proxy_read_timeout 3600s;  # 超时时间设为 1 小时,适配大文件 
    proxy_send_timeout 3600s;
    
    # 支持断点续传(流媒体必备) 
    proxy_set_header Range $http_range;
    proxy_set_header If-Range $http_if_range;
    proxy_redirect off;
}

使用说明

语音控制命令

基础播放控制

  • 播放音乐 / 来点音乐 - 随机播放音乐
  • 播放下一首 / 下一首 - 播放下一首歌曲
  • 播放上一首 / 上一首 - 播放上一首歌曲

按条件播放

  • 播放[歌手]的[风格]风格的歌曲 - 按歌手和风格播放
  • 播放[风格]风格的歌曲 - 按风格播放
  • 播放[歌手]的[专辑]专辑里的[歌曲名] - 按歌手、专辑和歌曲名播放
  • 播放[歌手]的[专辑]专辑 - 按歌手和专辑播放
  • 播放专辑[专辑名] - 按专辑名播放
  • 播放[歌手]的歌曲 - 按歌手播放
  • 播放[歌手]的[歌曲名] - 按歌手和歌曲名播放
  • 播放[歌曲名] - 按歌曲名播放
  • 播放我喜欢的歌曲 - 播放Emby媒体库收藏的歌曲
  • 播放我喜欢的[歌手]的歌曲 - 播放指定歌手的Emby媒体库收藏歌曲

播放控制

  • 关机 / 暂停 / 停止 / 闭嘴 - 停止播放
  • X分钟后关机 - 设置定时停止播放

播放模式

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

列表管理

  • 播放列表第X首 - 播放播放列表中的指定歌曲
  • 刷新播放列表 - 刷新播放列表

设备支持

型号 设备名称
L17A Xiaomi Sound Pro

FAQ

有了xiaomusic为什么会有这个项目?

这是一个纯个人使用的项目。2024年开始关注xiaomusic项目,希望能找到支持Emby的解决方案,但长期未看到相关功能上线。为了满足自己的使用需求,于是自行开发了这个专注于Emby媒体库的精简版本。

支不支持Jellyfin?

作为个人项目,目前仅针对Emby进行了适配和测试,Jellyfin尚未测试。由于资源有限,暂时无法保证对Jellyfin的兼容性。

会不会支持Plex、Navidrome等其他媒体库?

作为个人使用的项目,目前仅专注于Emby媒体库的支持,暂不考虑扩展其他媒体库的兼容。项目的主要目标是满足个人的Emby播放需求,保持功能简洁专注。

这个项目是正式的开源项目吗?

这是一个个人自娱自乐的小项目,主要用于满足自身使用需求。虽然开源分享,但不保证长期维护和支持,仅供有相同需求的用户参考使用。

是否支持除了L17A以外的其他设备?

由于本人手头只有L17A设备,无法测试其他设备的兼容性。此外,本人的媒体库主要以FLAC格式为主,而本项目不提供音频转码功能。如果其他设备不支持FLAC格式的直接播放,可能会出现无法播放的情况。

是否支持Docker?

作为个人项目,暂未提供预构建的Docker镜像。您可以自行根据项目根目录的 Dockerfile 构建镜像,然后使用 docker-compose.yml 启动服务。

为什么会对Emby流媒体地址进行代理?

因为小爱音箱无法直接播放Emby流媒体API的地址,所以需要通过本程序对Emby的流媒体地址进行代理转发后,才能在小爱音箱上正常播放。

License

MIT License © 2023 涵曦, 2026 backtracker

About

XiaoEmby: 小爱音箱播放Emby音乐库

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages