shaonianzhentan / ha_cloud_music

新版云音乐
MIT License
105 stars 96 forks source link

如何通过服务,播放媒体库 local media下的音乐? #25

Open ghostist opened 1 year ago

ghostist commented 1 year ago

我通过一系列操作,成功把NAS挂载到媒体库 local media下的文件夹了 按专辑分文件夹存放周杰伦的歌 我想通过什么服务,可以播放这些歌?最好是能文件夹(专辑)顺序或者随机播放 最终是想实现手机刷NFC,自动播放其专辑,B站上“NFC 音乐墙”只能做到刷NFC手机播放,利用HA让家里的播放器这样工作感觉会很COOL!

虽然是“cloud music”,但是版权问题很多都听不了,索性特别想听的搞到本地来

shaonianzhentan commented 1 year ago

目前还没有相关服务支持这一操作,后续有时间我得看看

ghostist commented 1 year ago

谢谢回复 我昨天搜了一下,通过ha左边的媒体在网页播放本地歌曲并抓包可以获取到歌曲地址,经过修改发现调用media_play.play_media服务,参数填写http://ip:8123/media/local/xxx/xxx.wav是可以播放本地歌曲的 我尝试用脚本顺序队列,连续播放没有成功,猜测是歌曲播放结束后播放器实体还是playing状态,没有idle,导致无法播放下一曲 我记得很早之前这个插件里的issues里有看到你的回复,说获取歌曲剩余播放时长实现播放进度有很多问题,估计这个问题导致 另外了解到有个music assistant的项目,不过在ha2023.3后暂时不支持了,后续更新估计要独立部署。对于简单播放有点太麻烦了…

yzlnew commented 8 months ago

我也在研究这个问题,看上去 Music Assitant 是最优解了,但是小米的最新的音箱都不能在 HA 识别成 DLNA 设备了。

sasukebinbin commented 8 months ago

我的方案是

  1. 把NAS中Music文件夹添加到HA中的/Media,使得在HA中可以直接浏览播放
  2. 用Folder Watcher集成,获取指定文件夹中的歌曲名,例如文件夹:Favorite,最终会生成sensor.favorite
  3. 创建虚拟下拉菜单, input_select.mp3
  4. 创建自动化Local Mp3 List Update
  5. `alias: Local Mp3 List Update description: "" trigger:
    • platform: homeassistant event: start
    • platform: state entity_id:
      • sensor.favorite
    • platform: event event_type: folder_watcher event_data: event_type: created
    • platform: event event_type: folder_watcher event_data: event_type: deleted condition: [] action:
    • service: input_select.set_options target: entity_id: input_select.mp3 data: options: > {{ state_attr('sensor.favorite', 'file_list') | map('replace', '/media/Favorite/', '') | list }} mode: single `
  6. 创建脚本, 播放音乐, 服务如下
  7. service: media_player.play_media data: media_content_type: music media_content_id: /media/local/Favorite/{{states.input_select.mp3.state}} target: entity_id: media_player.google_home
  8. 创建几个虚拟开关, 例如循环播放,单曲循环
  9. 创建自动化当播放器从Playing变为Idle时检查,是否有循环播放打开. 有的话,就选择下拉菜单的下一个选项,然后再次启动播放音乐的脚本 如果有多个专辑,创建多个folder watcher的sensor并添加到相应的input_select的辅助下来菜单即可.