321 lines
11 KiB
Python
Executable File
321 lines
11 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
验证配置文件
|
|
确保所有配置都正确设置
|
|
"""
|
|
|
|
import os
|
|
import json
|
|
import sys
|
|
|
|
def verify_config():
|
|
"""验证配置文件"""
|
|
config_path = "/home/ubuntu/nanocode/it_automation_enhanced/config/config.json"
|
|
|
|
print("🔍 验证IT资讯自动化系统配置")
|
|
print("=" * 60)
|
|
|
|
if not os.path.exists(config_path):
|
|
print(f"❌ 配置文件不存在: {config_path}")
|
|
return False
|
|
|
|
try:
|
|
with open(config_path, 'r', encoding='utf-8') as f:
|
|
config = json.load(f)
|
|
|
|
print("✅ 配置文件加载成功")
|
|
print("")
|
|
|
|
# 1. 检查系统信息
|
|
print("1️⃣ 系统信息:")
|
|
system = config.get('system', {})
|
|
print(f" 名称: {system.get('name', '未设置')}")
|
|
print(f" 版本: {system.get('version', '未设置')}")
|
|
print(f" 描述: {system.get('description', '未设置')}")
|
|
print("")
|
|
|
|
# 2. 检查路径配置
|
|
print("2️⃣ 路径配置:")
|
|
paths = config.get('paths', {})
|
|
for key, path in paths.items():
|
|
if os.path.exists(path):
|
|
print(f" ✅ {key}: {path}")
|
|
else:
|
|
# 检查是否是文件路径
|
|
dir_path = os.path.dirname(path) if '.' in os.path.basename(path) else path
|
|
if os.path.exists(dir_path):
|
|
print(f" ⚠️ {key}: {path} (目录存在,文件可能不存在)")
|
|
else:
|
|
print(f" ❌ {key}: {path} (路径不存在)")
|
|
print("")
|
|
|
|
# 3. 检查抓取配置
|
|
print("3️⃣ 抓取配置:")
|
|
crawler = config.get('crawler', {})
|
|
print(f" 最小字数: {crawler.get('min_word_count', '未设置')}")
|
|
print(f" 最大天数: {crawler.get('max_days_old', '未设置')}")
|
|
|
|
websites = config.get('websites', [])
|
|
enabled_count = sum(1 for w in websites if w.get('enabled', True))
|
|
print(f" 网站数量: {len(websites)} (启用: {enabled_count})")
|
|
for website in websites:
|
|
status = "✅" if website.get('enabled', True) else "⏸️"
|
|
print(f" {status} {website.get('name', '未命名')}: {website.get('url', '无URL')}")
|
|
print("")
|
|
|
|
# 4. 检查DeepSeek配置
|
|
print("4️⃣ DeepSeek配置:")
|
|
deepseek = config.get('deepseek', {})
|
|
api_key = deepseek.get('api_key', '')
|
|
if api_key and not api_key.startswith('{{'):
|
|
print(f" ✅ API密钥: 已设置 ({api_key[:10]}...{api_key[-4:]})")
|
|
else:
|
|
print(f" ❌ API密钥: 未设置")
|
|
|
|
processing = config.get('processing', {})
|
|
print(f" 翻译启用: {processing.get('enable_translation', False)}")
|
|
print(f" 总结启用: {processing.get('enable_summarization', False)}")
|
|
print("")
|
|
|
|
# 5. 检查邮件配置
|
|
print("5️⃣ 邮件配置:")
|
|
email = config.get('email', {})
|
|
|
|
smtp_host = email.get('smtp_host', '')
|
|
if smtp_host and not smtp_host.startswith('{{'):
|
|
print(f" ✅ SMTP服务器: {smtp_host}:{email.get('smtp_port', '未设置')}")
|
|
else:
|
|
print(f" ❌ SMTP服务器: 未设置")
|
|
|
|
username = email.get('username', '')
|
|
if username and not username.startswith('{{'):
|
|
print(f" ✅ 用户名: {username}")
|
|
else:
|
|
print(f" ❌ 用户名: 未设置")
|
|
|
|
password = email.get('password', '')
|
|
if password and not password.startswith('{{'):
|
|
print(f" ✅ 密码: 已设置 ({password[:2]}...{password[-2:]})")
|
|
else:
|
|
print(f" ❌ 密码: 未设置")
|
|
|
|
from_email = email.get('from_email', '')
|
|
to_email = email.get('to_email', '')
|
|
print(f" 发件人: {from_email}")
|
|
print(f" 收件人: {to_email}")
|
|
print(f" 每日摘要: {email.get('enable_daily_digest', False)}")
|
|
print("")
|
|
|
|
# 6. 检查小红书配置
|
|
print("6️⃣ 小红书配置:")
|
|
xhs = config.get('xiaohongshu', {})
|
|
print(f" 发布启用: {xhs.get('enable_publish', False)}")
|
|
|
|
cookie_file = xhs.get('cookie_file', '')
|
|
if os.path.exists(cookie_file):
|
|
size = os.path.getsize(cookie_file)
|
|
print(f" ✅ Cookie文件: {cookie_file} ({size:,} 字节)")
|
|
else:
|
|
print(f" ❌ Cookie文件: {cookie_file} (不存在)")
|
|
|
|
xhs_cli = xhs.get('xhs_cli_path', '')
|
|
if os.path.exists(xhs_cli):
|
|
print(f" ✅ xhs-cli: {xhs_cli}")
|
|
else:
|
|
print(f" ⚠️ xhs-cli: {xhs_cli} (可能未安装)")
|
|
|
|
tags = xhs.get('default_tags', [])
|
|
print(f" 默认标签: {', '.join(tags[:3])}...")
|
|
print("")
|
|
|
|
# 7. 检查调度配置
|
|
print("7️⃣ 调度配置:")
|
|
scheduler = config.get('scheduler', {})
|
|
print(f" Cron表达式: {scheduler.get('cron_expression', '未设置')}")
|
|
print(f" 时区: {scheduler.get('timezone', '未设置')}")
|
|
print(f" 日志保留: {scheduler.get('log_retention_days', '未设置')} 天")
|
|
print("")
|
|
|
|
# 8. 综合评估
|
|
print("8️⃣ 综合评估:")
|
|
|
|
issues = []
|
|
|
|
# 检查关键配置
|
|
if not api_key or api_key.startswith('{{'):
|
|
issues.append("DeepSeek API密钥未设置")
|
|
|
|
if not smtp_host or smtp_host.startswith('{{'):
|
|
issues.append("邮件SMTP服务器未设置")
|
|
|
|
if not username or username.startswith('{{'):
|
|
issues.append("邮件用户名未设置")
|
|
|
|
if not password or password.startswith('{{'):
|
|
issues.append("邮件密码未设置")
|
|
|
|
if not os.path.exists(cookie_file):
|
|
issues.append("小红书Cookie文件不存在")
|
|
|
|
if issues:
|
|
print(" ⚠️ 发现以下问题:")
|
|
for issue in issues:
|
|
print(f" • {issue}")
|
|
else:
|
|
print(" ✅ 所有关键配置都已正确设置")
|
|
|
|
print("")
|
|
print("=" * 60)
|
|
|
|
if issues:
|
|
print("❌ 配置验证失败,请修复上述问题")
|
|
return False
|
|
else:
|
|
print("✅ 配置验证通过,系统可以正常运行")
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"❌ 配置验证失败: {e}")
|
|
return False
|
|
|
|
def test_email_config():
|
|
"""测试邮件配置"""
|
|
print("📧 测试邮件配置...")
|
|
|
|
try:
|
|
import smtplib
|
|
from email.mime.text import MIMEText
|
|
|
|
config_path = "/home/ubuntu/nanocode/it_automation_enhanced/config/config.json"
|
|
with open(config_path, 'r', encoding='utf-8') as f:
|
|
config = json.load(f)
|
|
|
|
email = config.get('email', {})
|
|
smtp_host = email.get('smtp_host')
|
|
smtp_port = email.get('smtp_port', 465)
|
|
username = email.get('username')
|
|
password = email.get('password')
|
|
|
|
if not all([smtp_host, username, password]):
|
|
print(" ⚠️ 邮件配置不完整,跳过测试")
|
|
return False
|
|
|
|
print(f" 连接 {smtp_host}:{smtp_port}...")
|
|
|
|
try:
|
|
if smtp_port == 465:
|
|
server = smtplib.SMTP_SSL(smtp_host, smtp_port)
|
|
else:
|
|
server = smtplib.SMTP(smtp_host, smtp_port)
|
|
server.starttls()
|
|
|
|
server.login(username, password)
|
|
server.quit()
|
|
|
|
print(" ✅ 邮件服务器连接成功")
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f" ❌ 邮件服务器连接失败: {e}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f" ❌ 邮件配置测试失败: {e}")
|
|
return False
|
|
|
|
def test_xhs_config():
|
|
"""测试小红书配置"""
|
|
print("📱 测试小红书配置...")
|
|
|
|
try:
|
|
import subprocess
|
|
|
|
config_path = "/home/ubuntu/nanocode/it_automation_enhanced/config/config.json"
|
|
with open(config_path, 'r', encoding='utf-8') as f:
|
|
config = json.load(f)
|
|
|
|
xhs = config.get('xiaohongshu', {})
|
|
cookie_file = xhs.get('cookie_file', '')
|
|
xhs_cli = xhs.get('xhs_cli_path', '/home/ubuntu/.local/bin/xhs')
|
|
|
|
# 检查xhs-cli
|
|
if not os.path.exists(xhs_cli):
|
|
print(f" ❌ xhs-cli不存在: {xhs_cli}")
|
|
return False
|
|
|
|
# 检查版本
|
|
try:
|
|
result = subprocess.run([xhs_cli, '--version'], capture_output=True, text=True, timeout=5)
|
|
if result.returncode == 0:
|
|
print(f" ✅ xhs-cli版本: {result.stdout.strip()}")
|
|
else:
|
|
print(f" ⚠️ xhs-cli版本检查失败: {result.stderr}")
|
|
except:
|
|
print(f" ⚠️ xhs-cli版本检查失败")
|
|
|
|
# 检查Cookie文件
|
|
if os.path.exists(cookie_file):
|
|
size = os.path.getsize(cookie_file)
|
|
print(f" ✅ Cookie文件存在: {cookie_file} ({size:,} 字节)")
|
|
|
|
# 检查Cookie格式
|
|
try:
|
|
with open(cookie_file, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
if 'xiaohongshu.com' in content:
|
|
print(f" ✅ Cookie包含小红书域名")
|
|
else:
|
|
print(f" ⚠️ Cookie可能不包含小红书域名")
|
|
except:
|
|
print(f" ⚠️ 无法读取Cookie文件内容")
|
|
|
|
return True
|
|
else:
|
|
print(f" ❌ Cookie文件不存在: {cookie_file}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f" ❌ 小红书配置测试失败: {e}")
|
|
return False
|
|
|
|
def main():
|
|
"""主函数"""
|
|
print("🚀 IT资讯自动化系统配置验证")
|
|
print("=" * 60)
|
|
|
|
# 验证配置
|
|
config_ok = verify_config()
|
|
|
|
if config_ok:
|
|
print("")
|
|
print("🧪 开始功能测试...")
|
|
print("")
|
|
|
|
# 测试邮件配置
|
|
email_ok = test_email_config()
|
|
print("")
|
|
|
|
# 测试小红书配置
|
|
xhs_ok = test_xhs_config()
|
|
print("")
|
|
|
|
# 总结
|
|
print("=" * 60)
|
|
print("📋 测试结果总结:")
|
|
print(f" 配置验证: {'✅ 通过' if config_ok else '❌ 失败'}")
|
|
print(f" 邮件配置: {'✅ 正常' if email_ok else '⚠️ 需要检查'}")
|
|
print(f" 小红书配置: {'✅ 正常' if xhs_ok else '⚠️ 需要检查'}")
|
|
print("")
|
|
|
|
if config_ok and email_ok and xhs_ok:
|
|
print("🎉 所有测试通过,系统可以正常运行!")
|
|
return 0
|
|
else:
|
|
print("⚠️ 部分测试失败,请检查配置")
|
|
return 1
|
|
else:
|
|
print("❌ 配置验证失败,请修复配置问题")
|
|
return 1
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main()) |