From df85873726fbc1e4ad872a0c0294faff8867306f Mon Sep 17 00:00:00 2001 From: Aqr-K <95741669+Aqr-K@users.noreply.github.com> Date: Mon, 14 Jul 2025 22:04:09 +0800 Subject: [PATCH] feat(ua): add `cup_arch` , `USER_AGENT` value add `cup_arch` --- app/core/config.py | 4 ++-- app/utils/system.py | 41 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index 282fb797..37ebcdfb 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -13,9 +13,9 @@ from dotenv import set_key from pydantic import BaseModel, BaseSettings, validator, Field from app.log import logger, log_settings, LogConfigModel +from app.schemas import MediaType from app.utils.system import SystemUtils from app.utils.url import UrlUtils -from app.schemas import MediaType from version import APP_VERSION @@ -515,7 +515,7 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel): """ 全局用户代理字符串 """ - return f"{self.PROJECT_NAME}/{APP_VERSION[1:]} ({platform.system()}/{platform.release()})" + return f"{self.PROJECT_NAME}/{APP_VERSION[1:]} ({platform.system()} {platform.release()}; {SystemUtils.cup_arch()})" @property def INNER_CONFIG_PATH(self): diff --git a/app/utils/system.py b/app/utils/system.py index bc47f5b3..38424609 100644 --- a/app/utils/system.py +++ b/app/utils/system.py @@ -96,7 +96,30 @@ class SystemUtils: """ 判断是否为ARM64架构 """ - return True if platform.machine() == 'aarch64' else False + return True if platform.machine().lower() in ('aarch64', 'arm64') else False + + @staticmethod + def is_aarch() -> bool: + """ + 判断是否为ARM32架构 + """ + arch_name = platform.machine().lower() + is_arm_prefix = True if arch_name.startswith('arm') or arch_name.startswith('aarch') else False + return True if (is_arm_prefix and arch_name not in ('aarch64', 'arm64')) else False + + @staticmethod + def is_x86_64() -> bool: + """ + 判断是否为AMD64架构 + """ + return True if platform.machine().lower() in ('amd64', 'x86_64') else False + + @staticmethod + def is_x86_32() -> bool: + """ + 判断是否为AMD32架构 + """ + return True if platform.machine().lower() in ('i386', 'i686', 'x86', '386', 'x86_32') else False @staticmethod def platform() -> str: @@ -112,6 +135,22 @@ class SystemUtils: else: return "Linux" + @staticmethod + def cpu_arch() -> str: + """ + 获取CPU架构 + """ + if SystemUtils.is_x86_64(): + return "x86_64" + elif SystemUtils.is_x86_32(): + return "x86_32" + elif SystemUtils.is_aarch64(): + return "Arm64" + elif SystemUtils.is_aarch(): + return "Arm32" + else: + return platform.machine() + @staticmethod def copy(src: Path, dest: Path) -> Tuple[int, str]: """