73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
import requests
|
||
import time
|
||
import json
|
||
import os
|
||
import uuid
|
||
from urllib.parse import urlparse
|
||
|
||
def get_file_extension(url_or_filename):
|
||
"""从 URL 或文件名中提取扩展名(如 .jpg、.png)"""
|
||
# 处理 URL 情况(如 https://example.com/image.jpg?width=200)
|
||
if url_or_filename.startswith(('http://', 'https://')):
|
||
parsed = urlparse(url_or_filename)
|
||
path = parsed.path
|
||
else:
|
||
path = url_or_filename
|
||
|
||
# 提取扩展名(转换为小写,去掉问号后的参数)
|
||
ext = os.path.splitext(path)[1].lower().split('?')[0]
|
||
return ext if ext else '.png' # 默认 PNG(如果无法提取)
|
||
|
||
def RequestImgAndSave(image_url):
|
||
response = requests.get(image_url, stream=True)
|
||
response.raise_for_status()
|
||
|
||
# 获取原始图片格式
|
||
ext = get_file_extension(image_url)
|
||
filename = f"{uuid.uuid4()}{ext}"
|
||
save_path = os.path.join(COMFYUI_INPUT_DIR, filename)
|
||
|
||
with open(save_path, "wb") as f:
|
||
for chunk in response.iter_content(1024):
|
||
f.write(chunk)
|
||
|
||
# 1. 提交任务
|
||
|
||
#RequestImgAndSave("https://example.com/image.jpg")
|
||
|
||
with open('/home/szlc/code/ComfyUI/change_cloth/change_bak_api.json', 'r', encoding='utf-8') as file:
|
||
prompt_text = file.read()
|
||
|
||
prompt = json.loads(prompt_text)
|
||
#set the text prompt for our positive CLIPTextEncode
|
||
# prompt["6"]["inputs"]["text"] = "one girl"
|
||
|
||
#set the seed for our KSampler node
|
||
# prompt["3"]["inputs"]["seed"] = 5
|
||
|
||
# prompt["9"]["inputs"]["image"] = "cloth_long.png"
|
||
|
||
prompt["102"]["inputs"]["filename_prefix"] = "xiangsilian"
|
||
|
||
p = {"prompt": prompt}
|
||
|
||
data = json.dumps(p).encode('utf-8')
|
||
|
||
response = requests.post("http://localhost:8188/prompt", data=data)
|
||
prompt_id = response.json()["prompt_id"]
|
||
|
||
|
||
|
||
# 2. 轮询队列,直到任务完成
|
||
while True:
|
||
queue = requests.get("http://localhost:8188/queue").json()
|
||
print(queue)
|
||
if not queue["queue_running"] and not queue["queue_pending"]:
|
||
break # 队列为空,任务已完成
|
||
time.sleep(0.5) # 避免频繁请求
|
||
|
||
# 3. 从历史记录中获取结果
|
||
history = requests.get("http://localhost:8188/history").json()
|
||
print("History:", history)
|
||
outputs = history[prompt_id]["outputs"]
|
||
print("Generated outputs:", outputs) |