File size: 2,181 Bytes
d0dd276
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import requests
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.version['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.version['remote_version']= version_line.split("=")[1] if "=" in version_line else "0.0.0"
            # 比较版本号
            local_parts = [int(x) for x in settings.version['local_version'].split(".")]
            remote_parts = [int(x) for x in settings.version['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.version['has_update'] = False
            for i in range(len(local_parts)):
                if remote_parts[i] > local_parts[i]:
                    settings.version['has_update'] = True
                    break
                elif remote_parts[i] < local_parts[i]:
                    break
            
            log('info', f"版本检查: 本地版本 {settings.version['local_version']}, 远程版本 {settings.version['remote_version']}, 有更新: {settings.version['has_update']}")
        else:
            log('warning', f"无法获取远程版本信息,HTTP状态码: {response.status_code}")
    except Exception as e:
        log('error', f"版本检查失败: {str(e)}")
        
    return settings.version['has_update']