This commit is contained in:
hnking
2025-10-17 22:19:04 +08:00
parent a2cc689cd6
commit faa736d3e9
3 changed files with 0 additions and 281 deletions

View File

@@ -1,252 +0,0 @@
#!/usr/bin/env python3
import subprocess
import os
import requests
import json
import platform
script_dir = os.path.dirname(os.path.abspath(__file__))
os.chdir(script_dir)
def detect_platform():
system = platform.system().lower()
arch = platform.machine().lower()
print(f"检测到系统: {system}")
print(f"检测到架构: {arch}")
is_android = False
try:
if os.path.exists('/system/build.prop') or 'ANDROID_ROOT' in os.environ:
is_android = True
system = 'android'
except:
pass
if is_android and arch in ['aarch64', 'arm64']:
# Android ARM64
return {
'json_url': 'https://gitee.com/YCTZ/file/raw/master/LTYP3.json',
'platform_name': 'Android ARM64',
'file_pattern': 'android-arm64'
}
elif arch in ['aarch64', 'arm64', 'armv8', 'armv8l']:
# ARM64
return {
'json_url': 'https://gitee.com/YCTZ/file/raw/master/LTYP2.json',
'platform_name': 'ARM64',
'file_pattern': 'arm64'
}
elif arch in ['armv7l', 'armv7', 'armv6l', 'armv6', 'arm']:
# ARM32 (ARMv7)
return {
'json_url': 'https://gitee.com/YCTZ/file/raw/master/LTYP1.json',
'platform_name': 'ARM32 (ARMv7)',
'file_pattern': 'armv7'
}
else:
# AMD64 (x86_64)
return {
'json_url': 'https://gitee.com/YCTZ/file/raw/master/LTYP.json',
'platform_name': 'AMD64 (x86_64)',
'file_pattern': 'amd64'
}
def find_ltyp_files():
"""查找当前目录下所有LTYP文件"""
ltyp_files = []
for filename in os.listdir('.'):
if filename.startswith('LTYP') and os.path.isfile(filename):
ltyp_files.append(filename)
return ltyp_files
def extract_version_from_filename(filename):
try:
name_part = filename.replace('LTYP-', '').replace('LTYP', '')
if name_part.startswith('-'):
name_part = name_part[1:]
if '.' in name_part and name_part.endswith(('.exe', '.bin')):
name_part = name_part.rsplit('.', 1)[0]
version_parts = name_part.split('-')
for part in version_parts:
try:
return float(part)
except ValueError:
continue
return 0
except:
return 0
def delete_old_ltyp_files(keep_file=None):
ltyp_files = find_ltyp_files()
deleted_files = []
for filename in ltyp_files:
if filename.endswith('.py'):
print(f"跳过 .py 文件: {filename}")
continue
if filename != keep_file:
try:
os.remove(filename)
deleted_files.append(filename)
print(f"已删除旧版本文件: {filename}")
except Exception as e:
print(f"删除文件 {filename} 失败: {e}")
return deleted_files
def check_and_update_version():
try:
print("检查版本更新...")
platform_config = detect_platform()
json_url = platform_config['json_url']
platform_name = platform_config['platform_name']
print(f"使用 {platform_name} 平台配置")
response = requests.get(json_url, timeout=10)
response.raise_for_status()
remote_info = response.json()
remote_version = remote_info.get("version", 0)
download_url = remote_info.get("Url", "")
readme = remote_info.get("README", "")
print(f"远程版本信息: {readme}")
print(f"远程版本: {remote_version}")
ltyp_files = find_ltyp_files()
current_version = 0
current_executable = None
for filename in ltyp_files:
file_version = extract_version_from_filename(filename)
if file_version > current_version:
current_version = file_version
current_executable = filename
if current_executable:
print(f"当前文件: {current_executable}")
print(f"当前版本: {current_version}")
else:
print("当前目录下没有LTYP文件")
print("当前版本: 无")
need_download = False
if not current_executable:
print("当前目录没有LTYP文件开始下载...")
need_download = True
elif current_version < remote_version:
print(f"发现新版本 {remote_version},开始下载更新...")
need_download = True
else:
print("当前版本已是最新版本")
if need_download:
print(f"⬇️正在下载: {download_url}")
download_response = requests.get(download_url, timeout=30)
download_response.raise_for_status()
if '/' in download_url:
new_filename = download_url.split('/')[-1]
else:
new_filename = f"LTYP-{remote_version}"
if not new_filename.startswith('LTYP'):
new_filename = f"LTYP-{remote_version}"
with open(new_filename, 'wb') as f:
f.write(download_response.content)
if platform.system().lower() != 'windows':
try:
subprocess.run(["chmod", "+x", new_filename], check=True)
print(f"{new_filename} 添加可执行权限...")
except:
print("添加可执行权限失败,但文件已下载")
deleted_files = delete_old_ltyp_files(keep_file=new_filename)
if deleted_files:
print(f"已清理 {len(deleted_files)} 个旧版本文件")
print(f"更新完成!新版本已保存为: {new_filename}")
return new_filename
else:
return current_executable
except requests.RequestException as e:
print(f"网络请求失败: {e}")
return None
except json.JSONDecodeError as e:
print(f"JSON解析失败: {e}")
return None
except Exception as e:
print(f"版本检查失败: {e}")
return None
target_executable = check_and_update_version()
if target_executable:
executable = f"./{target_executable}"
if platform.system().lower() != 'windows':
try:
subprocess.run(["chmod", "+x", executable], check=True)
except:
print("添加可执行权限失败,但继续运行")
else:
print("未找到可执行文件请检查目录下是否有LTYP文件")
exit(1)
env = os.environ.copy()
print("🔍 检查环境变量...")
#多种环境变量
###tokenonline方式多账户用&回车等分割:
cookie_value = (
os.environ.get("chinaUnicomCookie") or
os.environ.get("CHINA_UNICOM_COOKIE") or
os.environ.get("unicom_cookie") or
os.environ.get("UNICOM_COOKIE") or
""
)
###账密登录多账户用&分割账密用#分割:例如15555555555#123456&15555555556#123456
chinaUnicomAccountCredentials = os.environ.get("chinaUnicomAccountCredentials", "")
if cookie_value:
print(f"环境变量配置正常")
env.update({
"chinaUnicomCookie": cookie_value,
})
else:
print("未找到chinaUnicomCookie环境变量")
print("请在青龙面板中设置 chinaUnicomCookie 环境变量")
###---要通知就自己选个---###
qywx_key = os.environ.get("QYWX_KEY", "")#企业微信配置
wxpusher_token = os.environ.get("WXPUSHER_TOKEN", "")
if qywx_key:
env["QYWX_KEY"] = qywx_key
print(f"已配置企业微信推送")
if wxpusher_token:
env["WXPUSHER_TOKEN"] = wxpusher_token
print(f"已配置WxPusher推送")
print(f"正在运行 {executable}...")
result = subprocess.run([executable], env=env)
if result.returncode == 0:
print("Success!")
else:
print(f"Failed code: {result.returncode}")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long