beat365体育-beat365体育官方网站-365体育app官方版下载

[经验分享]小爱音箱dlna+网易云音乐插件实现自动替换vip歌曲和语音播放

查看: 21638|回复: 30 [经验分享] 小爱音箱dlna+网易云音乐插件实现自动替换vip歌曲和语音播放 火 [复制链接] qqdwtypm qqdwtypm 当前离线 积分149 金钱139

[经验分享]小爱音箱dlna+网易云音乐插件实现自动替换vip歌曲和语音播放

查看: 21638|回复: 30

[经验分享]

小爱音箱dlna+网易云音乐插件实现自动替换vip歌曲和语音播放

[复制链接]

qqdwtypm

qqdwtypm

当前离线

积分149

金钱139

威望0

贡献0

HASS币10

2

主题8

回帖149

积分

论坛分享达人

积分149

金钱139

HASS币10

发消息

电梯直达

楼主

发表于 2023-8-19 22:07:34

|

只看该作者

|倒序浏览

|阅读模式

本帖最后由 qqdwtypm 于 2023-8-21 10:49 编辑

实现步骤:

一、安装调试网易云音乐插件

二、自动替换小爱音箱中的vip歌曲

三、通过小爱音箱语音控制来播放网易云音乐

具体步骤:

一、安装调试网易云音乐插件

安装论坛里大佬的插件:

https://github.com/shaonianzhentan/ha_cloud_music

安装教程可以参考帖子:

https://bbs.hassbian.com/thread-20812-1-1.html

之后

1.修复低版本homeassistant安装后报错问题,修改__init__.py

# await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)

hass.config_entries.async_setup_platforms(entry, PLATFORMS)

复制代码

2.在dlna上不会自动下一曲,修改media_player.py

(1)

# 定时器时间

TIME_BETWEEN_UPDATES = datetime.timedelta(seconds=10)

复制代码

(2)

# 判断是否下一曲

if self.before_state is not None:

# 判断音乐总时长

if self.before_state['media_duration'] > 0 and self.before_state['media_duration'] - self.before_state['media_duration'] <= 5:

# 判断源音乐播放器状态

# if self.before_state['state'] == STATE_PLAYING and self.current_state == STATE_IDLE:

# if self.before_state['media_duration'] - self.before_state['media_position'] <= 10 and self.before_state['media_duration'] > 1 and self.before_state['media_duration'] - self.before_state['media_position'] >= 0:

if self._attr_media_duration - self._attr_media_position <= 19 and self._attr_media_duration > 1 and self._attr_media_duration - self._attr_media_position >= 0 :

self._attr_state = STATE_PAUSED

self.before_state = None

timeleft = self._attr_media_duration - self._attr_media_position

if timeleft > 13 :

time.sleep(timeleft-13)

self.hass.async_create_task(self.async_media_next_track())

self.before_state = None

return

# 源播放器空闲 & 当前正在播放

# if self.before_state['media_duration'] == 0 and self.before_state['media_position'] == 0 and self.current_state == STATE_IDLE \

# and self._attr_media_duration == 0 and self._attr_media_position == 0 and self._attr_state == STATE_PLAYING:

# self.hass.async_create_task(self.async_media_next_track())

# self.before_state = None

# return

if self.before_state['media_duration'] == 0 and self.before_state['media_position'] == 0 and self.current_state == STATE_PLAYING \

and self._attr_media_duration == 0 and self._attr_media_position == 0 and self._attr_state == STATE_PLAYING:

time.sleep(10)

if self.before_state['media_duration'] == 0 and self.before_state['media_position'] == 0 and self.current_state == STATE_PLAYING \

and self._attr_media_duration == 0 and self._attr_media_position == 0 and self._attr_state == STATE_PLAYING:

self.hass.async_create_task(self.async_media_next_track())

self.before_state = None

return

# 判断是否已暂停

if media_player.state == STATE_IDLE and self._attr_state != STATE_ON:

time.sleep(19)

if media_player.state == STATE_IDLE and self._attr_state != STATE_ON :

