update:运行环境包

main
Akatsuki-Misaki 1 month ago
parent 56a03a8b81
commit 3903ee103b

@ -1,45 +1,21 @@
import requests
import re
import os
import time
import shutil
from requests.auth import HTTPProxyAuth
import socks
import socket
import time
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
# 配置
url = "https://unpkg.com/"
headers = {'Accept-Language': 'zh-CN,zh;q=0.8',
'Content-Type': 'text/html;Charset=utf-8',
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
}
# 如果没有额外参数则输入
if not 'mod' in locals().keys():
mod = input("请输入模块名:")
if not 'version' in locals().keys():
version = input("请输入版本号:")
use_proxy = input("是否使用代理?(输入 'y''n': ").lower()
proxies = None # 初始化代理
if use_proxy == 'y':
# 获取代理设置
default_proxy_host = "10.10.50.114" # 设置默认代理主机
default_proxy_port = 65115 # 设置默认代理端口
proxy_host = input(f"请输入代理主机 (默认为 {default_proxy_host}): ") or default_proxy_host
proxy_port = int(input(f"请输入代理端口 (默认为 {default_proxy_port}): ") or default_proxy_port)
proxy_username = input("请输入代理用户名(如果不需要身份验证,直接回车): ")
proxy_password = input("请输入代理密码(如果不需要身份验证,直接回车): ")
# 设置 SOCKS5 代理
socks.set_default_proxy(socks.SOCKS5, proxy_host, proxy_port, True, proxy_username, proxy_password)
socket.socket = socks.socksocket
url = "https://unpkg.ovofish.com/"
headers = {
'Accept-Language': 'zh-CN,zh;q=0.8',
'Content-Type': 'text/html; Charset=utf-8',
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
}
proxies = {'http': 'socks5://{}:{}'.format(proxy_host, proxy_port), 'https': 'socks5://{}:{}'.format(proxy_host, proxy_port)}
# 输入模块名
mod = input("请输入模块名:")
# 设置重试机制
def requests_retry_session(
@ -47,6 +23,7 @@ def requests_retry_session(
backoff_factor=0.3,
status_forcelist=(500, 502, 504),
session=None,
proxies=None
):
session = session or requests.Session()
retry = Retry(
@ -59,12 +36,14 @@ def requests_retry_session(
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
if proxies:
session.proxies.update(proxies)
return session
# 获取HTML
def getHTML(url, encoding='utf-8'):
def getHTML(url, encoding='utf-8', proxies=None):
try:
with requests_retry_session().get(url, params=None, headers=headers, proxies=proxies) as rd:
with requests_retry_session(proxies=proxies).get(url, headers=headers) as rd:
rd.encoding = encoding
rd.raise_for_status()
return rd.text
@ -73,16 +52,16 @@ def getHTML(url, encoding='utf-8'):
return None
# 获取版本
def getVsions(m):
h = getHTML(url + m + '/')
def getVsions(m, proxies=None):
h = getHTML(url + m + '/', proxies=proxies)
j = re.findall(r'<select name="version"(.*?)</select>', h, re.S)[0]
patt = re.compile(r'<option.+?>(.+?)</option>')
option = patt.findall(j)
return option
# 扫描目录
def getPaths(v, p='/', files=[], folders=[]):
h = getHTML(url + v + p)
def getPaths(v, p='/', files=[], folders=[], proxies=None):
h = getHTML(url + v + p, proxies=proxies)
t = re.findall(r'<table(.*?)</table>', h, re.S)[0]
href = re.findall('href="(.*?)"', t)
for name in href:
@ -93,7 +72,7 @@ def getPaths(v, p='/', files=[], folders=[]):
print(path)
if name[-1] == '/':
folders.append(path)
getPaths(v, path, files, folders)
getPaths(v, path, files, folders, proxies)
else:
files.append(path)
return {"files": files, "folders": folders}
@ -109,31 +88,58 @@ def makeDirs(dirs, p):
os.makedirs(path)
# 下载文件
def download(url, path=None):
def download(url, path=None, proxies=None):
try:
with requests_retry_session().get(url, proxies=proxies) as r:
with requests_retry_session(proxies=proxies).get(url, proxies=proxies) as r:
r.raise_for_status()
if not os.path.exists(path):
print("下载:", url)
t = str(time.time()) + '.' + str(os.getpid()) + '.tmp'
open(t, 'wb').write(r.content)
shutil.move(t, path)
with open(t, 'wb') as tmp_file:
tmp_file.write(r.content)
os.rename(t, path)
else:
print("文件已存在")
except requests.exceptions.RequestException as e:
print(f"下载文件时发生错误: {e}")
# 其余的代码getVsions, getPaths, makeDirs, 等等)
pid = os.getpid()
print(url + mod + '/')
# 获取所有版本并展示
versions = getVsions(mod)
print("所有版本:", versions)
version = mod + '@' + versions[-1]
print("默认版本:", version)
paths = getPaths(version)
makeDirs(paths["folders"], version)
for i in paths["files"]:
u = url + version + i
download(u, version + '/' + i)
print("完成")
# 选择版本
version = input("请输入版本号(留空使用最新版):") or versions[-1]
print("选择的版本:", version)
# 构建版本路径
version_path = mod + '@' + version
# 检查当前目录是否存在该版本
if os.path.exists(version_path):
print(f"版本 {version_path} 已存在,不再下载。")
else:
# 使用代理
proxies = None
use_proxy = input("是否使用代理?(输入 'y''n': ").lower()
if use_proxy == 'y':
# 获取代理设置
default_proxy_host = "10.10.50.210" # 设置默认代理主机
default_proxy_port = 65115 # 设置默认代理端口
proxy_host = input(f"请输入代理主机 (默认为 {default_proxy_host}): ") or default_proxy_host
proxy_port = int(input(f"请输入代理端口 (默认为 {default_proxy_port}): ") or default_proxy_port)
proxy_username = input("请输入代理用户名(如果不需要身份验证,直接回车): ")
proxy_password = input("请输入代理密码(如果不需要身份验证,直接回车): ")
# 设置代理
proxies = {
'http': f'socks5://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}' if proxy_username else f'socks5://{proxy_host}:{proxy_port}',
'https': f'socks5://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}' if proxy_username else f'socks5://{proxy_host}:{proxy_port}'
}
paths = getPaths(version_path, proxies=proxies)
makeDirs(paths["folders"], version_path)
for i in paths["files"]:
u = url + version_path + i
download(u, version_path + '/' + i, proxies)
print("下载完成")

@ -0,0 +1,20 @@
certifi==2024.7.4
charset-normalizer==3.3.2
colorama==0.4.6
colorlog==6.8.2
hjson==3.1.0
idna==3.7
mcdreforged==2.13.1
packaging==24.1
parse==1.20.2
prompt_toolkit==3.0.47
psutil==6.0.0
py-cpuinfo==9.0.0
PySocks==1.7.1
requests==2.32.3
resolvelib==1.0.1
ruamel.yaml==0.18.6
ruamel.yaml.clib==0.2.8
typing_extensions==4.12.2
urllib3==2.2.2
wcwidth==0.2.13

@ -61,5 +61,12 @@ def continuous_ping(ip_addresses):
time.sleep(1)
if __name__ == "__main__":
# 判断是否有配置文件
try:
with open("config.json", "r") as config_file:
config_data = json.load(config_file)
except FileNotFoundError:
print("配置文件不存在,请检查文件路径。")
exit(1)
target_ips = load_config()
continuous_ping(target_ips)

@ -103,8 +103,13 @@ if file_updated:
print("文件已更新开始预热CDN...")
# 预热 CDN
def dogecloud_api(api_path, data={}, json_mode=False):
print('正在调用多吉云 API...')
access_key = '' # 请将此处替换为你的多吉云 Access Key
secret_key = '' # 请将此处替换为你的多吉云 Secret Key
# 如果没有 access_key 和 secret_key则跳过下面所有操作
if not access_key or not secret_key:
print('请填写多吉云 Access Key 和 Secret Key。')
return None
body = ''
mime = ''

@ -0,0 +1,23 @@
beautifulsoup4==4.12.3
bs4==0.0.2
certifi==2024.7.4
charset-normalizer==3.3.2
colorama==0.4.6
colorlog==6.8.2
hjson==3.1.0
idna==3.7
mcdreforged==2.13.1
packaging==24.1
parse==1.20.2
prompt_toolkit==3.0.47
psutil==6.0.0
py-cpuinfo==9.0.0
PySocks==1.7.1
requests==2.32.3
resolvelib==1.0.1
ruamel.yaml==0.18.6
ruamel.yaml.clib==0.2.8
soupsieve==2.6
typing_extensions==4.12.2
urllib3==2.2.2
wcwidth==0.2.13
Loading…
Cancel
Save