# import requests

# url = "http://localhost:8000/auto_post/xiaohongshu/post"

# data = {
#     "image_paths": ["D:/桌面/研究生/组会/rednote/data/flower.jpg", "D:/桌面/研究生/组会/rednote/data/test_img.png"],
#     "title": "测试标题",
#     "description": "测试描述",
#     "topics": ["测试话题"],
#     "schedule_time": "2025-07-09 10:26"
# }

# response = requests.post(url, json=data)
# print(response.json())






# curl -X POST "http://localhost:5000/xiaohongshu/post" \
# -H "Content-Type: application/json" \
# -d '{
#     "image_paths": ["D:/桌面/研究生/组会/rednote/data/flower.jpg", "D:/桌面/研究生/组会/rednote/data/test_img.png"],
#     "title": "测试标题",
#     "description": "测试描述",
#     "topics": ["测试话题"],
#     "schedule_time": "2025-07-09 10:26"
# }'


# import requests

# def download_video(url, filename):
#     try:
#         # 发起请求，设置stream=True以流式下载
#         response = requests.get(url, stream=True)
#         response.raise_for_status()  # 检查请求是否成功

#         # 以二进制写入模式打开文件
#         with open(filename, 'wb') as f:
#             # 逐块写入数据，chunk_size可调整
#             for chunk in response.iter_content(chunk_size=8192):
#                 if chunk:
#                     f.write(chunk)
#         print(f"视频已成功下载到：{filename}")
#     except Exception as e:
#         print(f"下载过程中出现错误：{e}")

# # 使用示例
# video_url = "https://storage.googleapis.com/falserverless/example_outputs/wan-25-i2v-output.mp4"  # 请替换为实际视频直链
# download_video(video_url, "my_video.mp4")

# import os
# import fal_client
# from pathlib import Path
# from dotenv import load_dotenv

# env_path = Path("./backend") / ".env"
# load_dotenv(dotenv_path=env_path)

# fal_client.fal_key = os.getenv('FAL_KEY2')
# def on_queue_update(update):
#     if isinstance(update, fal_client.InProgress):
#         for log in update.logs:
#            print(log["message"])


# url_one = fal_client.upload_file("003.jpg")
# url_two = fal_client.upload_file("002.jpg")

# get_cloth_prompt = "Remove the people in the image, but keep all the clothes worn by the people in the image, and display all the extracted clothes on a transparent human-shaped stand."
# swap_cloth_prompt = "去除这个女人身上的所有衣服，然后把第二张图片中的衣服穿到这个女人身上，保持真实的光影、阴影和布料垂感。在无缝融合新衣物的同时，保持人物肤色、样貌的一致性；保持新衣物颜色、细节、设计和版型的一致性；最终效果应看起来像人物实际上正在穿这件新衣服。这个女人行走在森林中。"


# for i in range(5):
#     result = fal_client.subscribe(
#         "fal-ai/nano-banana/edit",
#         arguments={
#             "prompt": get_cloth_prompt,
#             "image_urls": [url_one]
#         },
#         with_logs=True,
#         on_queue_update=on_queue_update,
#     )
#     print(f'{i}  -  ',result["images"][0]["url"])







from openai import OpenAI
import os
import io
import base64
from PIL import Image
from io import BytesIO

def save_base64_to_image_pillow(base64_string, output_filename):
    """
    使用Pillow库将Base64字符串保存为图片文件

    Args:
        base64_string (str): Base64编码的图片字符串，可包含或不包含Data URL前缀。
        output_filename (str): 要保存的图片文件名，如 'output.png'。
    """
    # 可选：如果Base64字符串包含Data URL前缀（如"data:image/png;base64,"），需要去除
    if ',' in base64_string:
        base64_string = base64_string.split(',')[1]

    # 1. 将Base64字符串解码为二进制数据
    image_data = base64.b64decode(base64_string)
    
    # 2. 将二进制数据转换为图像对象
    img = Image.open(BytesIO(image_data))
    
    # 3. 保存图像到文件
    img.save(output_filename)
    print(f"图片已保存为: {output_filename}")

def encode_image(image_path: str) -> str:
    """
    将图片文件转换为base64编码
    
    Args:
        image_path: 图片文件路径
        
    Returns:
        str: base64编码的图片数据
        
    Raises:
        FileNotFoundError: 图片文件不存在
        IOError: 读取或处理图片失败
    """
    if not os.path.exists(image_path):
        raise FileNotFoundError(f"Image file not found: {image_path}")
        
    with Image.open(image_path) as img:
        buffered = io.BytesIO()
        img.save(buffered, format="JPEG")
        return base64.b64encode(buffered.getvalue()).decode("utf-8")


client = OpenAI(
    api_key="sk-qnsfJw0vsAitlnrXcOeBYrLbTv9LXfsN1m3jIUfMJagan5IR",
    base_url="https://api.openaius.com/v1"
)

user_prompt = "融合两张图片内容"
image_url1 = encode_image("002.jpg")
image_url2 = encode_image("003.jpg")

print(len(image_url1))
print(len(image_url2))

response = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=[
        {
            "role": "system",
            "content": "根据用户要求进行图片生成"
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": user_prompt
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": image_url1
                    }
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": image_url2
                    }
                }
            ]
        }
    ]
)


# 写入单行字符串
text = str(response)
with open("output.txt", "w", encoding="utf-8") as file:
    file.write(text)


result = response.choices[0].message.content

save_base64_to_image_pillow(result, "output.png")

print(result)