self.hass.async_create_task(self.async_media_pause())

self.before_state = None

return

复制代码

3.返回的链接为https,小爱音箱无法跳转,修改为http,修改http.py

(1)

not_found_tips = quote(f'当前没有找到编号是{id},歌名为{song},作者是{singer}的播放链接')

play_url = f'http://fanyi.baidu.com/gettts?lan=zh&text={not_found_tips}&spd=5&source=web'

复制代码

(2)

# 修改https为http

play_url2 = play_url.replace('https','http')

play_url = play_url2

print(play_url)

self.play_key = play_key

self.play_url = play_url

# 重定向到可播放链接

return web.HTTPFound(play_url)

复制代码

二、自动替换小爱音箱中的vip歌曲

实现思路:监测到小爱回复中有“试听版”三个字触发,自动由网易云插件搜索播放

前提:已安装好miot那个插件,可以识别音箱对话;ha中的dlna已配置好音箱

homeassistant自动化:

alias: 本地播放-替换试听版

description: ''

trigger:

- platform: state

entity_id:

- sensor.xiaomi_s12_4c94_conversation

- platform: state

entity_id:

- sensor.xiaomi_lx06_fd69_conversation

enabled: true

- platform: state

entity_id:

- sensor.xiaomi_lx06_ebe4_conversation

enabled: true

condition:

- condition: template

value_template: |

{{ (trigger.to_state|default(0)) and as_timestamp(now()) -

as_timestamp(trigger.to_state.attributes.timestamp) < 30 }}

