feat: support multiple images and improve error logging for plugin updates
This commit is contained in:
@@ -263,7 +263,13 @@ class OpenWebUICommunityClient:
|
|||||||
|
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
print(f" [DEBUG] Update failed status: {response.status_code}")
|
print(f" [DEBUG] Update failed status: {response.status_code}")
|
||||||
print(f" [DEBUG] Update failed response: {response.text[:500]}")
|
try:
|
||||||
|
error_detail = response.json()
|
||||||
|
print(
|
||||||
|
f" [DEBUG] Update failed error detail: {json.dumps(error_detail, indent=2)}"
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
print(f" [DEBUG] Update failed response text: {response.text[:1000]}")
|
||||||
|
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
return True
|
return True
|
||||||
@@ -467,14 +473,15 @@ class OpenWebUICommunityClient:
|
|||||||
readme_content = self._find_readme(file_path)
|
readme_content = self._find_readme(file_path)
|
||||||
|
|
||||||
# 查找并上传图片
|
# 查找并上传图片
|
||||||
media_urls = None
|
media_urls = []
|
||||||
image_path = self._find_image(file_path)
|
image_paths = self._find_images(file_path)
|
||||||
if image_path:
|
if image_paths:
|
||||||
|
for image_path in image_paths:
|
||||||
print(f" Found image: {os.path.basename(image_path)}")
|
print(f" Found image: {os.path.basename(image_path)}")
|
||||||
image_url = self.upload_image(image_path)
|
image_url = self.upload_image(image_path)
|
||||||
if image_url:
|
if image_url:
|
||||||
print(f" Uploaded image: {image_url}")
|
print(f" Uploaded image: {image_url}")
|
||||||
media_urls = [image_url]
|
media_urls.append(image_url)
|
||||||
|
|
||||||
# 如果没有 post_id,尝试创建新帖子
|
# 如果没有 post_id,尝试创建新帖子
|
||||||
if not post_id:
|
if not post_id:
|
||||||
@@ -582,25 +589,38 @@ class OpenWebUICommunityClient:
|
|||||||
return f.read()
|
return f.read()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def _find_image(self, plugin_file_path: str) -> Optional[str]:
|
def _find_images(self, plugin_file_path: str) -> List[str]:
|
||||||
"""
|
"""
|
||||||
查找插件对应的图片文件
|
查找插件对应的图片文件
|
||||||
图片名称需要和插件文件名一致(不含扩展名)
|
支持两种模式:
|
||||||
|
1. 单图模式:图片名称和插件文件名一致(不含扩展名),如 export_to_word.png
|
||||||
例如:
|
2. 多图模式:图片名称为 插件名_1.png, 插件名_2.png 等
|
||||||
export_to_word.py -> export_to_word.png / export_to_word.jpg
|
|
||||||
"""
|
"""
|
||||||
plugin_dir = os.path.dirname(plugin_file_path)
|
plugin_dir = os.path.dirname(plugin_file_path)
|
||||||
plugin_name = os.path.splitext(os.path.basename(plugin_file_path))[0]
|
plugin_name = os.path.splitext(os.path.basename(plugin_file_path))[0]
|
||||||
|
|
||||||
# 支持的图片格式
|
# 支持的图片格式
|
||||||
image_extensions = [".png", ".jpg", ".jpeg", ".gif", ".webp"]
|
image_extensions = [".png", ".jpg", ".jpeg", ".gif", ".webp"]
|
||||||
|
found_images = []
|
||||||
|
|
||||||
|
# 1. 检查单图模式
|
||||||
for ext in image_extensions:
|
for ext in image_extensions:
|
||||||
image_path = os.path.join(plugin_dir, plugin_name + ext)
|
image_path = os.path.join(plugin_dir, plugin_name + ext)
|
||||||
if os.path.exists(image_path):
|
if os.path.exists(image_path):
|
||||||
return image_path
|
found_images.append(image_path)
|
||||||
return None
|
break # 如果有单图,优先使用单图
|
||||||
|
|
||||||
|
# 2. 检查多图模式 (plugin_name_1, plugin_name_2, ...)
|
||||||
|
# 如果已经找到了单图,就不再寻找多图,除非单图不存在
|
||||||
|
if not found_images:
|
||||||
|
for i in range(1, 11): # 最多支持 10 张
|
||||||
|
for ext in image_extensions:
|
||||||
|
image_path = os.path.join(plugin_dir, f"{plugin_name}_{i}{ext}")
|
||||||
|
if os.path.exists(image_path):
|
||||||
|
found_images.append(image_path)
|
||||||
|
break
|
||||||
|
|
||||||
|
return found_images
|
||||||
|
|
||||||
def _inject_id_to_file(self, file_path: str, post_id: str) -> bool:
|
def _inject_id_to_file(self, file_path: str, post_id: str) -> bool:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user