浏览代码

add AI api

Sergiu 9 月之前
父节点
当前提交
6528a56da4

+ 1 - 1
03_blender/sd_blender/zs_ai_post_3d_render_script.py

@@ -6,7 +6,7 @@ import json
 import requests
 import base64
 
-from Deadline.Scripting import *  # Import Deadline script utilities
+from Deadline.Scripting import *  # type: ignore # Import Deadline script utilities
 
 api_path = "https://canvas-api-test.anvil.app/_/api"
 image_path = (

+ 1 - 1
03_blender/sd_blender/zs_ai_pre_3d_render_script.py

@@ -4,7 +4,7 @@ from __future__ import (
 import sys
 import json
 import requests
-from Deadline.Scripting import *  # Import Deadline script utilities
+from Deadline.Scripting import *  # type: ignore # Import Deadline script utilities
 
 api_path = "https://canvas-api-test.anvil.app/_/api"
 

+ 2 - 1
04_stable_diffusion/ai_scene_info.json

@@ -13,5 +13,6 @@
         }
     },
     "project_id": "15a314a1-8ba1-4e0e-ad0c-f605b06f89f8",
-    "user_id": "1125441"
+    "user_id": "1125441",
+    "rendered_image_id": "00bb64d51647486392fabc361ec69b7d"
 }

+ 83 - 4
04_stable_diffusion/sd_comfy_api_v2.py

@@ -11,9 +11,72 @@ import io
 import random
 import sys
 import base64
+import requests
 
 server_address = "127.0.0.1:8188"
 client_id = str(uuid.uuid4())
+api_path = "https://canvas-api-test.anvil.app/_/api"
+
+image_path = "D:/Temp/ComfyUI_windows_portable_nvidia/ComfyUI_windows_portable/ComfyUI/output/"
+
+def update_ai_image_task_status(row_id, new_status):
+    # Define the URL for the API endpoint
+    url = "{}/tasks/ai-image/update-status".format(api_path)
+
+    # Create a JSON payload
+    payload = {"row_id": row_id, "new_status": new_status}
+
+    # Make a POST request to the API endpoint with the JSON payload
+    response = requests.post(url, json=payload)
+
+    # Handle the response
+    if response.status_code == 200:
+        print("Status update was successful")
+        return response.json()
+    else:
+        print("Status update failed")
+        print("Status code:", response.status_code)
+        print("Response:", response.text)
+        return None
+
+def get_ai_image_task(row_id):
+    # Define the URL for the API endpoint
+    url = "{}/tasks/ai-image/{}".format(api_path, row_id)
+    print("Constructed URL:", url)  # Print the URL for debugging
+
+    # Make a GET request to the API endpoint
+    response = requests.get(url)
+
+    # Handle the response
+    if response.status_code == 200:
+        print("Request was successful")
+        return response.json()
+    else:
+        print("Request failed")
+        print("Status code:", response.status_code)
+        print("Response:", response.text)
+        return None
+
+def find_image_and_convert_to_base64(image_path):
+    with open(image_path, "rb") as image_file:
+        image_data = image_file.read()
+        image_base64 = base64.b64encode(image_data).decode("utf-8")
+        return image_base64
+
+def upload_image_to_anvil(row_id, image_base64):
+    url = "{}/tasks/ai-image/upload-image".format(api_path)
+    payload = {"row_id": row_id, "image_base64": image_base64}
+    response = requests.post(url, json=payload)
+    if response.status_code == 200:
+        print("Image uploaded successfully")
+        update_ai_image_task_status(row_id=row_id, new_status=3)
+        return response.json()
+
+    else:
+        print("Image upload failed")
+        print("Status code:", response.status_code)
+        print("Response:", response.text)
+        return None
 
 
 def load_debug_ai_scene_info():
@@ -151,7 +214,11 @@ def get_images(ws, prompt):
 
     return output_images
 
-def main():
+def main(*args):
+
+    deadlinePlugin = args[0]
+    job = deadlinePlugin.GetJob()
+    row_id = job.JobExtraInfo0
 
     argv = sys.argv
 
@@ -166,20 +233,32 @@ def main():
     except Exception as e:
         print("Error:", e)
 
+    
+
     # ai_scene_info = load_debug_ai_scene_info()
 
     prompt = get_prompt(ai_scene_info)    
 
     ws = websocket.WebSocket()
     ws.connect("ws://{}/ws?clientId={}".format(server_address, client_id))
-    images = get_images(ws, prompt)
 
-    prompt_id = queue_prompt(prompt)['prompt_id']
+    update_ai_image_task_status(row_id, 2)
+
+
+    images = get_images(ws, prompt)        
 
     for node_id in images:
         for image_info in images[node_id]:
             if image_info['type'] == 'output':
-                print("Upload image")
+                response = get_ai_image_task(row_id)
+                data = json.loads(response["data"])
+
+                project_id = data["project_id"]
+
+                image_base64 = find_image_and_convert_to_base64(
+                    image_path + "{}/{}".format(project_id,image_info['filename'])
+    )
+                upload_image_to_anvil(row_id, image_base64)
                 
             
 

+ 2 - 4
04_stable_diffusion/zs_ai_post_ai_render_script.py

@@ -6,12 +6,10 @@ import json
 import requests
 import base64
 
-from Deadline.Scripting import *  # Import Deadline script utilities
+from Deadline.Scripting import *  # type: ignore # Import Deadline script utilities
 
 api_path = "https://canvas-api-test.anvil.app/_/api"
-image_path = (
-    "D:/Git/ap-canvas-creation-module/03_blender/sd_blender/sample_scene/Renders/"
-)
+
 
 
 # def update_3d_image_task_status(row_id, new_status):