mirror of
https://github.com/shufflewzc/faker2.git
synced 2025-04-22 18:20:13 +08:00
179 lines
6.4 KiB
Python
179 lines
6.4 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
File: jd_check_dependent.py(Harbour库依赖一键检测安装(不可禁用)每小时检测一次)
|
|
Author: HarbourJ
|
|
Date: 2022/8/12 20:37
|
|
TG: https://t.me/HarbourToulu
|
|
TgChat: https://t.me/HarbourSailing
|
|
cron: 7 7 7 7 7
|
|
new Env('Faker库本地Sign依赖检测');
|
|
Description:1.Faker库jd_sign本地算法依赖一键检测安装脚本;
|
|
2.自动识别机器系统/架构,拉取最新依赖文件;
|
|
3.本地sign算法已编译支持Windows(amd64)、Linux(amd64/arm64/arm)、Macos(x86_64)系统/架构;
|
|
4.默认支持python3版本为3.8-3.9,过高或过低可能会报错;
|
|
5.若本一键配置脚本无法安装所需jd_sign依赖文件,请前往https://github.com/HarbourJ/HarbourToulu/releases自行下载系统对应的jd_sign依赖压缩文件,解压并放置/scripts/HarbourJ_HarbourToulu_main文件夹内即可。
|
|
"""
|
|
from operator import truediv
|
|
import sys
|
|
|
|
import requests, os, platform
|
|
from functools import partial
|
|
print = partial(print, flush=True)
|
|
|
|
|
|
def updateDependent():
|
|
"""
|
|
更新依赖的主函数
|
|
"""
|
|
system = platform.system().lower()
|
|
if system == "windows":
|
|
print("识别本机设备为Windows amd64")
|
|
rtu = 0
|
|
if rtu == 9:
|
|
sys.exit()
|
|
if rtu:
|
|
removeOldSign()
|
|
if download("jd_sign-win-amd64.zip"):
|
|
import zipfile
|
|
f = zipfile.ZipFile("jd_sign-win-amd64.zip", 'r')
|
|
for file in f.namelist():
|
|
f.extract(file, os.getcwd())
|
|
f.close()
|
|
return True
|
|
elif system == "darwin":
|
|
print("识别本机设备为MacOS x86_64")
|
|
rtu = 0
|
|
if rtu == 9:
|
|
sys.exit()
|
|
if rtu:
|
|
removeOldSign()
|
|
if download("jd_sign-darwin-x86_64.tar.gz"):
|
|
os.system('tar xvf jd_sign-darwin-x86_64.tar.gz')
|
|
os.system('rm -rf jd_sign-darwin-x86_64.tar.gz')
|
|
return True
|
|
else:
|
|
print("识别本机设备为Linux")
|
|
rtu = 0
|
|
if rtu == 9:
|
|
sys.exit()
|
|
if rtu:
|
|
removeOldSign()
|
|
framework = os.uname().machine
|
|
if framework == "x86_64":
|
|
if download("jd_sign-linux-amd64.tar.gz"):
|
|
os.system('tar xvf jd_sign-linux-amd64.tar.gz')
|
|
os.system('rm -rf jd_sign-linux-amd64.tar.gz')
|
|
return True
|
|
elif framework == "aarch64" or framework == "arm64":
|
|
check_ld_libc()
|
|
if download("jd_sign-linux-arm64.tar.gz"):
|
|
os.system('tar xvf jd_sign-linux-arm64.tar.gz')
|
|
os.system('rm -rf jd_sign-linux-arm64.tar.gz')
|
|
return True
|
|
elif framework == "armv7l":
|
|
check_ld_libc()
|
|
if download("jd_sign-linux-arm.tar.gz"):
|
|
os.system('tar xvf jd_sign-linux-arm.tar.gz')
|
|
os.system('rm -rf jd_sign-linux-arm.tar.gz')
|
|
return True
|
|
else:
|
|
if download("jd_sign-linux-amd64.tar.gz"):
|
|
os.system('tar xvf jd_sign-linux-amd64.tar.gz')
|
|
os.system('rm -rf jd_sign-linux-amd64.tar.gz')
|
|
return True
|
|
|
|
def check_ld_libc():
|
|
"""
|
|
检测是否存在ld-linux-aarch64.so.1、libc.musl-aarch64.so.1动态依赖文件
|
|
"""
|
|
if "ld-linux-aarch64.so.1" in (os.listdir('/lib')):
|
|
print("已存在arm64-ld依赖")
|
|
pass
|
|
else:
|
|
if download("ld-linux-aarch64.tar.gz"):
|
|
os.system('tar xvf ld-linux-aarch64.tar.gz')
|
|
os.system('cp ld-linux-aarch64.so.1 /lib')
|
|
if "ld-linux-aarch64.so.1" in (os.listdir('/lib')):
|
|
print("arm64-ld依赖安装完成~")
|
|
os.system('rm -rf ld-linux-aarch64.tar.gz')
|
|
os.system('rm -rf ld-linux-aarch64.so.1')
|
|
else:
|
|
print("arm64-ld依赖安装失败,网络连接失败,请按依赖教程自行下载依赖文件")
|
|
if "libc.musl-aarch64.so.1" in (os.listdir('/lib')):
|
|
print("已存在arm64-libc依赖")
|
|
pass
|
|
else:
|
|
if download("libc.musl-aarch64.tar.gz"):
|
|
os.system('tar xvf libc.musl-aarch64.tar.gz')
|
|
os.system('cp libc.musl-aarch64.so.1 /lib')
|
|
if "libc.musl-aarch64.so.1" in (os.listdir('/lib')):
|
|
print("arm64-libc依赖安装完成~")
|
|
os.system('rm -rf libc.musl-aarch64.tar.gz')
|
|
os.system('rm -rf libc.musl-aarch64.so.1')
|
|
else:
|
|
print("arm64-libc依赖安装失败,网络连接失败,请按依赖教程自行下载依赖文件")
|
|
|
|
def download(systemFile):
|
|
raw_url = f"https://git.metauniverse-cn.com/https://raw.githubusercontent.com/shufflewzc/faker2/main/utils/{systemFile}"
|
|
try:
|
|
fileList = os.listdir()
|
|
if systemFile in fileList:
|
|
os.remove(systemFile)
|
|
except:
|
|
print(f"删除{fileList}失败")
|
|
try:
|
|
try:
|
|
import wget
|
|
except ImportError as e:
|
|
print(e)
|
|
if "No module" in str(e):
|
|
os.system("pip install wget")
|
|
import wget
|
|
wget.download(raw_url)
|
|
print(f"{systemFile}下载成功")
|
|
return True
|
|
except Exception as e:
|
|
print(e)
|
|
print(f"{systemFile}下载失败")
|
|
return False
|
|
|
|
def removeOldSign():
|
|
fileList = os.listdir()
|
|
if "jd_sign.so" in fileList:
|
|
try:
|
|
os.remove("jd_sign.so")
|
|
print("成功删除历史jd_sign依赖文件")
|
|
except:
|
|
pass
|
|
elif "jd_sign_x86.so" in fileList:
|
|
try:
|
|
os.remove("jd_sign_x86.so")
|
|
print("成功删除历史jd_sign依赖文件")
|
|
except:
|
|
pass
|
|
elif "jd_sign_arm64.so" in fileList:
|
|
try:
|
|
os.remove("jd_sign_arm64.so")
|
|
print("成功删除历史jd_sign依赖文件")
|
|
except:
|
|
pass
|
|
|
|
|
|
def main():
|
|
updateDependent()
|
|
try:
|
|
from jd_sign import remote_redis
|
|
result = remote_redis(export_name="Test01", db_index=15)
|
|
print(result)
|
|
if result:
|
|
print("依赖安装/更新完成")
|
|
except:
|
|
print("依赖安装/更新失败,网络连接失败,请按依赖教程自行下载依赖文件")
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|
|
|