338 lines
12 KiB
Python
338 lines
12 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
小红书集成测试脚本
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
import json
|
|
|
|
# 添加当前目录到Python路径
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from nanobot_integration import XiaohongshuSkill, publish_to_xiaohongshu, convert_to_xiaohongshu_format
|
|
|
|
|
|
def test_basic_functionality():
|
|
"""测试基本功能"""
|
|
print("🧪 测试小红书集成基本功能")
|
|
print("=" * 60)
|
|
|
|
# 创建技能实例
|
|
skill = XiaohongshuSkill()
|
|
|
|
# 初始化
|
|
print("1. 初始化技能...")
|
|
init_result = skill.initialize()
|
|
print(f" 结果: {'✅ 成功' if init_result['success'] else '❌ 失败'}")
|
|
if not init_result['success']:
|
|
print(f" 错误: {init_result.get('error')}")
|
|
return False
|
|
|
|
# 获取技能信息
|
|
print("\n2. 获取技能信息...")
|
|
skill_info = skill.get_skill_info()
|
|
print(f" 名称: {skill_info['name']}")
|
|
print(f" 版本: {skill_info['version']}")
|
|
print(f" 描述: {skill_info['description']}")
|
|
|
|
# 测试状态查询
|
|
print("\n3. 测试状态查询...")
|
|
status_result = skill.handle_command('status', {})
|
|
if status_result['success']:
|
|
print(" ✅ 状态查询成功")
|
|
status = status_result.get('status', {})
|
|
publisher = status.get('publisher', {})
|
|
print(f" CLI可用: {publisher.get('cli_available', False)}")
|
|
print(f" 已登录: {publisher.get('is_logged_in', False)}")
|
|
else:
|
|
print(f" ❌ 状态查询失败: {status_result.get('error')}")
|
|
|
|
return True
|
|
|
|
|
|
def test_content_conversion():
|
|
"""测试内容转换"""
|
|
print("\n📝 测试内容转换功能")
|
|
print("=" * 60)
|
|
|
|
# 测试文章数据
|
|
test_articles = [
|
|
{
|
|
'title': 'AI技术新突破:GPT-5即将发布',
|
|
'content': 'OpenAI宣布正在开发GPT-5,预计2025年发布。\n\n主要特点:\n1. 更强的逻辑推理能力\n2. 多模态理解(文本、图像、音频)\n3. 更低的计算成本\n4. 更好的中文支持\n\n技术规格:\n- 参数规模:10万亿\n- 训练数据:100种语言\n- 推理速度:提升50%\n\n这将推动AI技术进入新的发展阶段。',
|
|
'source': 'TechCrunch',
|
|
'url': 'https://techcrunch.com/gpt5',
|
|
'images': [],
|
|
'publish_date': '2026-03-15',
|
|
'author': 'AI研究团队',
|
|
'category': 'AI'
|
|
},
|
|
{
|
|
'title': 'Python 3.12性能大幅提升25%',
|
|
'content': 'Python 3.12正式发布,带来了显著的性能改进。\n\n性能提升:\n• 解释器性能提升25%\n• 内存使用优化\n• 启动时间减少\n\n新特性:\n1. 更好的错误信息\n2. 新的类型提示语法\n3. 改进的异步支持\n4. 模式匹配增强\n\n对于开发者来说,这是值得升级的版本。',
|
|
'source': 'Python官方博客',
|
|
'url': 'https://python.org/news',
|
|
'images': ['python_logo.jpg'],
|
|
'publish_date': '2026-03-14',
|
|
'author': 'Python核心团队',
|
|
'category': '编程语言'
|
|
},
|
|
{
|
|
'title': 'Rust 2.0:内存安全的新里程碑',
|
|
'content': 'Rust语言团队宣布开始规划Rust 2.0版本。\n\n目标:\n- 进一步简化所有权系统\n- 改进异步编程体验\n- 增强与C++的互操作性\n- 降低学习曲线\n\n预计发布时间:2026年底',
|
|
'source': 'Rust官方博客',
|
|
'url': 'https://rust-lang.org/blog',
|
|
'images': ['rust_logo.png'],
|
|
'publish_date': '2026-03-13',
|
|
'author': 'Rust核心团队',
|
|
'category': '系统编程'
|
|
}
|
|
]
|
|
|
|
skill = XiaohongshuSkill()
|
|
skill.initialize()
|
|
|
|
for i, article in enumerate(test_articles, 1):
|
|
print(f"\n{i}. 测试文章: {article['title']}")
|
|
print(f" 来源: {article['source']}")
|
|
print(f" 分类: {article['category']}")
|
|
|
|
# 转换内容
|
|
result = skill.handle_command('convert', article)
|
|
|
|
if result['success']:
|
|
print(" ✅ 转换成功")
|
|
|
|
# 显示预览
|
|
xhs_content = result.get('xhs_content', '')
|
|
preview = xhs_content[:150] + '...' if len(xhs_content) > 150 else xhs_content
|
|
print(f" 预览: {preview}")
|
|
|
|
# 显示标签
|
|
tags = result.get('recommended_tags', [])
|
|
print(f" 推荐标签: {', '.join(tags[:5])}")
|
|
|
|
# 显示分析
|
|
analysis = result.get('analysis', {})
|
|
print(f" 内容长度: {analysis.get('content_length', 0)} 字符")
|
|
print(f" 检测关键词: {', '.join(analysis.get('detected_keywords', [])[:3])}")
|
|
else:
|
|
print(f" ❌ 转换失败: {result.get('error')}")
|
|
|
|
return True
|
|
|
|
|
|
def test_publish_simulation():
|
|
"""测试发布模拟"""
|
|
print("\n🚀 测试发布模拟功能")
|
|
print("=" * 60)
|
|
|
|
# 注意:这是模拟发布,因为真实CLI不可用
|
|
print("注意:当前使用模拟模式(真实CLI不可用)")
|
|
|
|
test_article = {
|
|
'title': '测试发布:Docker发布新版本',
|
|
'content': 'Docker近日发布了新版本,带来了多项改进。\n\n新特性:\n1. 性能提升30%\n2. 更好的资源管理\n3. 增强的安全性\n4. 改进的CLI工具\n\n建议所有用户升级到最新版本。',
|
|
'source': 'Docker官方博客',
|
|
'url': 'https://docker.com/blog',
|
|
'images': ['docker_logo.png'],
|
|
'publish_date': '2026-03-15',
|
|
'author': 'Docker团队',
|
|
'category': '容器技术'
|
|
}
|
|
|
|
# 使用直接调用接口
|
|
print("\n1. 转换内容...")
|
|
convert_result = convert_to_xiaohongshu_format(test_article)
|
|
|
|
if convert_result['success']:
|
|
print(" ✅ 内容转换成功")
|
|
print(f" 内容长度: {convert_result.get('content_length', 0)} 字符")
|
|
|
|
# 模拟发布
|
|
print("\n2. 模拟发布...")
|
|
publish_result = publish_to_xiaohongshu(test_article)
|
|
|
|
if publish_result['success']:
|
|
print(" ✅ 模拟发布成功")
|
|
print(f" 消息: {publish_result.get('message')}")
|
|
print(f" 模拟URL: {publish_result.get('url')}")
|
|
print(f" 使用标签: {', '.join(publish_result.get('tags_used', [])[:5])}")
|
|
else:
|
|
print(f" ❌ 模拟发布失败: {publish_result.get('error')}")
|
|
else:
|
|
print(f" ❌ 内容转换失败: {convert_result.get('error')}")
|
|
|
|
return True
|
|
|
|
|
|
def test_integration_with_it_news():
|
|
"""测试与IT资讯系统的集成"""
|
|
print("\n🔗 测试与IT资讯系统集成")
|
|
print("=" * 60)
|
|
|
|
# 模拟从IT资讯系统获取的文章
|
|
it_news_articles = [
|
|
{
|
|
'title': 'GitHub Copilot企业版发布',
|
|
'content': 'GitHub宣布推出Copilot企业版,专为大型团队设计。\n\n企业版特性:\n• 团队知识库集成\n• 代码规范强制执行\n• 安全漏洞检测\n• 审计日志记录\n\n定价:每月$39/用户',
|
|
'source': 'GitHub博客',
|
|
'url': 'https://github.blog/copilot-enterprise',
|
|
'category': '开发工具'
|
|
},
|
|
{
|
|
'title': 'VS Code 2.0:全新的编辑器体验',
|
|
'content': 'Visual Studio Code 2.0发布,带来全新界面和性能改进。\n\n主要更新:\n1. 全新的UI设计\n2. 性能提升40%\n3. 内置AI助手\n4. 更好的远程开发支持\n\n下载地址:code.visualstudio.com',
|
|
'source': 'VS Code博客',
|
|
'url': 'https://code.visualstudio.com/blog',
|
|
'category': 'IDE'
|
|
}
|
|
]
|
|
|
|
print("模拟IT资讯自动化流程:")
|
|
print("1. 抓取技术新闻 → 2. 转换为小红书格式 → 3. 发布到小红书")
|
|
print("-" * 40)
|
|
|
|
skill = XiaohongshuSkill()
|
|
skill.initialize()
|
|
|
|
for article in it_news_articles:
|
|
print(f"\n📰 处理文章: {article['title']}")
|
|
|
|
# 补充完整数据
|
|
full_article = {
|
|
**article,
|
|
'images': [],
|
|
'publish_date': '2026-03-15',
|
|
'author': '技术编辑'
|
|
}
|
|
|
|
# 转换
|
|
convert_result = skill.handle_command('convert', full_article)
|
|
|
|
if convert_result['success']:
|
|
print(f" ✅ 转换完成")
|
|
|
|
# 显示内容摘要
|
|
xhs_content = convert_result.get('xhs_content', '')
|
|
lines = xhs_content.split('\n')
|
|
print(f" 标题: {lines[0] if lines else '无标题'}")
|
|
print(f" 来源: {lines[2] if len(lines) > 2 else '无来源'}")
|
|
|
|
# 显示标签
|
|
tags = convert_result.get('recommended_tags', [])
|
|
print(f" 生成标签: {', '.join(tags[:3])}")
|
|
|
|
# 模拟发布
|
|
publish_result = skill.handle_command('publish', full_article)
|
|
if publish_result['success']:
|
|
print(f" 🚀 模拟发布成功")
|
|
else:
|
|
print(f" ⚠️ 模拟发布失败: {publish_result.get('error')}")
|
|
else:
|
|
print(f" ❌ 转换失败: {convert_result.get('error')}")
|
|
|
|
return True
|
|
|
|
|
|
def generate_config_template():
|
|
"""生成配置模板"""
|
|
print("\n⚙️ 生成配置模板")
|
|
print("=" * 60)
|
|
|
|
template = {
|
|
"xiaohongshu": {
|
|
"enabled": True,
|
|
"cli_path": "/path/to/xhs-cli", # 需要修改为实际路径
|
|
"username": "your_xiaohongshu_username", # 需要修改
|
|
"password": "your_xiaohongshu_password", # 需要修改
|
|
"max_images": 9,
|
|
"add_watermark": False,
|
|
"watermark_text": "技术资讯",
|
|
"default_tags": ["#技术资讯", "#科技新闻", "#AI", "#编程", "#开源"],
|
|
"publish_interval": 3600,
|
|
"timeout": 30
|
|
},
|
|
"content": {
|
|
"max_title_length": 30,
|
|
"max_content_length": 1000,
|
|
"auto_generate_tags": True,
|
|
"add_source_info": True,
|
|
"add_emoji": True,
|
|
"max_tags": 10
|
|
},
|
|
"logging": {
|
|
"level": "INFO",
|
|
"file": "xiaohongshu.log"
|
|
}
|
|
}
|
|
|
|
config_path = "xiaohongshu_config_template.json"
|
|
with open(config_path, 'w', encoding='utf-8') as f:
|
|
json.dump(template, f, indent=2, ensure_ascii=False)
|
|
|
|
print(f"✅ 配置模板已生成: {config_path}")
|
|
print("\n⚠️ 使用前需要修改:")
|
|
print(" 1. cli_path: 小红书CLI的实际路径")
|
|
print(" 2. username: 你的小红书账号")
|
|
print(" 3. password: 你的小红书密码")
|
|
|
|
return True
|
|
|
|
|
|
def main():
|
|
"""主测试函数"""
|
|
print("=" * 70)
|
|
print("小红书集成技能完整测试")
|
|
print("=" * 70)
|
|
|
|
tests = [
|
|
("基本功能测试", test_basic_functionality),
|
|
("内容转换测试", test_content_conversion),
|
|
("发布模拟测试", test_publish_simulation),
|
|
("IT资讯集成测试", test_integration_with_it_news),
|
|
("配置模板生成", generate_config_template)
|
|
]
|
|
|
|
results = []
|
|
|
|
for test_name, test_func in tests:
|
|
print(f"\n▶️ 开始测试: {test_name}")
|
|
try:
|
|
success = test_func()
|
|
results.append((test_name, success))
|
|
print(f" {'✅ 通过' if success else '❌ 失败'}")
|
|
except Exception as e:
|
|
print(f" ❌ 测试异常: {e}")
|
|
results.append((test_name, False))
|
|
|
|
# 汇总结果
|
|
print("\n" + "=" * 70)
|
|
print("测试结果汇总")
|
|
print("=" * 70)
|
|
|
|
passed = sum(1 for _, success in results if success)
|
|
total = len(results)
|
|
|
|
for test_name, success in results:
|
|
status = "✅ 通过" if success else "❌ 失败"
|
|
print(f"{status} {test_name}")
|
|
|
|
print(f"\n📊 总计: {passed}/{total} 项测试通过")
|
|
|
|
if passed == total:
|
|
print("\n🎉 所有测试通过!小红书集成技能准备就绪。")
|
|
print("\n下一步:")
|
|
print("1. 获取真实的小红书CLI工具")
|
|
print("2. 修改配置文件中的账号信息")
|
|
print("3. 集成到IT资讯自动化系统")
|
|
else:
|
|
print("\n⚠️ 部分测试失败,需要检查问题。")
|
|
|
|
return passed == total
|
|
|
|
|
|
if __name__ == "__main__":
|
|
success = main()
|
|
sys.exit(0 if success else 1) |