From 14e7a151a310bee903b320498df8e6c299ad3c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B6=B5=E6=9B=A6?= Date: Sun, 15 Dec 2024 07:58:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B0=9D=E8=AF=95=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E4=B8=83=E7=89=9B=E8=AE=BE=E5=A4=87=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xiaomusic/analytics.py | 53 ++++++++++++++++++++++------------------- xiaomusic/httpserver.py | 8 +++++++ xiaomusic/utils.py | 25 +++++++++++++++++++ 3 files changed, 61 insertions(+), 25 deletions(-) diff --git a/xiaomusic/analytics.py b/xiaomusic/analytics.py index 979ddf1..a5ba7c1 100644 --- a/xiaomusic/analytics.py +++ b/xiaomusic/analytics.py @@ -69,32 +69,35 @@ class Analytics: return None async def post_to_umami(self, event): - url = "https://umami.hanxi.cc/api/send" - user_agent = self._get_user_agent() - event.set_event_param(name="useragent", value=user_agent) - data = { - "payload": { - "hostname": self.config.hostname, - "language": "zh-CN", - "referrer": "", - "screen": "430x932", - "title": "后端统计", - "url": "/backend", - "website": "7bfb0890-4115-4260-8892-b391513e7e99", - "name": event.get_event_name(), - "data": event.get_event_params(), - }, - "type": "event", - } - - async with aiohttp.ClientSession() as session: - headers = { - "User-Agent": user_agent, + try: + url = "https://umami.hanxi.cc/api/send" + user_agent = self._get_user_agent() + event.set_event_param(name="useragent", value=user_agent) + data = { + "payload": { + "hostname": self.config.hostname, + "language": "zh-CN", + "referrer": "", + "screen": "430x932", + "title": "后端统计", + "url": "/backend", + "website": "7bfb0890-4115-4260-8892-b391513e7e99", + "name": event.get_event_name(), + "data": event.get_event_params(), + }, + "type": "event", } - # self.log.info(f"headers {headers}, {data}") - async with session.post(url, json=data, headers=headers) as response: - self.log.info(f"umami Status: {response.status}") - await response.text() + + async with aiohttp.ClientSession() as session: + headers = { + "User-Agent": user_agent, + } + # self.log.info(f"headers {headers}, {data}") + async with session.post(url, json=data, headers=headers) as response: + self.log.info(f"umami Status: {response.status}") + await response.text() + except Exception as e: + self.log.exception(f"Execption {e}") def _get_user_agent(self): try: diff --git a/xiaomusic/httpserver.py b/xiaomusic/httpserver.py index 3b66d35..6075a60 100644 --- a/xiaomusic/httpserver.py +++ b/xiaomusic/httpserver.py @@ -45,6 +45,7 @@ from xiaomusic.utils import ( remove_common_prefix, remove_id3_tags, try_add_access_control_param, + update_version, ) xiaomusic = None @@ -571,6 +572,13 @@ async def playlistdelmusic(data: PlayListMusicObj, Verifcation=Depends(verificat return {"ret": "Del failed, may be playlist not exist."} +# 更新版本 +@app.post("/updateversion") +async def updateversion(version: str = "", Verifcation=Depends(verification)): + ret = update_version(version) + return {"ret": ret} + + async def file_iterator(file_path, start, end): async with aiofiles.open(file_path, mode="rb") as file: await file.seek(start) diff --git a/xiaomusic/utils.py b/xiaomusic/utils.py index 413f140..af5ebe8 100644 --- a/xiaomusic/utils.py +++ b/xiaomusic/utils.py @@ -1010,3 +1010,28 @@ def not_in_dirs(filename, ignore_absolute_dirs): return False # 文件在排除目录中 return True # 文件不在排除目录中 + + +def is_docker(): + return os.path.exists("/app/.dockerenv") + + +def restart_xiaomusic(): + if not is_docker(): + ret = "xiaomusic 重启只能在 docker 中进行" + log.info(ret) + return False, ret + try: + # 重启 xiaomusic 程序 + subprocess.run(["supervisorctl", "restart", "xiaomusic"], check=True) + log.info("xiaomusic 重启成功") + except subprocess.CalledProcessError as e: + log.info(f"xiaomusic 重启失败: {e}") + return False, "xiaomusic 重启失败" + return True + + +def update_version(version): + ok, ret = restart_xiaomusic() + if not ok: + return ret