"""
快速发布脚本
简化命令行调用，避免 JSON 转义问题
"""
import sys
import json
import asyncio
from xhs_publish import XHSPublishService


def load_cookies_from_file(filepath='cookies.json'):
    """从文件加载 Cookie"""
    try:
        with open(filepath, 'r', encoding='utf-8') as f:
            return json.load(f)
    except FileNotFoundError:
        print(f"❌ Cookie 文件不存在: {filepath}")
        return None
    except json.JSONDecodeError as e:
        print(f"❌ Cookie 文件格式错误: {e}")
        return None


async def quick_publish(
    title: str,
    content: str,
    images: list = None,
    tags: list = None,
    cookies_file: str = 'cookies.json'
):
    """
    快速发布
    
    Args:
        title: 标题
        content: 内容
        images: 图片列表（支持本地路径和网络 URL）
        tags: 标签列表
        cookies_file: Cookie 文件路径
    """
    # 加载 Cookie
    cookies = load_cookies_from_file(cookies_file)
    if not cookies:
        return {
            "success": False,
            "error": "无法加载 Cookie"
        }
    
    # 创建发布服务
    publisher = XHSPublishService(cookies)
    
    # 执行发布
    result = await publisher.publish(
        title=title,
        content=content,
        images=images,
        tags=tags
    )
    
    return result


def main():
    """
    命令行入口
    
    使用方式:
    python quick_publish.py "标题" "内容" "图片1,图片2,图片3" "标签1,标签2"
    python quick_publish.py "标题" "内容" "" "标签1,标签2"  # 不使用图片
    """
    if len(sys.argv) < 3:
        print("使用方式:")
        print('  python quick_publish.py "标题" "内容" ["图片1,图片2"] ["标签1,标签2"]')
        print()
        print("示例:")
        print('  python quick_publish.py "测试笔记" "这是内容" "https://picsum.photos/800/600,D:/test.jpg" "测试,自动化"')
        sys.exit(1)
    
    # 解析参数
    title = sys.argv[1]
    content = sys.argv[2]
    
    # 解析图片（逗号分隔）
    images = []
    if len(sys.argv) > 3 and sys.argv[3].strip():
        images = [img.strip() for img in sys.argv[3].split(',') if img.strip()]
    
    # 解析标签（逗号分隔）
    tags = []
    if len(sys.argv) > 4 and sys.argv[4].strip():
        tags = [tag.strip() for tag in sys.argv[4].split(',') if tag.strip()]
    
    # Cookie 文件路径（可选）
    cookies_file = sys.argv[5] if len(sys.argv) > 5 else 'cookies.json'
    
    print("="*50)
    print("快速发布小红书笔记")
    print("="*50)
    print(f"标题: {title}")
    print(f"内容: {content[:100]}{'...' if len(content) > 100 else ''}")
    print(f"图片: {len(images)} 张")
    if images:
        for i, img in enumerate(images, 1):
            print(f"  {i}. {img}")
    print(f"标签: {tags}")
    print(f"Cookie: {cookies_file}")
    print("="*50)
    print()
    
    # 执行发布
    result = asyncio.run(quick_publish(
        title=title,
        content=content,
        images=images if images else None,
        tags=tags if tags else None,
        cookies_file=cookies_file
    ))
    
    # 输出结果
    print()
    print("="*50)
    print("发布结果:")
    print(json.dumps(result, ensure_ascii=False, indent=2))
    print("="*50)
    
    if result.get('success'):
        print("\n✅ 发布成功！")
        if 'url' in result:
            print(f"📎 笔记链接: {result['url']}")
    else:
        print(f"\n❌ 发布失败: {result.get('error')}")
        sys.exit(1)


if __name__ == "__main__":
    main()
