fix 修复V2最新版本号获取

This commit is contained in:
jxxghp
2024-11-12 08:37:07 +08:00
parent 942c9ae545
commit f1f379966a
+39 -49
View File
@@ -1,6 +1,5 @@
import json import json
import re import re
from pathlib import Path
from typing import Union from typing import Union
from app.chain import ChainBase from app.chain import ChainBase
@@ -10,6 +9,7 @@ from app.schemas import Notification, MessageChannel
from app.utils.http import RequestUtils from app.utils.http import RequestUtils
from app.utils.singleton import Singleton from app.utils.singleton import Singleton
from app.utils.system import SystemUtils from app.utils.system import SystemUtils
from version import FRONTEND_VERSION, APP_VERSION
class SystemChain(ChainBase, metaclass=Singleton): class SystemChain(ChainBase, metaclass=Singleton):
@@ -98,77 +98,67 @@ class SystemChain(ChainBase, metaclass=Singleton):
@staticmethod @staticmethod
def __get_server_release_version(): def __get_server_release_version():
""" """
获取后端最新版本 获取后端V2最新版本
""" """
try: try:
version_res = RequestUtils(proxies=settings.PROXY, headers=settings.GITHUB_HEADERS).get_res( # 获取所有发布的版本列表
"https://api.github.com/repos/jxxghp/MoviePilot/releases/latest") response = RequestUtils(
if version_res: proxies=settings.PROXY,
ver_json = version_res.json() headers=settings.GITHUB_HEADERS
version = f"{ver_json['tag_name']}" ).get_res("https://api.github.com/repos/jxxghp/MoviePilot/releases")
return version if response:
releases = [release['tag_name'] for release in response.json()]
v2_releases = [tag for tag in releases if re.match(r"^v2\.", tag)]
if not v2_releases:
logger.warn("获取v2后端最新版本版本出错!")
else:
# 找到最新的v2版本
latest_v2 = sorted(v2_releases, key=lambda s: list(map(int, re.findall(r'\d+', s))))[-1]
logger.info(f"获取到后端最新版本:{latest_v2}")
return latest_v2
else: else:
return None logger.error("无法获取后端版本信息,请检查网络连接或GitHub API请求。")
except Exception as err: except Exception as err:
logger.error(f"获取后端最新版本失败:{str(err)}") logger.error(f"获取后端最新版本失败:{str(err)}")
return None return None
@staticmethod @staticmethod
def __get_front_release_version(): def __get_front_release_version():
""" """
获取前端最新版本 获取前端V2最新版本
""" """
try: try:
version_res = RequestUtils(proxies=settings.PROXY, headers=settings.GITHUB_HEADERS).get_res( # 获取所有发布的版本列表
"https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases/latest") response = RequestUtils(
if version_res: proxies=settings.PROXY,
ver_json = version_res.json() headers=settings.GITHUB_HEADERS
version = f"{ver_json['tag_name']}" ).get_res("https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases")
return version if response:
releases = [release['tag_name'] for release in response.json()]
v2_releases = [tag for tag in releases if re.match(r"^v2\.", tag)]
if not v2_releases:
logger.warn("获取v2前端最新版本版本出错!")
else:
# 找到最新的v2版本
latest_v2 = sorted(v2_releases, key=lambda s: list(map(int, re.findall(r'\d+', s))))[-1]
logger.info(f"获取到前端最新版本:{latest_v2}")
return latest_v2
else: else:
return None logger.error("无法获取前端版本信息,请检查网络连接或GitHub API请求。")
except Exception as err: except Exception as err:
logger.error(f"获取前端最新版本失败:{str(err)}") logger.error(f"获取前端最新版本失败:{str(err)}")
return None return None
@staticmethod @staticmethod
def get_server_local_version(): def get_server_local_version():
""" """
查看当前版本 查看当前版本
""" """
version_file = settings.ROOT_PATH / "version.py" return APP_VERSION
if version_file.exists():
try:
with open(version_file, 'rb') as f:
version = f.read()
pattern = r"'([^']*)'"
match = re.search(pattern, str(version))
if match:
version = match.group(1)
return version
else:
logger.warn("未找到版本号")
return None
except Exception as err:
logger.error(f"加载版本文件 {version_file} 出错:{str(err)}")
@staticmethod @staticmethod
def get_frontend_version(): def get_frontend_version():
""" """
获取前端版本 获取前端版本
""" """
if SystemUtils.is_frozen() and SystemUtils.is_windows(): return FRONTEND_VERSION
version_file = settings.CONFIG_PATH.parent / "nginx" / "html" / "version.txt"
else:
version_file = Path(settings.FRONTEND_PATH) / "version.txt"
if version_file.exists():
try:
with open(version_file, 'r') as f:
version = str(f.read()).strip()
return version
except Exception as err:
logger.error(f"加载版本文件 {version_file} 出错:{str(err)}")
else:
logger.warn("未找到前端版本文件,请正确设置 FRONTEND_PATH")
return None