|
|
import requests
|
|
|
import logging
|
|
|
from app.utils.logging import log
|
|
|
import app.config.settings as settings
|
|
|
async def check_version():
|
|
|
"""
|
|
|
检查应用程序版本更新
|
|
|
|
|
|
从本地和远程获取版本信息,并比较版本号以确定是否有更新
|
|
|
"""
|
|
|
|
|
|
try:
|
|
|
|
|
|
with open("./version.txt", "r") as f:
|
|
|
version_line = f.read().strip()
|
|
|
settings.local_version = version_line.split("=")[1] if "=" in version_line else "0.0.0"
|
|
|
|
|
|
|
|
|
github_url = "https://raw.githubusercontent.com/wyeeeee/hajimi/refs/heads/main/version.txt"
|
|
|
response = requests.get(github_url, timeout=5)
|
|
|
if response.status_code == 200:
|
|
|
version_line = response.text.strip()
|
|
|
settings.remote_version = version_line.split("=")[1] if "=" in version_line else "0.0.0"
|
|
|
|
|
|
|
|
|
local_parts = [int(x) for x in settings.local_version.split(".")]
|
|
|
remote_parts = [int(x) for x in settings.remote_version.split(".")]
|
|
|
|
|
|
|
|
|
while len(local_parts) < len(remote_parts):
|
|
|
local_parts.append(0)
|
|
|
while len(remote_parts) < len(local_parts):
|
|
|
remote_parts.append(0)
|
|
|
|
|
|
|
|
|
settings.has_update = False
|
|
|
for i in range(len(local_parts)):
|
|
|
if remote_parts[i] > local_parts[i]:
|
|
|
settings.has_update = True
|
|
|
break
|
|
|
elif remote_parts[i] < local_parts[i]:
|
|
|
break
|
|
|
|
|
|
log('info', f"版本检查: 本地版本 {settings.local_version}, 远程版本 {settings.remote_version}, 有更新: {settings.has_update}")
|
|
|
else:
|
|
|
log('warning', f"无法获取远程版本信息,HTTP状态码: {response.status_code}")
|
|
|
except Exception as e:
|
|
|
log('error', f"版本检查失败: {str(e)}")
|
|
|
|
|
|
return settings.local_version, settings.remote_version, settings.has_update |