Skip to content

Commit

Permalink
feat: 触屏版显示歌曲名称 (#156)
Browse files Browse the repository at this point in the history
* feat:触屏版显示歌曲名称

* fix:修改日志级别

* fix:修改歌曲名称获取方式
  • Loading branch information
grayana authored Sep 9, 2024
1 parent 632e411 commit 980772b
Showing 1 changed file with 24 additions and 6 deletions.
30 changes: 24 additions & 6 deletions xiaomusic/xiaomusic.py
Original file line number Diff line number Diff line change
Expand Up @@ -1001,7 +1001,7 @@ async def _playmusic(self, name):
sec, url = await self.xiaomusic.get_music_sec_url(name)
await self.group_force_stop_xiaoai()
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):
self.log.info(f"播放 {name} 失败")
await asyncio.sleep(1)
Expand Down Expand Up @@ -1187,22 +1187,23 @@ async def text_to_speech(self, value):
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)
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)
self.log.info(f"group_player_play {url} {device_id_list} {results}")
return results

async def play_one_url(self, device_id, url):
async def play_one_url(self, device_id, url, name):
ret = None
try:
audio_id = await self._get_audio_id(name)
if self.config.use_music_api:
ret = await self.xiaomusic.mina_service.play_by_music_url(
device_id, url
device_id, url, audio_id=audio_id
)
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:
ret = await self.xiaomusic.mina_service.play_by_url(device_id, url)
Expand All @@ -1213,6 +1214,23 @@ async def play_one_url(self, device_id, url):
self.log.exception(f"Execption {e}")
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):
self.cancel_next_timer()
Expand Down

0 comments on commit 980772b

Please sign in to comment.