fix: 解决 L05C 无提示音问题 support MiIOService tts (#198)
* support MiIOService tts * Auto-format code 🧹🌟🤖 --------- Co-authored-by: Formatter [BOT] <runner@fv-az1773-635.5c5iphqueiuuvdxclnr0txjlua.dx.internal.cloudapp.net>
This commit is contained in:
parent
6e8830c4e6
commit
55b8b4e966
@ -247,6 +247,7 @@ docker build -t xiaomusic .
|
|||||||
- XIAOMUSIC_PUBLIC_PORT 用于设置外网端口,对应后台的 【外网访问端口】,当使用反向代理时可以设置为外网端口,XIAOMUSIC_HOSTNAME 设为外网IP或者域名即可。
|
- XIAOMUSIC_PUBLIC_PORT 用于设置外网端口,对应后台的 【外网访问端口】,当使用反向代理时可以设置为外网端口,XIAOMUSIC_HOSTNAME 设为外网IP或者域名即可。
|
||||||
- XIAOMUSIC_DOWNLOAD_PATH 变量可以配置下载目录,默认为空,表示使用 music 目录为下载目录,对应后台的 【音乐下载目录】。设置这个目录必须是 music 的子目录,否则刷新列表后会找不到歌曲。具体见 <https://github.com/hanxi/xiaomusic/issues/98>
|
- XIAOMUSIC_DOWNLOAD_PATH 变量可以配置下载目录,默认为空,表示使用 music 目录为下载目录,对应后台的 【音乐下载目录】。设置这个目录必须是 music 的子目录,否则刷新列表后会找不到歌曲。具体见 <https://github.com/hanxi/xiaomusic/issues/98>
|
||||||
- XIAOMUSIC_PROXY 用于配置国内使用 youtube 源下载歌曲时使用的代理,参数格式参考 yt-dlp 文档说明。 见 <https://github.com/hanxi/xiaomusic/issues/2> 和 <https://github.com/hanxi/xiaomusic/issues/11>
|
- XIAOMUSIC_PROXY 用于配置国内使用 youtube 源下载歌曲时使用的代理,参数格式参考 yt-dlp 文档说明。 见 <https://github.com/hanxi/xiaomusic/issues/2> 和 <https://github.com/hanxi/xiaomusic/issues/11>
|
||||||
|
- MIIO_TTS_CMD 用于部分机型(如:`L05C`)使用 MiIO 支持 tts 能力,默认为空,命令选择见 [MiService-fork 文档](https://github.com/yihong0618/MiService)
|
||||||
|
|
||||||
### :warning: 安全提醒
|
### :warning: 安全提醒
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
"account": "",
|
"account": "",
|
||||||
"password": "",
|
"password": "",
|
||||||
"mi_did": "",
|
"mi_did": "",
|
||||||
|
"miio_tts_command": null,
|
||||||
"cookie": "",
|
"cookie": "",
|
||||||
"verbose": false,
|
"verbose": false,
|
||||||
"music_path": "music",
|
"music_path": "music",
|
||||||
|
@ -77,6 +77,7 @@ class Config:
|
|||||||
account: str = os.getenv("MI_USER", "")
|
account: str = os.getenv("MI_USER", "")
|
||||||
password: str = os.getenv("MI_PASS", "")
|
password: str = os.getenv("MI_PASS", "")
|
||||||
mi_did: str = os.getenv("MI_DID", "") # 逗号分割支持多设备
|
mi_did: str = os.getenv("MI_DID", "") # 逗号分割支持多设备
|
||||||
|
miio_tts_command: str = os.getenv("MIIO_TTS_CMD", "")
|
||||||
cookie: str = ""
|
cookie: str = ""
|
||||||
verbose: bool = os.getenv("XIAOMUSIC_VERBOSE", "").lower() == "true"
|
verbose: bool = os.getenv("XIAOMUSIC_VERBOSE", "").lower() == "true"
|
||||||
music_path: str = os.getenv(
|
music_path: str = os.getenv(
|
||||||
|
@ -110,6 +110,9 @@ var vConsole = new window.VConsole();
|
|||||||
<option value="false" selected>false</option>
|
<option value="false" selected>false</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<label for="miio_tts_command">MiIO sst 指令:</label>
|
||||||
|
<input id="miio_tts_command" type="text" placeholder="如:5 或者 5-3"></input>
|
||||||
|
|
||||||
<label for="disable_httpauth">关闭控制台密码验证:</label>
|
<label for="disable_httpauth">关闭控制台密码验证:</label>
|
||||||
<select id="disable_httpauth">
|
<select id="disable_httpauth">
|
||||||
<option value="true" selected>true</option>
|
<option value="true" selected>true</option>
|
||||||
|
@ -15,7 +15,7 @@ from logging.handlers import RotatingFileHandler
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from aiohttp import ClientSession, ClientTimeout
|
from aiohttp import ClientSession, ClientTimeout
|
||||||
from miservice import MiAccount, MiNAService
|
from miservice import MiAccount, MiIOService, MiNAService, miio_command
|
||||||
|
|
||||||
from xiaomusic import __version__
|
from xiaomusic import __version__
|
||||||
from xiaomusic.analytics import Analytics
|
from xiaomusic.analytics import Analytics
|
||||||
@ -64,6 +64,7 @@ class XiaoMusic:
|
|||||||
self.last_record = None
|
self.last_record = None
|
||||||
self.cookie_jar = None
|
self.cookie_jar = None
|
||||||
self.mina_service = None
|
self.mina_service = None
|
||||||
|
self.miio_service = None
|
||||||
self.polling_event = asyncio.Event()
|
self.polling_event = asyncio.Event()
|
||||||
self.new_record_event = asyncio.Event()
|
self.new_record_event = asyncio.Event()
|
||||||
|
|
||||||
@ -215,6 +216,7 @@ class XiaoMusic:
|
|||||||
# Forced login to refresh to refresh token
|
# Forced login to refresh to refresh token
|
||||||
await account.login("micoapi")
|
await account.login("micoapi")
|
||||||
self.mina_service = MiNAService(account)
|
self.mina_service = MiNAService(account)
|
||||||
|
self.miio_service = MiIOService(account)
|
||||||
|
|
||||||
async def try_update_device_id(self):
|
async def try_update_device_id(self):
|
||||||
try:
|
try:
|
||||||
@ -1129,6 +1131,10 @@ class XiaoMusicDevice:
|
|||||||
self._last_cmd = None
|
self._last_cmd = None
|
||||||
self.update_playlist()
|
self.update_playlist()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def did(self):
|
||||||
|
return self.xiaomusic.device_id_did[self.device_id]
|
||||||
|
|
||||||
def get_cur_music(self):
|
def get_cur_music(self):
|
||||||
return self.device.cur_music
|
return self.device.cur_music
|
||||||
|
|
||||||
@ -1504,7 +1510,17 @@ class XiaoMusicDevice:
|
|||||||
|
|
||||||
async def text_to_speech(self, value):
|
async def text_to_speech(self, value):
|
||||||
try:
|
try:
|
||||||
await self.xiaomusic.mina_service.text_to_speech(self.device_id, value)
|
if not self.config.miio_tts_command:
|
||||||
|
self.log.debug("Call MiNAService tts.")
|
||||||
|
await self.xiaomusic.mina_service.text_to_speech(self.device_id, value)
|
||||||
|
else:
|
||||||
|
self.log.debug("Call MiIOService tts.")
|
||||||
|
value = value.replace(" ", ",") # 不能有空格
|
||||||
|
await miio_command(
|
||||||
|
self.xiaomusic.miio_service,
|
||||||
|
self.did,
|
||||||
|
f"{self.config.miio_tts_command} {value}",
|
||||||
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.exception(f"Execption {e}")
|
self.log.exception(f"Execption {e}")
|
||||||
|
|
||||||
@ -1640,6 +1656,7 @@ class XiaoMusicDevice:
|
|||||||
self._playing = False
|
self._playing = False
|
||||||
if arg1 != "notts":
|
if arg1 != "notts":
|
||||||
await self.do_tts(self.config.stop_tts_msg)
|
await self.do_tts(self.config.stop_tts_msg)
|
||||||
|
await asyncio.sleep(3) # 等它说完
|
||||||
# 取消组内所有的下一首歌曲的定时器
|
# 取消组内所有的下一首歌曲的定时器
|
||||||
self.cancel_group_next_timer()
|
self.cancel_group_next_timer()
|
||||||
await self.group_force_stop_xiaoai()
|
await self.group_force_stop_xiaoai()
|
||||||
|
Loading…
Reference in New Issue
Block a user