{# 限制30秒内的对话 #}

enabled: true

- condition: not

conditions:

- condition: template

value_template: '{{ ''本地播放'' in trigger.to_state.state }}'

action:

- if:

- condition: template

value_template: |

{{ "%E8%AF%95%E5%90%AC%E7%89%88" in

trigger.to_state.attributes.answers[0]|urlencode() }}

then:

- if:

- condition: template

value_template: |

{{ 'media_player.xiaomi_s12_4c94_play_control' in

trigger.to_state.attributes.parent_entity_id }}

then:

- service: media_player.select_sound_mode

data:

sound_mode: media_player.xiao_ai_yin_xiang_0095

target:

device_id: f8b39494266357981171acd9068de644

- if:

- condition: template

value_template: |

{{ 'media_player.xiaomi_lx06_fd69_play_control' in

trigger.to_state.attributes.parent_entity_id }}

then:

- service: media_player.select_sound_mode

data:

sound_mode: media_player.xiao_ai_yin_xiang_8269

target:

device_id: f8b39494266357981171acd9068de644

- if:

- condition: template

value_template: |

{{ 'media_player.xiaomi_lx06_ebe4_play_control' in

trigger.to_state.attributes.parent_entity_id }}

then:

- service: media_player.select_sound_mode

data:

sound_mode: media_player.xiao_ai_yin_xiang_8269

target:

device_id: f8b39494266357981171acd9068de644

- service: media_player.play_media

data:

media_content_id: cloudmusic://play/song?kv={{trigger.to_state.attributes.content}}

media_content_type: music

target:

device_id: f8b39494266357981171acd9068de644

- service: system_log.write

data:

level: info

logger: custom_components.xiaomi_miot.xiaoai

message: |

{{ trigger.entity_id }}: {{ trigger.to_state.state }}

enabled: false

mode: single

复制代码

三、通过小爱音箱语音控制来播放网易云音乐

实现思路:监测小爱音箱对话中关键字,如果出现“本地播放”则触发,同时如果本地播放后面还跟有其他关键词则触发二级功能:

本地播放+热歌榜

+歌手 +(想传递去的搜索内容,比如歌手名)

+歌单 +(想传递去的搜索内容,比如歌单名)

+第三方 +(想传递去的搜索内容,比如歌手+歌名) 第三方音乐搜素,一首歌

+下一首

+随机播放

+顺序播放

+(不含以上搜索词,剩余部分想传递去的搜索内容,比如歌手+歌名)默认音乐搜索,一首歌

复制代码

如直接对小爱说“本地播放歌手五月天”则会触发搜索该歌手的歌曲,“本地播放五月天”则会触发搜索五月天一首歌

ha的自动化代码:

alias: 本地播放-网易云音乐

description: ''

trigger:

- platform: state

entity_id:

- sensor.xiaomi_s12_4c94_conversation

- platform: state

entity_id:

- sensor.xiaomi_lx06_fd69_conversation

enabled: true

- platform: state

entity_id:

- sensor.xiaomi_lx06_ebe4_conversation

enabled: true

condition:

- condition: template

value_template: |

{{ (trigger.to_state|default(0)) and as_timestamp(now()) -

as_timestamp(trigger.to_state.attributes.timestamp) < 30 }}

{# 限制30秒内的对话 #}

enabled: true

action:

- if:

- condition: template

value_template: |

{{ '本地播放' in trigger.to_state.state }}

then:

- if:

- condition: template

value_template: |

{{ 'media_player.xiaomi_s12_4c94_play_control' in

trigger.to_state.attributes.parent_entity_id }}

then:

- service: media_player.select_sound_mode

data:

sound_mode: media_player.xiao_ai_yin_xiang_0095

target:

device_id: f8b39494266357981171acd9068de644

- if:

- condition: template

value_template: |

{{ 'media_player.xiaomi_lx06_fd69_play_control' in

trigger.to_state.attributes.parent_entity_id }}

then:

- service: media_player.select_sound_mode

data:

sound_mode: media_player.xiao_ai_yin_xiang_8269

target:

device_id: f8b39494266357981171acd9068de644

- if:

- condition: template

value_template: |

{{ 'media_player.xiaomi_lx06_ebe4_play_control' in

trigger.to_state.attributes.parent_entity_id }}

then:

- service: media_player.select_sound_mode

data:

sound_mode: media_player.xiao_ai_yin_xiang_8269

target:

device_id: f8b39494266357981171acd9068de644

- choose:

- conditions:

- condition: template

value_template: '{{ ''热歌榜'' in trigger.to_state.state }}'

sequence:

- service: media_player.play_media

target:

entity_id: media_player.yun_yin_le

data:

media_content_id: >-

cloudmusic://163/playlist?title=%E7%83%AD%E6%AD%8C%E6%A6%9C&id=3778678

media_content_type: playlist

metadata:

title: 热歌榜

thumbnail: null

media_class: playlist

children_media_class: music

navigateIds:

- {}

- media_content_type: album

media_content_id: cloudmusic://163/toplist?title=%E6%A6%9C%E5%8D%95

- media_content_type: playlist

media_content_id: >-

cloudmusic://163/playlist?title=%E7%83%AD%E6%AD%8C%E6%A6%9C&id=3778678

- conditions:

- condition: template

value_template: '{{ ''歌手'' in trigger.to_state.state }}'

sequence:

- service: media_player.play_media

data:

media_content_id: >-

cloudmusic://play/singer?kv={{(trigger.to_state.state|replace("本地播放",""))|replace("歌手","")}}

media_content_type: music

target:

device_id: f8b39494266357981171acd9068de644

- conditions:

- condition: template

value_template: '{{ ''歌单'' in trigger.to_state.state }}'

sequence:

- service: media_player.play_media

data:

media_content_type: music

media_content_id: >-

cloudmusic://play/list?kv={{(trigger.to_state.state|replace("本地播放",""))|replace("歌单","")}}

target:

device_id: f8b39494266357981171acd9068de644

- conditions:

- condition: template

value_template: '{{ ''第三方'' in trigger.to_state.state }}'

sequence:

- service: media_player.play_media

data:

media_content_type: music

media_content_id: >-

cloudmusic://search/play?kv={{(trigger.to_state.state|replace("本地播放",""))|replace("第三方","")}}

target:

device_id: f8b39494266357981171acd9068de644

- conditions:

- condition: template

value_template: '{{ ''下一首'' in trigger.to_state.state }}'

sequence:

- service: media_player.media_next_track

data: {}

target:

device_id: f8b39494266357981171acd9068de644

- conditions:

- condition: template

value_template: '{{ ''随机播放'' in trigger.to_state.state }}'

sequence:

- service: media_player.shuffle_set

data:

shuffle: true

target:

device_id: f8b39494266357981171acd9068de644

- conditions:

- condition: template

value_template: '{{ ''顺序播放'' in trigger.to_state.state }}'

sequence:

- service: media_player.shuffle_set

data:

shuffle: false

target:

device_id: f8b39494266357981171acd9068de644

default:

- service: media_player.play_media

data:

media_content_type: music

media_content_id: >-

cloudmusic://play/song?kv={{trigger.to_state.state|replace("本地播放","")}}

target:

device_id: f8b39494266357981171acd9068de644

- service: system_log.write

data:

level: info

logger: custom_components.xiaomi_miot.xiaoai

message: |

{{ trigger.entity_id }}: {{ trigger.to_state.state }}

enabled: false

mode: single

复制代码

已知问题:如果只有一首歌,小爱音箱会循环播放,小度音箱会自动停止,应该是小爱的固件原因。

评分

参与人数 7金钱 +51

HASS币 +10

收起

理由

ha_czyj

+ 2

感谢楼主分享!

wangyiyuan

+ 10

感谢楼主分享!

cat_li

+ 2

论坛有你更精彩!

札幌蹦极花果

+ 2

论坛有你更精彩!

Smart_wp

+ 5

高手,这是高手!

+ 20

+ 10

感谢楼主分享!

隔壁的王叔叔

+ 10

墙都不扶,就服楼主!

查看全部评分

收藏72

回复

使用道具

举报

月亮火

月亮火

当前离线

积分981

金钱913

威望0

贡献0

HASS币0

3

主题65

回帖981

积分

高级会员

高级会员, 积分 981, 距离下一级还需 19 积分

高级会员, 积分 981, 距离下一级还需 19 积分

积分981

金钱913

HASS币0

发消息

沙发

发表于 2023-8-20 01:08:27

|

只看该作者

感觉非常有用,先收藏

回复

使用道具

举报

65698888

65698888

当前离线

积分1729

金钱1560

威望0

贡献0

HASS币10

9

主题160

回帖1729

积分

金牌会员

金牌会员, 积分 1729, 距离下一级还需 1271 积分

金牌会员, 积分 1729, 距离下一级还需 1271 积分

积分1729

金钱1560

HASS币10

发消息

板凳

发表于 2023-8-20 10:57:01

|

只看该作者

没有周杰伦

回复

使用道具

举报

cw4774

cw4774

当前离线

积分1553

金钱1317

威望0

贡献0

HASS币0

15

主题221

回帖1553

积分

金牌会员

金牌会员, 积分 1553, 距离下一级还需 1447 积分

金牌会员, 积分 1553, 距离下一级还需 1447 积分

积分1553

金钱1317

HASS币0

发消息

地板

发表于 2023-8-20 13:06:41

|

只看该作者

我家小爱万能版遥控带时钟的 没有dlan 可以不

回复

使用道具

举报

隔壁的王叔叔

隔壁的王叔叔

当前在线

积分5546

金钱3866

威望0

贡献0

HASS币0

14

主题1666

回帖5546

积分

论坛元老

积分5546

金钱3866

HASS币0

发消息

5#

发表于 2023-8-21 09:48:29

|

只看该作者

ha的自动化写的溜啊

回复

使用道具

举报

qqdwtypm

qqdwtypm

当前离线

积分149

金钱139

威望0

贡献0

HASS币10

2

主题8

回帖149

积分

论坛分享达人

积分149

金钱139

HASS币10

发消息

6#

楼主|

发表于 2023-8-21 10:51:33

|

只看该作者

65698888 发表于 2023-8-20 10:57

没有周杰伦

有的,插件作者直接在里面进行了专门处理

回复

使用道具

举报

qqdwtypm

qqdwtypm

当前离线

积分149

金钱139

威望0

贡献0

HASS币10

2

主题8

回帖149

积分

论坛分享达人

积分149

金钱139

HASS币10

发消息

7#

楼主|

发表于 2023-8-21 10:55:28

|

只看该作者

cw4774 发表于 2023-8-20 13:06

我家小爱万能版遥控带时钟的 没有dlan 可以不

识别tts部分主要是看miot是否支持,放歌的部分dlna只是一个手段,也可以考虑在ha上通过蓝牙连接目标音箱,或者直接在ha上声卡输出

回复

使用道具

举报

252376009

252376009

当前离线

积分509

金钱465

威望0

贡献0

HASS币0

1

主题43

回帖509

积分

高级会员

高级会员, 积分 509, 距离下一级还需 491 积分

高级会员, 积分 509, 距离下一级还需 491 积分

积分509

金钱465

HASS币0

发消息

8#

发表于 2023-8-27 12:00:07

|

只看该作者

请教楼主 device_id是指云音乐的么

回复

使用道具

举报

qqdwtypm

qqdwtypm

当前离线

积分149

金钱139

威望0

贡献0

HASS币10

2

主题8

回帖149

积分

论坛分享达人

积分149

金钱139

HASS币10

发消息

9#

楼主|

发表于 2023-8-29 20:27:43

|

只看该作者

252376009 发表于 2023-8-27 12:00

请教楼主 device_id是指云音乐的么

是的。可以通过自动化ui界面来编写,然后切换为yaml就可以获得。

回复

使用道具

举报

hxck

hxck

当前离线

积分870

金钱752

威望0

贡献0

HASS币0

4

主题114

回帖870

积分

高级会员

高级会员, 积分 870, 距离下一级还需 130 积分

高级会员, 积分 870, 距离下一级还需 130 积分

积分870

金钱752

HASS币0

发消息

10#

发表于 2023-8-30 21:28:43

|

只看该作者

大佬,能出个视频不,看的云里雾里的。哈哈

回复

使用道具

举报

← 上一篇: 巨蟹座和什么座最配:第5名摩羯座
下一篇: Excel 技巧:插入 > 插图 →

相关推荐

闰月过寿不吉利?闰月生日究竟怎么过?有哪些禁忌讲究?_手机网易网

闰月过寿不吉利?闰月生日究竟怎么过?有哪些禁忌讲究?_手机网易网

今年闰六月,上一次闰六月是在2017年,下一次则要等到2036年,相对比较少见。 这个“多出来”的月份让不少人感到困惑:闰月出生的人,要不

QQ会员与超级会员哪个更划算?深度解析两者差异!

QQ会员与超级会员哪个更划算?深度解析两者差异!

 哎,说起来QQ会员和超级会员的区别啊,这玩意儿,我琢磨了半天,其实吧,也就是那么回事儿。 就像玩游戏选职业一样,一个战士,一个

汽车之家

汽车之家

确实会满!很多人以为循环录制自动覆盖就可以不理了。大错。要定期格式化,否则到时要查看就傻眼了。 满的原因是有个碰撞(急刹)自动锁

京东平台怎么注册商家?京东注册入驻需要多久?

京东平台怎么注册商家?京东注册入驻需要多久?

京东平台怎么注册商家?京东平台当中的商家注册是需要按规定执行的,如果注册当中有些需要填写的内容没有填写就会失败,下面来跟着我们

胡志强哭救太太  周永康冷血杀妻(多图)

胡志强哭救太太 周永康冷血杀妻(多图)

【人民报消息】2006年11月18日,台湾台中市长胡志强和夫人邵晓铃发生车祸受伤入院,邵晓铃伤势严重,昏迷不醒,生命垂危。21日胡志强在医院

《魔兽世界》wlk黑色沼泽副本入口位置

《魔兽世界》wlk黑色沼泽副本入口位置

黑色沼泽是魔兽世界中的一个地下城,那么黑色沼泽副本入口在哪呢,首先玩家要完成拯救萨尔的任务才能开启该副本,然后前往任意一个法师