Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

148 lignes
6.8 KiB

import glob
import json
import os
import re
import subprocess
import sys
import requests
import platform
import shutil
import zipfile
import urllib.request
# import py7zr
def get_processor_info():
if os.uname().sysname == 'Darwin':
processor_info = subprocess.check_output(['sysctl', '-n', 'machdep.cpu.brand_string']).strip()
processor_info = str(processor_info)
if 'Intel' in processor_info:
return 'Intel'
elif 'Apple' in processor_info:
return 'Apple'
else:
return 'Unknown'
else:
return 'This method is only implemented for macOS.'
def compress_folder_to_7z(folder_path, output_file):
if os.path.exists(output_file):
os.remove(output_file)
# with py7zr.SevenZipFile(output_file, 'w') as archive:
# archive.writeall(folder_path, output_file)
# 压缩文件夹
try:
# "-mmt4"表示使用4个线程压缩
subprocess.call(["7z", "a", "-mx=9", output_file, folder_path])
except:
subprocess.call(["7za", "a", "-mx=9", output_file, folder_path])
def compress_folder_to_7z_split(folder_path, output_file):
if os.path.exists(output_file):
os.remove(output_file)
file_name = os.path.basename(output_file)
file_dir = os.path.dirname(output_file)
# 获取文件名的前缀
file_prefix = os.path.splitext(file_name)[0]
# 构建分卷文件的路径模式
split_file_pattern = os.path.join(file_dir, file_prefix + ".7z.*")
# 获取匹配的分卷文件列表
split_files = glob.glob(split_file_pattern)
# 删除分卷文件
for split_file in split_files:
os.remove(split_file)
# 压缩文件夹
try:
subprocess.call(["7z", "a", "-v95m", output_file, folder_path])
except:
try:
subprocess.call(["7za", "a", "-v95m", output_file, folder_path])
except:
subprocess.call(["7zz", "a", "-v95m", output_file, folder_path])
easyspider_version = "0.6.2"
if __name__ == "__main__":
if sys.platform == "win32" and platform.architecture()[0] == "64bit":
file_name = f"EasySpider_{easyspider_version}_Windows_x64.7z"
if os.path.exists("./EasySpider_Windows_x64/user_data"):
shutil.rmtree("./EasySpider_Windows_x64/user_data")
if os.path.exists("./EasySpider_Windows_x64/Data"):
shutil.rmtree("./EasySpider_Windows_x64/Data")
if os.path.exists("./EasySpider_Windows_x64/execution_instances"):
shutil.rmtree("./EasySpider_Windows_x64/execution_instances")
if os.path.exists("./EasySpider_Windows_x64/config.json"):
os.remove("./EasySpider_Windows_x64/config.json")
if os.path.exists("./EasySpider_Windows_x64/mysql_config.json"):
os.remove("./EasySpider_Windows_x64/mysql_config.json")
if os.path.exists("./EasySpider_Windows_x64/TempUserDataFolder"):
shutil.rmtree("./EasySpider_Windows_x64/TempUserDataFolder")
os.mkdir("./EasySpider_Windows_x64/Data")
os.mkdir("./EasySpider_Windows_x64/execution_instances")
# compress_folder_to_7z_split("./EasySpider_Windows_x64", file_name)
# print(f"Compress {file_name} Split successfully!")
compress_folder_to_7z("./EasySpider_Windows_x64", file_name)
print(f"Compress {file_name} successfully!")
elif sys.platform == "win32" and platform.architecture()[0] == "32bit":
file_name = f"EasySpider_{easyspider_version}_Windows_x32.7z"
if os.path.exists("./EasySpider_Windows_x32/user_data"):
shutil.rmtree("./EasySpider_Windows_x32/user_data")
if os.path.exists("./EasySpider_Windows_x32/Data"):
shutil.rmtree("./EasySpider_Windows_x32/Data")
if os.path.exists("./EasySpider_Windows_x32/execution_instances"):
shutil.rmtree("./EasySpider_Windows_x32/execution_instances")
if os.path.exists("./EasySpider_Windows_x32/config.json"):
os.remove("./EasySpider_Windows_x32/config.json")
if os.path.exists("./EasySpider_Windows_x32/mysql_config.json"):
os.remove("./EasySpider_Windows_x32/mysql_config.json")
if os.path.exists("./EasySpider_Windows_x32/TempUserDataFolder"):
shutil.rmtree("./EasySpider_Windows_x32/TempUserDataFolder")
os.mkdir("./EasySpider_Windows_x32/Data")
os.mkdir("./EasySpider_Windows_x32/execution_instances")
# compress_folder_to_7z_split("./EasySpider_Windows_x32", file_name)
# print(f"Compress {file_name} Split successfully!")
compress_folder_to_7z("./EasySpider_Windows_x32", file_name)
print(f"Compress {file_name} successfully!")
elif sys.platform == "linux" and platform.architecture()[0] == "64bit":
file_name = f"EasySpider_{easyspider_version}_Linux_x64.tar.xz"
if os.path.exists("./EasySpider_Linux_x64/user_data"):
shutil.rmtree("./EasySpider_Linux_x64/user_data")
if os.path.exists("./EasySpider_Linux_x64/Data"):
shutil.rmtree("./EasySpider_Linux_x64/Data")
if os.path.exists("./EasySpider_Linux_x64/execution_instances"):
shutil.rmtree("./EasySpider_Linux_x64/execution_instances")
if os.path.exists("./EasySpider_Linux_x64/config.json"):
os.remove("./EasySpider_Linux_x64/config.json")
if os.path.exists("./EasySpider_Linux_x64/mysql_config.json"):
os.remove("./EasySpider_Linux_x64/mysql_config.json")
if os.path.exists("./EasySpider_Linux_x64/TempUserDataFolder"):
shutil.rmtree("./EasySpider_Linux_x64/TempUserDataFolder")
os.mkdir("./EasySpider_Linux_x64/Data")
os.mkdir("./EasySpider_Linux_x64/execution_instances")
subprocess.call(["tar", "-Jcvf", file_name, "./EasySpider_Linux_x64"])
print(f"Compress {file_name} successfully!")
elif sys.platform == "darwin" and platform.architecture()[0] == "64bit":
arch = get_processor_info()
if arch == "Intel":
file_name = f"EasySpider_{easyspider_version}_MacOS_Intel_Chip.7z"
else:
file_name = f"EasySpider_{easyspider_version}_MacOS_Apple_Arm_Chip.7z"
if os.path.exists("./EasySpider_MacOS/Data"):
shutil.rmtree("./EasySpider_MacOS/Data")
os.mkdir("./EasySpider_MacOS/Data")
if os.path.exists("./EasySpider_MacOS/TempUserDataFolder"):
shutil.rmtree("./EasySpider_MacOS/TempUserDataFolder")
# if os.path.exists(file_name):
# os.remove(file_name)
# print(f"Remove {file_name} successfully!")
# subprocess.call(["tar", "-zcvf", file_name, "./EasySpider_MacOS"])
# brew install p7zip
# subprocess.call(["7z", "a", "-mx=9", file_name, "./EasySpider_MacOS"])
compress_folder_to_7z("./EasySpider_MacOS", file_name)
print(f"Compress {file_name} successfully!")