mirror of
				https://github.com/shufflewzc/faker2.git
				synced 2025-11-04 15:22:47 +08:00 
			
		
		
		
	expired
This commit is contained in:
		
							parent
							
								
									53c21f9229
								
							
						
					
					
						commit
						8db3eb1241
					
				@ -1,270 +0,0 @@
 | 
				
			|||||||
import json
 | 
					 | 
				
			||||||
import os
 | 
					 | 
				
			||||||
import re
 | 
					 | 
				
			||||||
import time
 | 
					 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
import subprocess
 | 
					 | 
				
			||||||
import traceback
 | 
					 | 
				
			||||||
from depend import Depend
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
'''
 | 
					 | 
				
			||||||
cron: 30 23 * * *
 | 
					 | 
				
			||||||
new Env('青龙日志分析 && 自动补全依赖');
 | 
					 | 
				
			||||||
########环境变量设置#########
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## (非必填) 脚本唯一性检测,请在此处填写你想运行的脚本的绝对路径,其他脚本检测到路径与此变量不符将会停止运行
 | 
					 | 
				
			||||||
QL_LOG_SCAN_SCRIPT_PATH=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## (非必填)指定日志目录: 默认自动识别青龙目录,出现错误才需要手动指定日志目录
 | 
					 | 
				
			||||||
export QL_LOG_PATH="/ql/data/log/"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## (非必填)指定不扫描目录:多个请用逗号隔开
 | 
					 | 
				
			||||||
export QL_LOG_BLACK_DIR=""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## (非必填)指定不扫描日志文件:多个请用逗号隔开
 | 
					 | 
				
			||||||
export QL_LOG_BLACK_FILE=""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## (非必填)需要被扫描的最近n天的日志,0就是只分析当天的日志(最近24小时的日志)
 | 
					 | 
				
			||||||
export QL_LOG_SCAN_DEEPIN=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## (非必填)是否尝试自动补齐日志报错里提示的依赖
 | 
					 | 
				
			||||||
export QL_LOG_AUTO_INSTALL_DEPEND=False
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## (非必填)强制指定npm包管理器,有些青龙使用了pnpm而不是npm,注意鉴别
 | 
					 | 
				
			||||||
export QL_LOG_NPM="npm"
 | 
					 | 
				
			||||||
'''
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class QlLogScan(Depend):
 | 
					 | 
				
			||||||
    def __init__(self):
 | 
					 | 
				
			||||||
        self.pyname = os.path.basename(__file__).replace(".py", "")
 | 
					 | 
				
			||||||
        print(self.only_check(self.pyname, os.path.abspath(__file__),"QL_LOG_SCAN_SCRIPT_PATH"))
 | 
					 | 
				
			||||||
        self.ql_log_path = self.get_env("QL_LOG_PATH", self.get_ql_path() + "log/")
 | 
					 | 
				
			||||||
        self.filter_dir_list = self.not2append(["^\.tmp$", "^update$", self.pyname + "$"],
 | 
					 | 
				
			||||||
                                               self.str2list(self.get_env("QL_LOG_BLACK_DIR")))
 | 
					 | 
				
			||||||
        self.filter_log_list = self.not2append(['task_error\.log', 'start\.log'],
 | 
					 | 
				
			||||||
                                               self.str2list(self.get_env("QL_LOG_BLACK_FILE")))
 | 
					 | 
				
			||||||
        self.history_scan_deepin = self.get_env("QL_LOG_SCAN_DEEPIN", "0")
 | 
					 | 
				
			||||||
        self.auto_install_depend = self.get_env("QL_LOG_AUTO_INSTALL_DEPEND", False)
 | 
					 | 
				
			||||||
        self.npm = self.get_env("QL_LOG_NPM", "npm")
 | 
					 | 
				
			||||||
        self.log_stat = {
 | 
					 | 
				
			||||||
            "all": 0,
 | 
					 | 
				
			||||||
            "nodejs_err": 0,
 | 
					 | 
				
			||||||
            "python_err": 0,
 | 
					 | 
				
			||||||
            "err_dict": {},
 | 
					 | 
				
			||||||
            "nodejs_depend": [],
 | 
					 | 
				
			||||||
            "python_depend": [],
 | 
					 | 
				
			||||||
            "readlog_err" :[]
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        self.LogNameHeadList = self.generateLogNameHeadList()
 | 
					 | 
				
			||||||
        self.analysisLog()
 | 
					 | 
				
			||||||
        self.showAnalysisLog()
 | 
					 | 
				
			||||||
        if self.auto_install_depend:
 | 
					 | 
				
			||||||
            self.auto_depend()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def generateLogNameHeadList(self):
 | 
					 | 
				
			||||||
        scan_list = []
 | 
					 | 
				
			||||||
        for i in range((self.history_scan_deepin + 1) * 24):
 | 
					 | 
				
			||||||
            scan_list.append(time.strftime("%Y-%m-%d-%H", time.localtime((int(time.time()) - (3600 * i)))))
 | 
					 | 
				
			||||||
        return scan_list
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def analysisLog(self):
 | 
					 | 
				
			||||||
        for path, dir_list, file_list in os.walk(self.ql_log_path):
 | 
					 | 
				
			||||||
            dir_name = path.replace(self.ql_log_path, "")
 | 
					 | 
				
			||||||
            if not self.re_filter_list(dir_name, self.filter_dir_list):
 | 
					 | 
				
			||||||
                for file_name in file_list:
 | 
					 | 
				
			||||||
                    if not self.re_filter_list(file_name, self.filter_log_list) and re.search(r"(.*?).log$",
 | 
					 | 
				
			||||||
                                                                                              file_name) and file_name[
 | 
					 | 
				
			||||||
                                                                                                             :13] in self.LogNameHeadList:
 | 
					 | 
				
			||||||
                        # 读取日志
 | 
					 | 
				
			||||||
                        log_file = open(os.path.join(path, file_name), "r")
 | 
					 | 
				
			||||||
                        try:
 | 
					 | 
				
			||||||
                            log_text = log_file.read(2097152)
 | 
					 | 
				
			||||||
                            log_file.close()
 | 
					 | 
				
			||||||
                            # 分析日志
 | 
					 | 
				
			||||||
                            nodejs_err_list = re.findall(r"Error\:(.*\s?)Require stack\:", log_text)
 | 
					 | 
				
			||||||
                            python_err_list = re.findall(
 | 
					 | 
				
			||||||
                                r"Traceback \(most recent call last\):([\n\s]+File[\s\S]*?, line [\d]+, in[\s\S]*?["
 | 
					 | 
				
			||||||
                                r"\s\S]*?\n[\s\S]*?\n)+(.*?)\n",
 | 
					 | 
				
			||||||
                            log_text)
 | 
					 | 
				
			||||||
                            if nodejs_err_list:
 | 
					 | 
				
			||||||
                                self.log_stat["nodejs_err"] += len(nodejs_err_list)
 | 
					 | 
				
			||||||
                                self.log_stat["err_dict"][dir_name] = []
 | 
					 | 
				
			||||||
                                for i in nodejs_err_list:
 | 
					 | 
				
			||||||
                                    v = i.strip()
 | 
					 | 
				
			||||||
                                    self.log_stat["err_dict"][dir_name].append({"type": "NodeJs", "log": v})
 | 
					 | 
				
			||||||
                                    # 依赖缺失判断
 | 
					 | 
				
			||||||
                                    miss_depend = re.search(r"Cannot find module '([a-zA-Z\d_-]+)'", v)
 | 
					 | 
				
			||||||
                                    if miss_depend and miss_depend.group(1) not in self.log_stat["nodejs_depend"]:
 | 
					 | 
				
			||||||
                                        self.log_stat["nodejs_depend"].append(miss_depend.group(1))
 | 
					 | 
				
			||||||
                            elif python_err_list:
 | 
					 | 
				
			||||||
                                self.log_stat["python_err"] += len(python_err_list)
 | 
					 | 
				
			||||||
                                self.log_stat["err_dict"][dir_name] = []
 | 
					 | 
				
			||||||
                                for i in python_err_list:
 | 
					 | 
				
			||||||
                                    v = i[-1].strip()
 | 
					 | 
				
			||||||
                                    self.log_stat["err_dict"][dir_name].append({"type": "Python", "log": v})
 | 
					 | 
				
			||||||
                                    # 依赖缺失判断
 | 
					 | 
				
			||||||
                                    miss_depend = re.search(r"ModuleNotFoundError: No module named \'([a-zA-Z0-9_-]+)\'", v)
 | 
					 | 
				
			||||||
                                    if miss_depend and miss_depend.group(1) not in self.log_stat["python_depend"]:
 | 
					 | 
				
			||||||
                                        self.log_stat["python_depend"].append(miss_depend.group(1))
 | 
					 | 
				
			||||||
                            self.log_stat["all"] += 1
 | 
					 | 
				
			||||||
                        except Exception as e:
 | 
					 | 
				
			||||||
                            err_log = "读取日志" + str(os.path.join(path, file_name)) + "出现异常: " + str(e) + "\n"
 | 
					 | 
				
			||||||
                            self.log_stat["readlog_err"].append(err_log)
 | 
					 | 
				
			||||||
                            print(err_log)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @staticmethod
 | 
					 | 
				
			||||||
    def format_log_date(text):
 | 
					 | 
				
			||||||
        text = text.split("-")
 | 
					 | 
				
			||||||
        return text[0] + "年" + text[1] + "月" + text[2] + "日" + text[3] + "时"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def showAnalysisLog(self):
 | 
					 | 
				
			||||||
        len_nodejs_depend = len(self.log_stat["nodejs_depend"])
 | 
					 | 
				
			||||||
        len_python_depend = len(self.log_stat["python_depend"])
 | 
					 | 
				
			||||||
        # 展示分析结果
 | 
					 | 
				
			||||||
        result = "📆分析 " + (
 | 
					 | 
				
			||||||
            self.format_log_date(self.LogNameHeadList[0]) + " ~ " + self.format_log_date(
 | 
					 | 
				
			||||||
                self.LogNameHeadList[-1]) if len(self.LogNameHeadList) != 1 else
 | 
					 | 
				
			||||||
            self.LogNameHeadList[
 | 
					 | 
				
			||||||
                0]) + " 的日志报告:\n"
 | 
					 | 
				
			||||||
        if len(self.log_stat["readlog_err"]) != 0:
 | 
					 | 
				
			||||||
            result += "🔍脚本在读取日志过程中,出现了" + str(len(self.log_stat["readlog_err"])) + "个异常,详细信息将在最后展示\n"
 | 
					 | 
				
			||||||
        result += "✅正常运行脚本:" + str(self.log_stat["all"]) + " 次\n"
 | 
					 | 
				
			||||||
        if self.log_stat["all"] != 0:
 | 
					 | 
				
			||||||
            result += "⛔异常运行脚本:" + str(self.log_stat["nodejs_err"] + self.log_stat["python_err"]) + " 次,占比 " + str(
 | 
					 | 
				
			||||||
                round(
 | 
					 | 
				
			||||||
                    (float(self.log_stat["nodejs_err"] + self.log_stat["python_err"]) / float(
 | 
					 | 
				
			||||||
                        self.log_stat["all"]) * 100),
 | 
					 | 
				
			||||||
                    2)) + " %\n"
 | 
					 | 
				
			||||||
            result += "🧐其中:\n"
 | 
					 | 
				
			||||||
            result += "    🕵️♂️Nodejs异常:" + str(self.log_stat["nodejs_err"]) + " 次,占比 " + str(
 | 
					 | 
				
			||||||
                round((float(self.log_stat["nodejs_err"]) / float(self.log_stat["all"]) * 100), 2)) + " %\n"
 | 
					 | 
				
			||||||
            result += "    🕵️♂️Python异常:" + str(self.log_stat["python_err"]) + " 次,占比 " + str(
 | 
					 | 
				
			||||||
                round((float(self.log_stat["python_err"]) / float(self.log_stat["all"]) * 100), 2)) + " %\n"
 | 
					 | 
				
			||||||
        if len_nodejs_depend > 0 or len_python_depend > 0:
 | 
					 | 
				
			||||||
            result += "👮♂️依赖检测: " + (
 | 
					 | 
				
			||||||
                "☢已开启自动补全依赖,将执行shell命令,请小心恶意脚本👿" if self.auto_install_depend else "❎未开启自动补全依赖,请手动补齐以下依赖🤗") + "\n"
 | 
					 | 
				
			||||||
            if len_nodejs_depend > 0:
 | 
					 | 
				
			||||||
                result += "👮♂️检测到缺失NodeJs依赖:\n"
 | 
					 | 
				
			||||||
                result += str(self.log_stat["nodejs_depend"]) + "\n"
 | 
					 | 
				
			||||||
            if len_python_depend > 0:
 | 
					 | 
				
			||||||
                result += "👮♂️检测到缺失Python依赖:\n"
 | 
					 | 
				
			||||||
                result += str(self.log_stat["python_depend"]) + "\n"
 | 
					 | 
				
			||||||
        result += "💂♂️详细错误日志:\n\n"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for k, v in self.log_stat["err_dict"].items():
 | 
					 | 
				
			||||||
            if v:
 | 
					 | 
				
			||||||
                result += "🛑脚本:" + k + ":\n"
 | 
					 | 
				
			||||||
                for i in v:
 | 
					 | 
				
			||||||
                    result += "- ⚠" + i["type"] + "错误:" + i["log"] + " \n\n\n"
 | 
					 | 
				
			||||||
        if len(self.log_stat["readlog_err"]) != 0:
 | 
					 | 
				
			||||||
            result += "👷♀️读取日志异常日志:\n\n"
 | 
					 | 
				
			||||||
            for i in self.log_stat["readlog_err"]:
 | 
					 | 
				
			||||||
                result += "⚠" + i + "\n"
 | 
					 | 
				
			||||||
        send("🐲青龙日志分析", result)
 | 
					 | 
				
			||||||
        return result
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def auto_depend(self):
 | 
					 | 
				
			||||||
        len_nodejs_depend = len(self.log_stat["nodejs_depend"])
 | 
					 | 
				
			||||||
        len_python_depend = len(self.log_stat["python_depend"])
 | 
					 | 
				
			||||||
        len_all_depend = len_nodejs_depend + len_python_depend
 | 
					 | 
				
			||||||
        if len_nodejs_depend > 0:
 | 
					 | 
				
			||||||
            for i in range(len_nodejs_depend):
 | 
					 | 
				
			||||||
                shell_log = "🤖检测是否安装NodeJs依赖: " + self.log_stat["nodejs_depend"][i] + "\n"
 | 
					 | 
				
			||||||
                check_result = self.check_depend(self.log_stat["nodejs_depend"][i], "nodejs")
 | 
					 | 
				
			||||||
                if check_result:
 | 
					 | 
				
			||||||
                    shell_log += "📦" + str(check_result) + "已安装, 跳过安装\n"
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    shell_log += "⚙当前正在自动安装NodeJs依赖: " + self.log_stat["nodejs_depend"][i] + "\n"
 | 
					 | 
				
			||||||
                    install_result = self.install_depend(self.log_stat["nodejs_depend"][i], "nodejs")
 | 
					 | 
				
			||||||
                    shell_log += "🔨执行命令: " + install_result[0] + "\n"
 | 
					 | 
				
			||||||
                    if install_result[2] != '':
 | 
					 | 
				
			||||||
                        shell_log += "⛔出错了: \n" + install_result[2] + "\n\n"
 | 
					 | 
				
			||||||
                    elif install_result[1] != '':
 | 
					 | 
				
			||||||
                        shell_log += "✅执行完成: \n" + install_result[1] + "\n\n"
 | 
					 | 
				
			||||||
                    send("🐲青龙自动安装依赖(" + str(i + 1) + "/" + str(len_all_depend) + ")", shell_log)
 | 
					 | 
				
			||||||
        if len_python_depend > 0:
 | 
					 | 
				
			||||||
            for i in range(len_python_depend):
 | 
					 | 
				
			||||||
                shell_log = "🤖检测是否安装Python依赖: " + self.log_stat["python_depend"][i] + "\n"
 | 
					 | 
				
			||||||
                check_result = self.check_depend(self.log_stat["python_depend"][i], "python")
 | 
					 | 
				
			||||||
                if check_result:
 | 
					 | 
				
			||||||
                    shell_log += "📦" + str(check_result) + "已安装, 跳过安装\n"
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    shell_log += "⚙当前正在自动安装Python依赖: " + self.log_stat["python_depend"][i] + "\n"
 | 
					 | 
				
			||||||
                    install_result = self.install_depend(self.log_stat["python_depend"][i], "python")
 | 
					 | 
				
			||||||
                    shell_log += "🔨执行命令: " + install_result[0] + "\n"
 | 
					 | 
				
			||||||
                    if install_result[2] != '':
 | 
					 | 
				
			||||||
                        shell_log += "⛔出错了: \n" + install_result[2] + "\n\n"
 | 
					 | 
				
			||||||
                    elif install_result[1] != '':
 | 
					 | 
				
			||||||
                        shell_log += "✅执行完成: \n" + install_result[1] + "\n\n"
 | 
					 | 
				
			||||||
                    send("🐲青龙自动安装依赖(" + str(i + 1 + len_nodejs_depend) + "/" + str(len_all_depend) + ")", shell_log)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def install_depend(self, package, package_type):
 | 
					 | 
				
			||||||
        package = package.replace("+", "\+")
 | 
					 | 
				
			||||||
        if package_type == "nodejs":
 | 
					 | 
				
			||||||
            install_exec = 'cd /ql/ && ' + self.npm + ' install ' + package
 | 
					 | 
				
			||||||
        elif package_type == "python":
 | 
					 | 
				
			||||||
            install_exec = 'pip3 install ' + package
 | 
					 | 
				
			||||||
        elif package_type == "docker":
 | 
					 | 
				
			||||||
            install_exec = 'apk update && apk add ' + package
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if install_exec:
 | 
					 | 
				
			||||||
            install = subprocess.run(install_exec, shell=True, capture_output=True, text=True)
 | 
					 | 
				
			||||||
            install_log = install.stdout
 | 
					 | 
				
			||||||
            install_err = install.stderr
 | 
					 | 
				
			||||||
            return install_exec, install_log, install_err
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def check_depend(self, package, package_type):
 | 
					 | 
				
			||||||
        package = package.replace("+", "\+")
 | 
					 | 
				
			||||||
        if package_type == "nodejs":
 | 
					 | 
				
			||||||
            list_exec = 'cd /ql/ && ' + self.npm + ' list|grep ' + package
 | 
					 | 
				
			||||||
            list_log = subprocess.run(list_exec, shell=True, capture_output=True, text=True).stdout
 | 
					 | 
				
			||||||
            npm_re = re.search(r"[\s]" + package + "@[\d.]+", list_log)
 | 
					 | 
				
			||||||
            pnpm_re = re.search(r"^" + package + " [\d.]+", list_log)
 | 
					 | 
				
			||||||
            if npm_re:
 | 
					 | 
				
			||||||
                return npm_re.group()
 | 
					 | 
				
			||||||
            elif pnpm_re:
 | 
					 | 
				
			||||||
                return pnpm_re.group()
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return None
 | 
					 | 
				
			||||||
        elif package_type == "python":
 | 
					 | 
				
			||||||
            list_exec = 'pip3 list|grep ' + package
 | 
					 | 
				
			||||||
            list_log = subprocess.run(list_exec, shell=True, capture_output=True, text=True).stdout
 | 
					 | 
				
			||||||
            pip_re = re.search(package + "[ ]+[\d.]+", list_log)
 | 
					 | 
				
			||||||
            if pip_re:
 | 
					 | 
				
			||||||
                return pip_re.group()
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return None
 | 
					 | 
				
			||||||
        elif package_type == "docker":
 | 
					 | 
				
			||||||
            list_exec = 'apk list|grep ' + package
 | 
					 | 
				
			||||||
            list_log = subprocess.run(list_exec, shell=True, capture_output=True, text=True).stdout
 | 
					 | 
				
			||||||
            docker_re = re.search(package + "-[\d.]+", list_log)
 | 
					 | 
				
			||||||
            if docker_re:
 | 
					 | 
				
			||||||
                return docker_re.group()
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return None
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def load_send():
 | 
					 | 
				
			||||||
    global send
 | 
					 | 
				
			||||||
    cur_path = os.path.abspath(os.path.dirname(__file__))
 | 
					 | 
				
			||||||
    sys.path.append(cur_path)
 | 
					 | 
				
			||||||
    if os.path.exists(cur_path + "/notify.py"):
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            from notify import send
 | 
					 | 
				
			||||||
        except:
 | 
					 | 
				
			||||||
            send = False
 | 
					 | 
				
			||||||
            print("加载通知服务失败~")
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        send = False
 | 
					 | 
				
			||||||
        print("加载通知服务失败~")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == '__main__':
 | 
					 | 
				
			||||||
    load_send()
 | 
					 | 
				
			||||||
    ql = QlLogScan()
 | 
					 | 
				
			||||||
@ -1,606 +0,0 @@
 | 
				
			|||||||
# -*- coding:utf-8 -*-
 | 
					 | 
				
			||||||
# 作者仓库:https://jihulab.com/spiritlhl/qinglong_auto_tools.git
 | 
					 | 
				
			||||||
# 觉得不错麻烦点个star谢谢
 | 
					 | 
				
			||||||
# 频道:https://t.me/qinglong_auto_tools
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
'''
 | 
					 | 
				
			||||||
cron: 1
 | 
					 | 
				
			||||||
new Env('单容器 二叉树修复脚本依赖文件');
 | 
					 | 
				
			||||||
'''
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import os, requests
 | 
					 | 
				
			||||||
import os.path
 | 
					 | 
				
			||||||
import time
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# from os import popen
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 版本号 2.10.9 ,其他环境自测
 | 
					 | 
				
			||||||
# 只修复依赖文件(jdCookie.js那种)!!不修复环境依赖(pip install aiohttp)!!
 | 
					 | 
				
			||||||
# 默认不做任何操作只查询依赖脚本存在与否,有需求请在配置文件中配置对应变量进行操作,更新不会增加缺失文件
 | 
					 | 
				
			||||||
# 如果你有发现更多的脚本依赖文件没有新增,欢迎提交issues到https://jihulab.com/spiritlhl/dependence_scripts
 | 
					 | 
				
			||||||
# 增加缺失依赖文件(推荐)
 | 
					 | 
				
			||||||
# export ec_fix_dep="true"
 | 
					 | 
				
			||||||
# 更新老旧依赖文件(慎填,默认的依赖我使用的魔改版本,非必要别选)
 | 
					 | 
				
			||||||
# export ec_ref_dep="true"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 2021.11.27 支持新版本仓库拉取的脚本目录结构,针对各个仓库进行依赖检索
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
txtx = "青龙配置文件中的config中填写下列变量启用对应功能\n\n增加缺失依赖文件(推荐)\n填写export ec_fix_dep=\"true\"\n更新老旧依赖文件(日常使用别填,默认的依赖我使用的魔改版本,非必要别选)\n如果选择使用请使用对应code文件等相关文件:https://jihulab.com/spiritlhl/dependence_config \n填写export ec_ref_dep=\"true\"\n"
 | 
					 | 
				
			||||||
print(txtx)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
try:
 | 
					 | 
				
			||||||
    if os.environ["ec_fix_dep"] == "true":
 | 
					 | 
				
			||||||
        print("已配置依赖文件缺失修复\n")
 | 
					 | 
				
			||||||
        fix = 1
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        fix = 0
 | 
					 | 
				
			||||||
except:
 | 
					 | 
				
			||||||
    fix = 0
 | 
					 | 
				
			||||||
    print("#默认不修复缺失依赖文件,有需求")
 | 
					 | 
				
			||||||
    print("#请在配置文件中配置\nexport ec_fix_dep=\"true\" \n#开启脚本依赖文件缺失修复\n")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
try:
 | 
					 | 
				
			||||||
    if os.environ["ec_ref_dep"] == "true":
 | 
					 | 
				
			||||||
        print("已配置依赖文件老旧更新\n")
 | 
					 | 
				
			||||||
        ref = 1
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        ref = 0
 | 
					 | 
				
			||||||
except:
 | 
					 | 
				
			||||||
    ref = 0
 | 
					 | 
				
			||||||
    print("#默认不更新老旧依赖文件,有需求")
 | 
					 | 
				
			||||||
    print("#请在配置文件中配置\nexport ec_re_dep=\"true\" #开启脚本依赖文件更新\n")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def traversalDir_FirstDir(path):
 | 
					 | 
				
			||||||
    list = []
 | 
					 | 
				
			||||||
    if (os.path.exists(path)):
 | 
					 | 
				
			||||||
        files = os.listdir(path)
 | 
					 | 
				
			||||||
        for file in files:
 | 
					 | 
				
			||||||
            m = os.path.join(path, file)
 | 
					 | 
				
			||||||
            if (os.path.isdir(m)):
 | 
					 | 
				
			||||||
                h = os.path.split(m)
 | 
					 | 
				
			||||||
                list.append(h[1])
 | 
					 | 
				
			||||||
        print("文件夹名字有:")
 | 
					 | 
				
			||||||
        print(list)
 | 
					 | 
				
			||||||
        return list
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def check_dependence(file_path):
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json()
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("网络波动,稍后尝试")
 | 
					 | 
				
			||||||
        time.sleep(5)
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json()
 | 
					 | 
				
			||||||
        except:
 | 
					 | 
				
			||||||
            print("网络问题无法获取仓库文件列表,终止检索")
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    dependence_scripts_name = []
 | 
					 | 
				
			||||||
    for i in res:
 | 
					 | 
				
			||||||
        dependence_scripts_name.append(i["name"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
        dir_list = os.listdir(file_path)
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        dir_list = os.listdir("." + file_path)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 查询
 | 
					 | 
				
			||||||
    for i in dependence_scripts_name:
 | 
					 | 
				
			||||||
        if i not in dir_list and i != "utils" and i != "function":
 | 
					 | 
				
			||||||
            print("缺失文件 {}{}".format(file_path, i))
 | 
					 | 
				
			||||||
            # 修补
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                if fix == 1:
 | 
					 | 
				
			||||||
                    print("增加文件 {}{}".format(file_path, i))
 | 
					 | 
				
			||||||
                    r = requests.get(
 | 
					 | 
				
			||||||
                        "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open(file_path + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("." + file_path + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
            except:
 | 
					 | 
				
			||||||
                temp = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if temp == 1:
 | 
					 | 
				
			||||||
            print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 更新
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if ref == 1:
 | 
					 | 
				
			||||||
            for i in dependence_scripts_name:
 | 
					 | 
				
			||||||
                if i != "utils" and i != "function":
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open(i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("无需修改 {}".format(i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 {}".format(i))
 | 
					 | 
				
			||||||
                                with open(file_path + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open(i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("无需修改 {}".format(i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 {}".format(i))
 | 
					 | 
				
			||||||
                                with open("." + file_path + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("未配置ec_ref_dep,默认不更新依赖文件")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #########################################################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # utils
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json()
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("网络波动,稍后尝试")
 | 
					 | 
				
			||||||
        time.sleep(5)
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json()
 | 
					 | 
				
			||||||
        except:
 | 
					 | 
				
			||||||
            print("网络问题无法获取仓库文件列表,终止检索")
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    dependence_scripts_utils = []
 | 
					 | 
				
			||||||
    for i in res:
 | 
					 | 
				
			||||||
        dependence_scripts_utils.append(i["name"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
            utils_list = os.listdir(file_path + "utils")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            utils_list = os.listdir("." + file_path + "utils")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
            os.makedirs(file_path + "utils")
 | 
					 | 
				
			||||||
            utils_list = os.listdir(file_path + "utils")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            os.makedirs("." + file_path + "utils")
 | 
					 | 
				
			||||||
            utils_list = os.listdir("." + file_path + "utils")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 查询
 | 
					 | 
				
			||||||
    for i in dependence_scripts_utils:
 | 
					 | 
				
			||||||
        if i not in utils_list and i != "utils" and i != "function":
 | 
					 | 
				
			||||||
            print("缺失文件 {}utils/{}".format(file_path, i))
 | 
					 | 
				
			||||||
            # 修补
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                if fix == 1:
 | 
					 | 
				
			||||||
                    print("增加文件 {}utils/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                    r = requests.get(
 | 
					 | 
				
			||||||
                        "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open(file_path + "utils/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("." + file_path + "utils/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
            except:
 | 
					 | 
				
			||||||
                temp = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if temp == 1:
 | 
					 | 
				
			||||||
            print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 更新
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if ref == 1:
 | 
					 | 
				
			||||||
            for i in dependence_scripts_utils:
 | 
					 | 
				
			||||||
                if i != "utils" and i != "function":
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open(file_path + "utils/" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("已存在文件 {}utils/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 {}utils/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                                with open(file_path + "utils/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("." + file_path + "utils/" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("已存在文件 {}utils/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 {}utils/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                                with open("." + file_path + "utils/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("未配置ec_ref_dep,默认不更新依赖文件")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ####################################################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # function
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json()
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("网络波动,稍后尝试")
 | 
					 | 
				
			||||||
        time.sleep(5)
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json()
 | 
					 | 
				
			||||||
        except:
 | 
					 | 
				
			||||||
            print("网络问题无法获取仓库文件列表,终止检索")
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    dependence_scripts_function = []
 | 
					 | 
				
			||||||
    for i in res:
 | 
					 | 
				
			||||||
        dependence_scripts_function.append(i["name"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
            function_list = os.listdir(file_path + "function")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            function_list = os.listdir("." + file_path + "function")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
            os.makedirs(file_path + "function")
 | 
					 | 
				
			||||||
            function_list = os.listdir(file_path + "function")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            os.makedirs("." + file_path + "function")
 | 
					 | 
				
			||||||
            function_list = os.listdir("." + file_path + "function")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 查询
 | 
					 | 
				
			||||||
    for i in dependence_scripts_function:
 | 
					 | 
				
			||||||
        if i not in function_list and i != "utils" and i != "function":
 | 
					 | 
				
			||||||
            print("缺失文件 {}function/{}".format(file_path, i))
 | 
					 | 
				
			||||||
            # 修补
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                if fix == 1:
 | 
					 | 
				
			||||||
                    print("增加文件 {}function/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                    r = requests.get(
 | 
					 | 
				
			||||||
                        "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open(file_path + "function/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("." + file_path + "function/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
            except:
 | 
					 | 
				
			||||||
                temp = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if temp == 1:
 | 
					 | 
				
			||||||
            print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 更新
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if ref == 1:
 | 
					 | 
				
			||||||
            for i in dependence_scripts_function:
 | 
					 | 
				
			||||||
                if i != "utils" and i != "function":
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open(file_path + "function/" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("已存在文件 {}function/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 {}function/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                                with open(file_path + "function/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("." + file_path + "function/" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("已存在文件 {}function/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 {}function/{}".format(file_path, i))
 | 
					 | 
				
			||||||
                                with open('.' + file_path + "function/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("未配置ec_ref_dep,默认不更新依赖文件")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def check_root():
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json()
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("网络波动,稍后尝试")
 | 
					 | 
				
			||||||
        time.sleep(5)
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json()
 | 
					 | 
				
			||||||
        except:
 | 
					 | 
				
			||||||
            print("网络问题无法获取仓库文件列表,终止检索")
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    dependence_scripts_name = []
 | 
					 | 
				
			||||||
    for i in res:
 | 
					 | 
				
			||||||
        dependence_scripts_name.append(i["name"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
        dir_list = os.listdir("./")
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        dir_list = os.listdir("../")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 查询
 | 
					 | 
				
			||||||
    for i in dependence_scripts_name:
 | 
					 | 
				
			||||||
        if i not in dir_list and i != "utils" and i != "function":
 | 
					 | 
				
			||||||
            print("缺失文件 {}".format(i))
 | 
					 | 
				
			||||||
            # 修补
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                if fix == 1:
 | 
					 | 
				
			||||||
                    print("增加文件 {}".format(i))
 | 
					 | 
				
			||||||
                    r = requests.get(
 | 
					 | 
				
			||||||
                        "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open(i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("../" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
            except:
 | 
					 | 
				
			||||||
                temp = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if temp == 1:
 | 
					 | 
				
			||||||
            print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 更新
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if ref == 1:
 | 
					 | 
				
			||||||
            for i in dependence_scripts_name:
 | 
					 | 
				
			||||||
                if i != "utils" and i != "function":
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open(i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("无需修改 {}".format(i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 {}".format(i))
 | 
					 | 
				
			||||||
                                with open(i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("../" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("无需修改 {}".format(i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 {}".format(i))
 | 
					 | 
				
			||||||
                                with open("../" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("未配置ec_ref_dep,默认不更新依赖文件")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #########################################################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # utils
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json()
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("网络波动,稍后尝试")
 | 
					 | 
				
			||||||
        time.sleep(5)
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json()
 | 
					 | 
				
			||||||
        except:
 | 
					 | 
				
			||||||
            print("网络问题无法获取仓库文件列表,终止检索")
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    dependence_scripts_utils = []
 | 
					 | 
				
			||||||
    for i in res:
 | 
					 | 
				
			||||||
        dependence_scripts_utils.append(i["name"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
            utils_list = os.listdir("./utils")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            utils_list = os.listdir("../utils")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
            os.makedirs("utils")
 | 
					 | 
				
			||||||
            utils_list = os.listdir("./utils")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            os.makedirs("../utils")
 | 
					 | 
				
			||||||
            utils_list = os.listdir("../utils")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 查询
 | 
					 | 
				
			||||||
    for i in dependence_scripts_utils:
 | 
					 | 
				
			||||||
        if i not in utils_list and i != "utils" and i != "function":
 | 
					 | 
				
			||||||
            print("缺失文件 utils/{}".format(i))
 | 
					 | 
				
			||||||
            # 修补
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                if fix == 1:
 | 
					 | 
				
			||||||
                    print("增加文件 utils/{}".format(i))
 | 
					 | 
				
			||||||
                    r = requests.get(
 | 
					 | 
				
			||||||
                        "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open("./utils/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("../utils/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
            except:
 | 
					 | 
				
			||||||
                temp = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if temp == 1:
 | 
					 | 
				
			||||||
            print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 更新
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if ref == 1:
 | 
					 | 
				
			||||||
            for i in dependence_scripts_utils:
 | 
					 | 
				
			||||||
                if i != "utils" and i != "function":
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open("./utils/" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("已存在文件 utils/{}".format(i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 utils/{}".format(i))
 | 
					 | 
				
			||||||
                                with open("./utils/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("../utils/" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("已存在文件 utils/{}".format(i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 utils/{}".format(i))
 | 
					 | 
				
			||||||
                                with open("../utils/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("未配置ec_ref_dep,默认不更新依赖文件")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ####################################################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # function
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json()
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("网络波动,稍后尝试")
 | 
					 | 
				
			||||||
        time.sleep(5)
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json()
 | 
					 | 
				
			||||||
        except:
 | 
					 | 
				
			||||||
            print("网络问题无法获取仓库文件列表,终止检索")
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    dependence_scripts_function = []
 | 
					 | 
				
			||||||
    for i in res:
 | 
					 | 
				
			||||||
        dependence_scripts_function.append(i["name"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
            function_list = os.listdir("./function")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            function_list = os.listdir("../function")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
            os.makedirs("function")
 | 
					 | 
				
			||||||
            function_list = os.listdir("./function")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            os.makedirs("../function")
 | 
					 | 
				
			||||||
            function_list = os.listdir("../function")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 查询
 | 
					 | 
				
			||||||
    for i in dependence_scripts_function:
 | 
					 | 
				
			||||||
        if i not in function_list and i != "utils" and i != "function":
 | 
					 | 
				
			||||||
            print("缺失文件 function/{}".format(i))
 | 
					 | 
				
			||||||
            # 修补
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                if fix == 1:
 | 
					 | 
				
			||||||
                    print("增加文件 function/{}".format(i))
 | 
					 | 
				
			||||||
                    r = requests.get(
 | 
					 | 
				
			||||||
                        "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open("./function/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("../function/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                            fe.write(r)
 | 
					 | 
				
			||||||
            except:
 | 
					 | 
				
			||||||
                temp = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if temp == 1:
 | 
					 | 
				
			||||||
            print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件")
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 更新
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        if ref == 1:
 | 
					 | 
				
			||||||
            for i in dependence_scripts_function:
 | 
					 | 
				
			||||||
                if i != "utils" and i != "function":
 | 
					 | 
				
			||||||
                    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
                        with open("./function/" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("已存在文件 function/{}".format(i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 function/{}".format(i))
 | 
					 | 
				
			||||||
                                with open("./function/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        with open("../function/" + i, "r", encoding="utf-8") as f:
 | 
					 | 
				
			||||||
                            r = requests.get(
 | 
					 | 
				
			||||||
                                "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text
 | 
					 | 
				
			||||||
                            d = f.read()
 | 
					 | 
				
			||||||
                            if r == d:
 | 
					 | 
				
			||||||
                                print("已存在文件 function/{}".format(i))
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("更新文件 function/{}".format(i))
 | 
					 | 
				
			||||||
                                with open("../function/" + i, "w", encoding="utf-8") as fe:
 | 
					 | 
				
			||||||
                                    fe.write(r)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    except:
 | 
					 | 
				
			||||||
        print("未配置ec_ref_dep,默认不更新依赖文件")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == '__main__':
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 针对青龙拉取仓库后单个仓库单个文件夹的情况对每个文件夹进行检测,不需要可以注释掉  开始到结束的部分
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ### 开始
 | 
					 | 
				
			||||||
    if "db" in os.listdir("../"):
 | 
					 | 
				
			||||||
        dirs_ls = traversalDir_FirstDir("./")
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        dirs_ls = traversalDir_FirstDir("../")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # script根目录默认存在的文件夹,放入其中的文件夹不再检索其内依赖完整性
 | 
					 | 
				
			||||||
    or_list = ['node_modules', '__pycache__', 'utils', '.pnpm-store', 'function', 'tools', 'backUp', '.git', '.idea', '.github']
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print()
 | 
					 | 
				
			||||||
    for i in dirs_ls:
 | 
					 | 
				
			||||||
        if i not in or_list:
 | 
					 | 
				
			||||||
            file_path = "./" + i + "/"
 | 
					 | 
				
			||||||
            print("检测依赖文件是否完整路径  {}".format(file_path))
 | 
					 | 
				
			||||||
            check_dependence(file_path)
 | 
					 | 
				
			||||||
            print()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ### 结束
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # 检测根目录,不需要可以注释掉下面这行,旧版本只需要保留下面这行
 | 
					 | 
				
			||||||
    check_root()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print("检测完毕")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if fix == 1:
 | 
					 | 
				
			||||||
        print("修复完毕后脚本无法运行,显示缺依赖文件,大概率库里没有或者依赖文件同名但内容不一样,请另寻他法\n")
 | 
					 | 
				
			||||||
        print("修复完毕后缺依赖环境导致的脚本无法运行,这种无法修复,请自行在依赖管理中添加\n")
 | 
					 | 
				
			||||||
        print("前者缺文件(如 Error: Cannot find module './utils/magic'),后者缺依赖(如 Error: Cannot find module 'date-fns' ),本脚本只修复前一种")
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user