Warhummer/Untitled-1.py
2025-06-25 09:35:26 +08:00

141 lines
5.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
检查所有相关文件中的权重默认值是否已从5改为100
"""
import os
import re
import logging
from colorama import init, Fore, Style
# 初始化colorama
init()
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger('check_weights')
# 需要检查的文件和目录
CHECK_PATHS = [
'templates/admin/characters.html',
'templates/weight_management.html',
'static/js/admin/characters.js',
'static/js/game.js',
'app_sqlite.py',
]
# 权重相关的正则表达式模式
WEIGHT_PATTERNS = [
# HTML中的默认值
(r'id="character-weight"[^>]*value="(\d+)"', 'HTML表单默认值'),
(r'min="1" max="(\d+)" value="(\d+)"', 'HTML数字输入范围'),
# JavaScript中的默认值引用
(r'character\.weight \|\| (\d+)', 'JS默认权重引用'),
(r'weight: parseInt\([^)]+\) \|\| (\d+)', 'JS解析默认权重'),
# Python中的默认值
(r"character\['weight'\] = (\d+)", 'Python默认权重赋值'),
# 描述文本中的范围
(r'权重 \(1-(\d+)\)', '权重范围描述'),
(r'默认值为(\d+)', '默认值描述'),
# 范围验证
(r'weight < 1 \|\| weight > (\d+)', 'JS权重验证'),
]
def check_file(file_path):
"""检查单个文件中的权重默认值"""
if not os.path.exists(file_path):
logger.warning(f"文件不存在: {file_path}")
return [], []
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
correct_matches = []
incorrect_matches = []
# 检查所有权重模式
for pattern, description in WEIGHT_PATTERNS:
matches = re.finditer(pattern, content)
for match in matches:
line_num = content[:match.start()].count('\n') + 1
line_text = content.splitlines()[line_num-1]
# 根据不同的模式检查不同的组
if 'max' in pattern and 'value' in pattern:
# 处理同时有max和value的情况
max_val = match.group(1)
value = match.group(2)
if max_val == '1000' and value == '100':
correct_matches.append((file_path, line_num, description, line_text))
else:
incorrect_matches.append((file_path, line_num, description, line_text))
else:
# 普通情况,检查第一个捕获组
weight_value = match.group(1)
if description == '权重范围描述' and weight_value == '1000':
correct_matches.append((file_path, line_num, description, line_text))
elif weight_value == '100':
correct_matches.append((file_path, line_num, description, line_text))
else:
incorrect_matches.append((file_path, line_num, description, line_text))
return correct_matches, incorrect_matches
def main():
"""主函数"""
logger.info("开始检查权重默认值")
all_correct_matches = []
all_incorrect_matches = []
# 查找所有匹配的文件
for path in CHECK_PATHS:
if os.path.isdir(path):
# 处理目录
for root, _, files in os.walk(path):
for file in files:
if file.endswith(('.html', '.js', '.py', '.css')):
file_path = os.path.join(root, file)
correct, incorrect = check_file(file_path)
all_correct_matches.extend(correct)
all_incorrect_matches.extend(incorrect)
else:
# 处理单个文件
correct, incorrect = check_file(path)
all_correct_matches.extend(correct)
all_incorrect_matches.extend(incorrect)
# 输出结果
print("\n" + "="*80)
print(f"{Fore.GREEN}正确的权重默认值 (100 或 1000): {len(all_correct_matches)}{Style.RESET_ALL}")
for file_path, line_num, desc, line_text in all_correct_matches:
print(f"{Fore.GREEN}{file_path}:{line_num} - {desc}{Style.RESET_ALL}")
print(f" {line_text.strip()}")
print("\n" + "="*80)
print(f"{Fore.RED}不正确的权重默认值 (非 100 或 1000): {len(all_incorrect_matches)}{Style.RESET_ALL}")
for file_path, line_num, desc, line_text in all_incorrect_matches:
print(f"{Fore.RED}{file_path}:{line_num} - {desc}{Style.RESET_ALL}")
print(f" {line_text.strip()}")
# 总结
print("\n" + "="*80)
if len(all_incorrect_matches) == 0:
print(f"{Fore.GREEN}所有权重相关默认值检查通过!{Style.RESET_ALL}")
else:
print(f"{Fore.YELLOW}发现 {len(all_incorrect_matches)} 个需要修改的地方。{Style.RESET_ALL}")
return len(all_incorrect_matches) == 0
if __name__ == "__main__":
main()