feat: 触屏版显示歌曲名称 (#156)

* feat:触屏版显示歌曲名称

* fix:修改日志级别

* fix:修改歌曲名称获取方式
This commit is contained in:
Yan Zenghui 2024-09-09 17:32:02 +08:00 committed by GitHub
parent 632e411c6e
commit 980772bf9c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1001,7 +1001,7 @@ class XiaoMusicDevice:
sec, url = await self.xiaomusic.get_music_sec_url(name) sec, url = await self.xiaomusic.get_music_sec_url(name)
await self.group_force_stop_xiaoai() await self.group_force_stop_xiaoai()
self.log.info(f"播放 {url}") self.log.info(f"播放 {url}")
results = await self.group_player_play(url) results = await self.group_player_play(url, name)
if all(ele is None for ele in results): if all(ele is None for ele in results):
self.log.info(f"播放 {name} 失败") self.log.info(f"播放 {name} 失败")
await asyncio.sleep(1) await asyncio.sleep(1)
@ -1187,22 +1187,23 @@ class XiaoMusicDevice:
self.log.exception(f"Execption {e}") self.log.exception(f"Execption {e}")
# 同一组设备播放 # 同一组设备播放
async def group_player_play(self, url): async def group_player_play(self, url, name=""):
device_id_list = self.xiaomusic.get_group_device_id_list(self.group_name) device_id_list = self.xiaomusic.get_group_device_id_list(self.group_name)
tasks = [self.play_one_url(device_id, url) for device_id in device_id_list] tasks = [self.play_one_url(device_id, url, name) for device_id in device_id_list]
results = await asyncio.gather(*tasks) results = await asyncio.gather(*tasks)
self.log.info(f"group_player_play {url} {device_id_list} {results}") self.log.info(f"group_player_play {url} {device_id_list} {results}")
return results return results
async def play_one_url(self, device_id, url): async def play_one_url(self, device_id, url, name):
ret = None ret = None
try: try:
audio_id = await self._get_audio_id(name)
if self.config.use_music_api: if self.config.use_music_api:
ret = await self.xiaomusic.mina_service.play_by_music_url( ret = await self.xiaomusic.mina_service.play_by_music_url(
device_id, url device_id, url, audio_id=audio_id
) )
self.log.info( self.log.info(
f"play_one_url play_by_music_url device_id:{device_id} ret:{ret} url:{url}" f"play_one_url play_by_music_url device_id:{device_id} ret:{ret} url:{url} audio_id:{audio_id}"
) )
else: else:
ret = await self.xiaomusic.mina_service.play_by_url(device_id, url) ret = await self.xiaomusic.mina_service.play_by_url(device_id, url)
@ -1213,6 +1214,23 @@ class XiaoMusicDevice:
self.log.exception(f"Execption {e}") self.log.exception(f"Execption {e}")
return ret return ret
async def _get_audio_id(self, name):
audio_id = 1582971365183456177
try:
params = {
"query": name,
"queryType": 1,
"offset": 0,
"count": 6,
"timestamp": int(time.time_ns() / 1000)
}
response = await self.xiaomusic.mina_service.mina_request('/music/search', params)
audio_id = response['data']['songList'][5]['audioID'] # QQ音乐为搜索结果的第6首歌
self.log.debug(f"_get_audio_id. name: {name} songId:{audio_id}")
except Exception as e:
self.log.error(f"_get_audio_id {e}")
finally:
return str(audio_id)
# 设置下一首歌曲的播放定时器 # 设置下一首歌曲的播放定时器
async def set_next_music_timeout(self, sec): async def set_next_music_timeout(self, sec):
self.cancel_next_timer() self.cancel_next_timer()