新增XIAOMUSIC_USE_MUSIC_API=true时使用player_play_music接口,兼容部分不能播放的设备型号 see #30

This commit is contained in:
涵曦 2024-06-27 05:27:28 +00:00
parent 4a234e8829
commit 17279aaae0
3 changed files with 30 additions and 1 deletions

View File

@ -86,6 +86,9 @@ class Config:
)
key_word_dict = DEFAULT_KEY_WORD_DICT.copy()
key_match_order = DEFAULT_KEY_MATCH_ORDER.copy()
use_music_api: bool = (
os.getenv("XIAOMUSIC_USE_MUSIC_API", "false").lower() == "true"
)
def append_keyword(self, keys, action):
for key in keys.split(","):

View File

@ -3,7 +3,9 @@ from __future__ import annotations
import difflib
import os
import random
import re
import string
import tempfile
from collections.abc import AsyncIterator
from http.cookies import SimpleCookie
@ -213,3 +215,7 @@ def get_local_music_duration(filename):
except Exception:
pass
return duration
def get_random(length):
return "".join(random.sample(string.ascii_letters + string.digits, length))

View File

@ -29,6 +29,7 @@ from xiaomusic.utils import (
custom_sort_key,
fuzzyfinder,
get_local_music_duration,
get_random,
get_web_music_duration,
parse_cookie_string,
walk_to_depth,
@ -622,6 +623,25 @@ class XiaoMusic:
return True
return False
async def play_url(self, url):
if self.config.use_music_api:
audio_id = get_random(30)
music = {
"payload": {
"audio_items": [
{"item_id": {"audio_id": audio_id}, "stream": {"url": url}}
],
}
}
return await self.mina_service.ubus_request(
self.device_id,
"player_play_music",
"mediaplayer",
{"startaudioid": audio_id, "music": json.dumps(music)},
)
else:
await self.mina_service.play_by_url(self.device_id, url)
# 播放本地歌曲
async def playlocal(self, **kwargs):
name = kwargs.get("arg1", "")
@ -647,7 +667,7 @@ class XiaoMusic:
url = self.get_music_url(name)
self.log.info(f"播放 {url}")
await self.force_stop_xiaoai()
await self.mina_service.play_by_url(self.device_id, url)
await self.play_url(url)
self.log.info("已经开始播放了")
# 设置下一首歌曲的播放定时器
await self.set_next_music_timeout()