#!/usr/bin/env python3
"""
完整测试发布宠物内容 - 通过 API
"""
import requests
import json
def test_publish_pet_content():
"""测试发布宠物内容"""
print("="*60)
print("测试发布宠物内容 - 通过 API")
print("="*60)
base_url = "http://localhost:18060"
# 1. 检查服务状态
print("\n1. 检查服务状态...")
try:
response = requests.get(f"{base_url}/health", timeout=5)
if response.status_code == 200:
print(" ✓ 服务正常运行")
else:
print(f" ✗ 服务异常: {response.status_code}")
return
except Exception as e:
print(f" ✗ 无法连接到服务: {e}")
print(" 请确保服务已启动: python main.py")
return
# 2. 检查登录状态
print("\n2. 检查登录状态...")
try:
response = requests.get(f"{base_url}/api/v1/login/status", timeout=10)
if response.status_code == 200:
result = response.json()
is_logged_in = result.get('logged_in', False)
print(f" 登录状态: {'已登录 ✓' if is_logged_in else '未登录 ✗'}")
if not is_logged_in:
print("\n ⚠ 需要先登录才能发布内容")
print(" 请运行: python test_login.py")
return
else:
print(f" ✗ 检查失败: {response.status_code}")
return
except Exception as e:
print(f" ✗ 错误: {e}")
return
# 3. 准备发布内容
print("\n3. 准备发布内容...")
publish_data = {
"title": "我家的小猫咪太可爱了!🐱",
"content": """今天给我家的小橘猫拍了几张照片,真的太萌了!
看它这个小眼神,是不是超级可爱?每天回家看到它就觉得一天的疲惫都消失了。
养猫的快乐,只有养过的人才懂~""",
"images": [
# 注意:这里需要实际的图片路径
# 示例:"/Users/xxx/Pictures/cat.jpg"
# 由于没有实际图片,这里留空,需要手动提供
],
"tags": ["宠物", "猫咪", "萌宠", "橘猫"]
}
print(f" 标题: {publish_data['title']}")
print(f" 内容: {publish_data['content'][:50]}...")
print(f" 标签: {', '.join(publish_data['tags'])}")
print(f" 图片: {len(publish_data['images'])} 张")
if not publish_data['images']:
print("\n ⚠ 警告:没有提供图片路径")
print(" 小红书发布图文内容需要至少1张图片")
print("\n 请修改脚本,添加实际的图片路径,例如:")
print(' "images": ["/Users/xxx/Pictures/cat.jpg"]')
print("\n 或者使用手动测试脚本:")
print(" python simple_publish_test.py")
return
# 4. 调用发布 API
print("\n4. 调用发布 API...")
print(" ⚠ 注意:发布操作可能需要1-2分钟")
try:
response = requests.post(
f"{base_url}/api/v1/publish",
json=publish_data,
timeout=180 # 3分钟超时
)
if response.status_code == 200:
result = response.json()
if result.get('success'):
print(" ✅ 发布成功!")
print("\n 请到小红书 APP 或网页版查看发布的内容")
else:
print(" ✗ 发布失败")
print(f" 响应: {result}")
else:
print(f" ✗ API 调用失败: {response.status_code}")
try:
error_detail = response.json()
print(f" 错误信息: {error_detail}")
except:
print(f" 错误信息: {response.text}")
except requests.exceptions.Timeout:
print(" ⚠ 请求超时")
print(" 发布操作可能仍在进行中,请稍后检查小红书")
except Exception as e:
print(f" ✗ 错误: {e}")
print("\n" + "="*60)
if __name__ == "__main__":
test_publish_pet_content()