Closed Gzzloveyyt closed 9 months ago
@shaonianzhentan 麻烦能给看下吗
一样的情况
我也是啊,有没有解决了的大佬给个方案啊
我没有设备调试,无法解决这个问题
DLNA设备一样播放列表无法自动切歌,就放第一首
我进群问了,小爱pro DLNA的问题,目前没法解决。
@shaonianzhentan @superbobgithub 确定是小爱dlna的问题? 为什么我这边用的Musicassistant来播放就会自动切歌呢,同样都是用的小爱音响
@shaonianzhentan @superbobgithub 确定是小爱dlna的问题? 为什么我这边用的Musicassistant来播放就会自动切歌呢,同样都是用的小爱音响
只是有很多人反馈,我并没有测试过
在2023.8.13的版本上做如下修改:
1. 在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
2. 返回的链接为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)
@shaonianzhentan 我按照楼上 @qqdwtypm 大佬的方法修改了以后确实会自动切换列表了, 麻烦您能测试下然后同步到代码里吗?
@shaonianzhentan 我按照楼上 @qqdwtypm 大佬的方法修改了以后确实会自动切换列表了, 麻烦您能测试下然后同步到代码里吗?
我没有这个问题,建议自行fork一份
@shaonianzhentan 我看到您更新了2023.12.19版本,修复了小爱音响的问题,您在公众号上发布的文章里写的还是没有解决自动切换下一首的问题,但是我按照楼上大佬这个代码改过之后,确实可以自动切换下一首了,不会单曲循环,您既然手头里有小爱音箱,是否可以按照上方代码改过后测试一下
如下图,用的是小爱音响!