mirror of
https://github.com/shufflewzc/faker2.git
synced 2025-05-07 03:48:44 +08:00
Update jd_check_dependent.py
This commit is contained in:
parent
893c0ec348
commit
d35ce10dd1
@ -1,242 +1,249 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
File: jd_check_dependent.py(Harbour库依赖一键检测安装(不可禁用)每2小时检测一次)
|
File: jd_check_dependent.py(Harbour库依赖一键检测安装(不可禁用)每2小时检测一次)
|
||||||
Author: HarbourJ
|
Author: HarbourJ
|
||||||
Date: 2022/8/12 20:37
|
Date: 2022/8/12 20:37
|
||||||
TG: https://t.me/HarbourToulu
|
TG: https://t.me/HarbourToulu
|
||||||
TgChat: https://t.me/HarbourSailing
|
TgChat: https://t.me/HarbourSailing
|
||||||
cron: 7 7 7 7 7
|
cron: 7 7 7 7 7
|
||||||
new Env('Faker库依赖一键安装');
|
new Env('Faker库依赖一键安装');
|
||||||
Description:1.Faker库jd_sign本地算法依赖一键检测安装脚本;
|
Description:1.Faker库jd_sign本地算法依赖一键检测安装脚本;
|
||||||
2.自动识别机器系统/架构,拉取最新依赖文件;
|
2.自动识别机器系统/架构,拉取最新依赖文件;
|
||||||
3.本地sign算法已编译支持Windows(amd64)、Linux(amd64/arm64/arm)、Macos(x86_64)系统/架构;
|
3.本地sign算法已编译支持Windows(amd64)、Linux(amd64/arm64/arm)、Macos(x86_64)系统/架构;
|
||||||
4.默认支持python3版本为3.8-3.10,过低可能会报错;
|
4.默认支持python3版本为3.8-3.10,过低可能会报错;
|
||||||
5.若本一键配置脚本无法安装所需jd_sign依赖文件,请前往https://github.com/HarbourJ/HarbourToulu/releases自行下载系统对应的jd_sign依赖压缩文件,解压并放置/scripts/HarbourJ_HarbourToulu_main文件夹内即可。
|
5.若本一键配置脚本无法安装所需jd_sign依赖文件,请前往https://github.com/HarbourJ/HarbourToulu/releases自行下载系统对应的jd_sign依赖压缩文件,解压并放置/scripts/HarbourJ_HarbourToulu_main文件夹内即可。
|
||||||
6.‼️‼️‼️初次拉库必须先运行本脚本‼️‼️‼️
|
6.‼️‼️‼️初次拉库必须先运行本脚本‼️‼️‼️
|
||||||
"""
|
"""
|
||||||
import sys
|
import sys
|
||||||
import requests, os, platform
|
import requests, os, platform
|
||||||
from functools import partial
|
import urllib.request
|
||||||
print = partial(print, flush=True)
|
from functools import partial
|
||||||
|
print = partial(print, flush=True)
|
||||||
|
|
||||||
def updateDependent():
|
|
||||||
"""
|
def updateDependent():
|
||||||
更新依赖的主函数
|
"""
|
||||||
"""
|
更新依赖的主函数
|
||||||
system = platform.system().lower()
|
"""
|
||||||
PyVersion_ = platform.python_version()
|
system = platform.system().lower()
|
||||||
PyVersion = ''.join(PyVersion_.split('.')[:2])
|
PyVersion_ = platform.python_version()
|
||||||
if int(PyVersion) > 310:
|
PyVersion = ''.join(PyVersion_.split('.')[:2])
|
||||||
print(f"✅识别本机设备Py版本为{PyVersion_},版本太高暂不支持,可退回青龙2.11.3版本!\n")
|
if int(PyVersion) > 310:
|
||||||
sys.exit()
|
print(f"✅识别本机设备Py版本为{PyVersion_},版本太高暂不支持,可退回青龙2.11.3版本!\n")
|
||||||
if system == "windows":
|
sys.exit()
|
||||||
fileName = f"jd_sign-win-amd64-py{PyVersion}.zip"
|
if system == "windows":
|
||||||
print(f"✅识别本机设备为Windows amd64,Py版本为{PyVersion_}\n")
|
fileName = f"jd_sign-win-amd64-py{PyVersion}.zip"
|
||||||
rtu = signReleaseUpdate()
|
print(f"✅识别本机设备为Windows amd64,Py版本为{PyVersion_}\n")
|
||||||
if rtu == 9:
|
rtu = signReleaseUpdate()
|
||||||
sys.exit()
|
if rtu == 9:
|
||||||
if rtu:
|
sys.exit()
|
||||||
removeOldSign()
|
if rtu:
|
||||||
if download(rtu, fileName):
|
removeOldSign()
|
||||||
import zipfile
|
if download(rtu, fileName):
|
||||||
f = zipfile.ZipFile(fileName, 'r')
|
import zipfile
|
||||||
for file in f.namelist():
|
f = zipfile.ZipFile(fileName, 'r')
|
||||||
f.extract(file, os.getcwd())
|
for file in f.namelist():
|
||||||
f.close()
|
f.extract(file, os.getcwd())
|
||||||
return True
|
f.close()
|
||||||
elif system == "darwin":
|
return True
|
||||||
fileName = f"jd_sign-darwin-x86_64-py{PyVersion}.tar.gz"
|
elif system == "darwin":
|
||||||
print(f"✅识别本机设备为MacOS x86_64,Py版本为{PyVersion_}\n")
|
fileName = f"jd_sign-darwin-x86_64-py{PyVersion}.tar.gz"
|
||||||
rtu = signReleaseUpdate()
|
print(f"✅识别本机设备为MacOS x86_64,Py版本为{PyVersion_}\n")
|
||||||
if rtu == 9:
|
rtu = signReleaseUpdate()
|
||||||
sys.exit()
|
if rtu == 9:
|
||||||
if rtu:
|
sys.exit()
|
||||||
removeOldSign()
|
if rtu:
|
||||||
if download(rtu, fileName):
|
removeOldSign()
|
||||||
os.system(f'tar xvf {fileName}')
|
if download(rtu, fileName):
|
||||||
os.system(f'rm -rf {fileName}')
|
os.system(f'tar xvf {fileName}')
|
||||||
return True
|
os.system(f'rm -rf {fileName}')
|
||||||
else:
|
return True
|
||||||
rtu = signReleaseUpdate()
|
else:
|
||||||
if rtu == 9:
|
rtu = signReleaseUpdate()
|
||||||
sys.exit()
|
if rtu == 9:
|
||||||
if rtu:
|
sys.exit()
|
||||||
removeOldSign()
|
if rtu:
|
||||||
framework = os.uname().machine
|
removeOldSign()
|
||||||
if framework == "x86_64":
|
framework = os.uname().machine
|
||||||
fileName = f"jd_sign-linux-amd64-py{PyVersion}.tar.gz"
|
if framework == "x86_64":
|
||||||
print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
|
fileName = f"jd_sign-linux-amd64-py{PyVersion}.tar.gz"
|
||||||
if download(rtu, fileName):
|
print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
|
||||||
os.system(f'tar xvf {fileName}')
|
if download(rtu, fileName):
|
||||||
os.system(f'rm -rf {fileName}')
|
os.system(f'tar xvf {fileName}')
|
||||||
return True
|
os.system(f'rm -rf {fileName}')
|
||||||
elif framework == "aarch64" or framework == "arm64":
|
return True
|
||||||
fileName = f"jd_sign-linux-arm64-py{PyVersion}.tar.gz"
|
elif framework == "aarch64" or framework == "arm64":
|
||||||
print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
|
fileName = f"jd_sign-linux-arm64-py{PyVersion}.tar.gz"
|
||||||
check_ld_libc(rtu)
|
print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
|
||||||
if download(rtu, fileName):
|
check_ld_libc(rtu)
|
||||||
os.system(f'tar xvf {fileName}')
|
if download(rtu, fileName):
|
||||||
os.system(f'rm -rf {fileName}')
|
os.system(f'tar xvf {fileName}')
|
||||||
return True
|
os.system(f'rm -rf {fileName}')
|
||||||
elif framework == "armv7l":
|
return True
|
||||||
fileName = f"jd_sign-linux-arm-py{PyVersion}.tar.gz"
|
elif framework == "armv7l":
|
||||||
print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
|
fileName = f"jd_sign-linux-arm-py{PyVersion}.tar.gz"
|
||||||
check_ld_libc(rtu)
|
print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
|
||||||
if download(rtu, fileName):
|
check_ld_libc(rtu)
|
||||||
os.system(f'tar xvf {fileName}')
|
if download(rtu, fileName):
|
||||||
os.system(f'rm -rf {fileName}')
|
os.system(f'tar xvf {fileName}')
|
||||||
return True
|
os.system(f'rm -rf {fileName}')
|
||||||
else:
|
return True
|
||||||
fileName = f"jd_sign-linux-amd64-py{PyVersion}.tar.gz"
|
else:
|
||||||
print(f"⚠️无法识别本机设备操作系统,默认本机设备为Linux x86_64,Py版本为{PyVersion_}\n")
|
fileName = f"jd_sign-linux-amd64-py{PyVersion}.tar.gz"
|
||||||
if download(rtu, fileName):
|
print(f"⚠️无法识别本机设备操作系统,默认本机设备为Linux x86_64,Py版本为{PyVersion_}\n")
|
||||||
os.system(f'tar xvf {fileName}')
|
if download(rtu, fileName):
|
||||||
os.system(f'rm -rf {fileName}')
|
os.system(f'tar xvf {fileName}')
|
||||||
return True
|
os.system(f'rm -rf {fileName}')
|
||||||
|
return True
|
||||||
def check_ld_libc(version):
|
|
||||||
"""
|
def check_ld_libc(version):
|
||||||
检测是否存在ld-linux-aarch64.so.1、libc.musl-aarch64.so.1动态依赖文件
|
"""
|
||||||
"""
|
检测是否存在ld-linux-aarch64.so.1、libc.musl-aarch64.so.1动态依赖文件
|
||||||
if "ld-linux-aarch64.so.1" in (os.listdir('/lib')):
|
"""
|
||||||
print("🗣已存在arm64-ld依赖\n")
|
if "ld-linux-aarch64.so.1" in (os.listdir('/lib')):
|
||||||
pass
|
print("🗣已存在arm64-ld依赖\n")
|
||||||
else:
|
pass
|
||||||
if download(version, "ld-linux-aarch64.tar.gz"):
|
else:
|
||||||
os.system('tar xvf ld-linux-aarch64.tar.gz')
|
if download(version, "ld-linux-aarch64.tar.gz"):
|
||||||
os.system('cp ld-linux-aarch64.so.1 /lib')
|
os.system('tar xvf ld-linux-aarch64.tar.gz')
|
||||||
if "ld-linux-aarch64.so.1" in (os.listdir('/lib')):
|
os.system('cp ld-linux-aarch64.so.1 /lib')
|
||||||
print("✅arm64-ld依赖安装完成~\n")
|
if "ld-linux-aarch64.so.1" in (os.listdir('/lib')):
|
||||||
os.system('rm -rf ld-linux-aarch64.tar.gz')
|
print("✅arm64-ld依赖安装完成~\n")
|
||||||
os.system('rm -rf ld-linux-aarch64.so.1')
|
os.system('rm -rf ld-linux-aarch64.tar.gz')
|
||||||
else:
|
os.system('rm -rf ld-linux-aarch64.so.1')
|
||||||
print("❌arm64-ld依赖安装失败,请前往Faker TG群查看安装教程\n")
|
else:
|
||||||
if "libc.musl-aarch64.so.1" in (os.listdir('/lib')):
|
print("❌arm64-ld依赖安装失败,请前往Faker TG群查看安装教程\n")
|
||||||
print("🗣已存在arm64-libc依赖\n")
|
if "libc.musl-aarch64.so.1" in (os.listdir('/lib')):
|
||||||
pass
|
print("🗣已存在arm64-libc依赖\n")
|
||||||
else:
|
pass
|
||||||
if download(version, "libc.musl-aarch64.tar.gz"):
|
else:
|
||||||
os.system('tar xvf libc.musl-aarch64.tar.gz')
|
if download(version, "libc.musl-aarch64.tar.gz"):
|
||||||
os.system('cp libc.musl-aarch64.so.1 /lib')
|
os.system('tar xvf libc.musl-aarch64.tar.gz')
|
||||||
if "libc.musl-aarch64.so.1" in (os.listdir('/lib')):
|
os.system('cp libc.musl-aarch64.so.1 /lib')
|
||||||
print("✅arm64-libc依赖安装完成~\n")
|
if "libc.musl-aarch64.so.1" in (os.listdir('/lib')):
|
||||||
os.system('rm -rf libc.musl-aarch64.tar.gz')
|
print("✅arm64-libc依赖安装完成~\n")
|
||||||
os.system('rm -rf libc.musl-aarch64.so.1')
|
os.system('rm -rf libc.musl-aarch64.tar.gz')
|
||||||
else:
|
os.system('rm -rf libc.musl-aarch64.so.1')
|
||||||
print("❌arm64-libc依赖安装失败,请前往Faker TG群查看安装教程\n")
|
else:
|
||||||
|
print("❌arm64-libc依赖安装失败,请前往Faker TG群查看安装教程\n")
|
||||||
def download(version, systemFile):
|
|
||||||
raw_url = f"https://ghproxy.com/https://github.com/HarbourJ/HarbourToulu/releases/download/{version}/{systemFile}"
|
def download(version, systemFile):
|
||||||
try:
|
raw_url = f"https://proxy.zyun.vip/https://github.com/HarbourJ/HarbourToulu/releases/download/{version}/{systemFile}"
|
||||||
fileList = os.listdir()
|
try:
|
||||||
if systemFile in fileList:
|
fileList = os.listdir()
|
||||||
os.remove(systemFile)
|
if systemFile in fileList:
|
||||||
except:
|
os.remove(systemFile)
|
||||||
print(f"❌删除{fileList}失败\n")
|
except:
|
||||||
try:
|
print(f"❌删除{fileList}失败\n")
|
||||||
try:
|
try:
|
||||||
import wget
|
try:
|
||||||
except ImportError as e:
|
import wget
|
||||||
print(e)
|
except ImportError as e:
|
||||||
if "No module" in str(e):
|
print(e)
|
||||||
os.system("pip install wget")
|
if "No module" in str(e):
|
||||||
import wget
|
os.system("pip install wget")
|
||||||
wget.download(raw_url)
|
import wget
|
||||||
print(f"✅{systemFile}下载成功\n")
|
# wget.download(raw_url,user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")
|
||||||
return True
|
print("------开始下载%s------\n" % systemFile)
|
||||||
except Exception as e:
|
print(raw_url)
|
||||||
print(e)
|
file_name = raw_url.split('/')[-1]
|
||||||
print(f"❌{systemFile}下载失败\n")
|
opener = urllib.request.build_opener()
|
||||||
return False
|
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0')]
|
||||||
|
urllib.request.install_opener(opener)
|
||||||
def removeOldSign():
|
urllib.request.urlretrieve(raw_url, file_name)
|
||||||
fileList = os.listdir()
|
print(f"✅{systemFile}下载成功\n")
|
||||||
if "jd_sign.so" in fileList:
|
return True
|
||||||
try:
|
except Exception as e:
|
||||||
os.remove("jd_sign.so")
|
print(e)
|
||||||
print("✅成功删除历史jd_sign依赖文件\n")
|
print(f"❌{systemFile}下载失败\n")
|
||||||
except:
|
return False
|
||||||
pass
|
|
||||||
elif "jd_sign_x86.so" in fileList:
|
def removeOldSign():
|
||||||
try:
|
fileList = os.listdir()
|
||||||
os.remove("jd_sign_x86.so")
|
if "jd_sign.so" in fileList:
|
||||||
print("✅成功删除历史jd_sign依赖文件\n")
|
try:
|
||||||
except:
|
os.remove("jd_sign.so")
|
||||||
pass
|
print("✅成功删除历史jd_sign依赖文件\n")
|
||||||
elif "jd_sign_arm64.so" in fileList:
|
except:
|
||||||
try:
|
pass
|
||||||
os.remove("jd_sign_arm64.so")
|
elif "jd_sign_x86.so" in fileList:
|
||||||
print("✅成功删除历史jd_sign依赖文件\n")
|
try:
|
||||||
except:
|
os.remove("jd_sign_x86.so")
|
||||||
pass
|
print("✅成功删除历史jd_sign依赖文件\n")
|
||||||
|
except:
|
||||||
def signReleaseUpdate():
|
pass
|
||||||
"""
|
elif "jd_sign_arm64.so" in fileList:
|
||||||
判断Release内的主要文件是否更新(判断utils内版本更新log文件-signUpdateLog.log)
|
try:
|
||||||
"""
|
os.remove("jd_sign_arm64.so")
|
||||||
GitAPI = "https://ghproxy.com/https://raw.githubusercontent.com/HarbourJ/HarbourToulu/main/utils/signUpdateLog.log"
|
print("✅成功删除历史jd_sign依赖文件\n")
|
||||||
# try:
|
except:
|
||||||
headers = {
|
pass
|
||||||
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
|
|
||||||
'accept-encoding': 'gzip, deflate, br',
|
def signReleaseUpdate():
|
||||||
'accept-language': 'zh-CN,zh;q=0.9',
|
"""
|
||||||
'referer': 'https://github.com/HarbourJ/HarbourToulu/blob/main/jdCookie.py',
|
判断Release内的主要文件是否更新(判断utils内版本更新log文件-signUpdateLog.log)
|
||||||
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
|
"""
|
||||||
}
|
GitAPI = "https://proxy.zyun.vip/https://raw.githubusercontent.com/HarbourJ/HarbourToulu/main/utils/signUpdateLog.log"
|
||||||
response = requests.request("GET", url=GitAPI, headers=headers, timeout=20)
|
# try:
|
||||||
if response.status_code == 200:
|
headers = {
|
||||||
res = response.text.split('\n')
|
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
|
||||||
print(f'📝最新sign为 {res[-1]}版本\n')
|
'accept-encoding': 'gzip, deflate',
|
||||||
new_version = res[-1].split(' v')[-1]
|
'accept-language': 'zh-CN,zh;q=0.9',
|
||||||
# 获取上一次检查所记录的version值
|
'referer': 'https://github.com/HarbourJ/HarbourToulu/blob/main/jdCookie.py',
|
||||||
try:
|
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
|
||||||
with open('signUpdate.log', "r") as f0:
|
}
|
||||||
last_version = f0.read()
|
response = requests.request("GET", url=GitAPI, headers=headers, timeout=20)
|
||||||
except Exception as e:
|
if response.status_code == 200:
|
||||||
# print(e)
|
res = response.text.split('\n')
|
||||||
# 以log格式写入文件
|
print(f'📝最新sign为 {res[-1]}版本\n')
|
||||||
with open("signUpdate.log", "w") as f1:
|
new_version = res[-1].split(' v')[-1]
|
||||||
f1.write('')
|
# 获取上一次检查所记录的version值
|
||||||
last_version = ''
|
try:
|
||||||
with open("signUpdate.log", "w") as f2:
|
with open('signUpdate.log', "r") as f0:
|
||||||
f2.write(new_version)
|
last_version = f0.read()
|
||||||
if new_version != last_version:
|
except Exception as e:
|
||||||
print("⏰检测到依赖版本有更新,自动更新...\n")
|
# print(e)
|
||||||
return new_version
|
# 以log格式写入文件
|
||||||
else:
|
with open("signUpdate.log", "w") as f1:
|
||||||
print("📝检测到依赖版本无更新\n")
|
f1.write('')
|
||||||
try:
|
last_version = ''
|
||||||
from jd_sign import remote_redis
|
with open("signUpdate.log", "w") as f2:
|
||||||
result = remote_redis(export_name="Test01", db_index=15)
|
f2.write(new_version)
|
||||||
print(f'🎉{result}\n')
|
if new_version != last_version:
|
||||||
print("✅依赖正常,退出程序")
|
print("⏰检测到依赖版本有更新,自动更新...\n")
|
||||||
return 9
|
return new_version
|
||||||
except:
|
else:
|
||||||
print("⏰依赖不正常,自动修复中...\n")
|
print("📝检测到依赖版本无更新\n")
|
||||||
return new_version
|
try:
|
||||||
else:
|
from jd_sign import remote_redis
|
||||||
print(f'❌请求失败:{GitAPI}\n')
|
result = remote_redis(export_name="Test01", db_index=15)
|
||||||
print(f'❌错误信息:{response.txt}\n')
|
print(f'🎉{result}\n')
|
||||||
return False
|
print("✅依赖正常,退出程序")
|
||||||
# except:
|
return 9
|
||||||
# print(f'❌请求URL失败:{GitAPI}\n')
|
except:
|
||||||
# return False
|
print("⏰依赖不正常,自动修复中...\n")
|
||||||
|
return new_version
|
||||||
def main():
|
else:
|
||||||
updateDependent()
|
print(f'❌请求失败:{GitAPI}\n')
|
||||||
try:
|
print(f'❌错误信息:{response.txt}\n')
|
||||||
from jd_sign import remote_redis
|
return False
|
||||||
result = remote_redis(export_name="Test01", db_index=15)
|
# except:
|
||||||
print(f'🎉{result}\n')
|
# print(f'❌请求URL失败:{GitAPI}\n')
|
||||||
if result:
|
# return False
|
||||||
print("✅依赖安装/更新完成")
|
|
||||||
except:
|
def main():
|
||||||
print("‼️依赖安装/更新失败,请前往Faker TG群查看安装教程")
|
updateDependent()
|
||||||
|
try:
|
||||||
if __name__ == '__main__':
|
from jd_sign import remote_redis
|
||||||
main()
|
result = remote_redis(export_name="Test01", db_index=15)
|
||||||
|
print(f'🎉{result}\n')
|
||||||
|
if result:
|
||||||
|
print("✅依赖安装/更新完成")
|
||||||
|
except:
|
||||||
|
print("‼️依赖安装/更新失败,请前往Faker TG群查看安装教程")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user