Rename multimodalart-app.py to app.py
Browse files- multimodalart-app.py → app.py +35 -42
multimodalart-app.py → app.py
RENAMED
@@ -76,37 +76,28 @@ def get_json_data(url):
|
|
76 |
gr.Warning(f"Error fetching data from Civitai API for {url_split[4]}: {e}")
|
77 |
return None
|
78 |
|
79 |
-
def check_nsfw(json_data: Dict[str, Any]
|
80 |
-
|
81 |
-
|
|
|
|
|
|
|
82 |
|
83 |
-
# Overall model boolean flag - highest priority
|
84 |
if json_data.get("nsfw", False):
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
# nsfwLevel definitions: None (1), Mild (2), Mature (4), Adult (5), X (8), R (16), XXX (32)
|
91 |
-
model_nsfw_level = json_data.get("nsfwLevel", 0)
|
92 |
-
if model_nsfw_level > 5: # Anything above "Adult"
|
93 |
-
print(f"Model's overall nsfwLevel ({model_nsfw_level}) is > 5. Blocking.")
|
94 |
-
gr.Info(f"Reason: Model's overall NSFW Level ({model_nsfw_level}) is above the allowed threshold (5).")
|
95 |
-
return False # Unsafe
|
96 |
-
|
97 |
-
# If uploader is trusted and the above checks passed, they bypass further version/image checks.
|
98 |
-
if profile and profile.username in TRUSTED_UPLOADERS:
|
99 |
-
print(f"User {profile.username} is trusted. Model 'nsfw' is false and overall nsfwLevel ({model_nsfw_level}) is <= 5. Allowing.")
|
100 |
-
return True
|
101 |
-
|
102 |
-
# For non-trusted users, check nsfwLevel of model versions and individual images/videos
|
103 |
for model_version in json_data.get("modelVersions", []):
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
|
|
|
|
110 |
|
111 |
|
112 |
def get_prompts_from_image(image_id_str: str):
|
@@ -288,22 +279,24 @@ def download_file_with_auth(url, filename, folder="."):
|
|
288 |
def process_url(url, profile, do_download=True, folder=".", hunyuan_type: Optional[str] = None):
|
289 |
json_data = get_json_data(url)
|
290 |
if json_data:
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
|
|
|
|
|
|
302 |
else:
|
303 |
-
|
304 |
-
raise gr.Error("This model has content tagged as unsafe by CivitAI or exceeds NSFW level limits.")
|
305 |
else:
|
306 |
-
raise gr.Error("Failed to fetch model data from CivitAI API. Please check the URL and
|
307 |
|
308 |
|
309 |
def create_readme(info: Dict[str, Any], downloaded_files: Dict[str, Any], user_repo_id: str, link_civit: bool = False, is_author: bool = True, folder: str = "."):
|
|
|
76 |
gr.Warning(f"Error fetching data from Civitai API for {url_split[4]}: {e}")
|
77 |
return None
|
78 |
|
79 |
+
def check_nsfw(json_data: Dict[str, Any]) -> bool:
|
80 |
+
"""
|
81 |
+
Returns True if the model or any of its versions/images are NSFW.
|
82 |
+
We no longer block NSFW, only tag it.
|
83 |
+
"""
|
84 |
+
nsfw_flag = False
|
85 |
|
|
|
86 |
if json_data.get("nsfw", False):
|
87 |
+
nsfw_flag = True
|
88 |
+
|
89 |
+
if json_data.get("nsfwLevel", 0) > 0:
|
90 |
+
nsfw_flag = True
|
91 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
for model_version in json_data.get("modelVersions", []):
|
93 |
+
if model_version.get("nsfwLevel", 0) > 0:
|
94 |
+
nsfw_flag = True
|
95 |
+
for image_obj in model_version.get("images", []):
|
96 |
+
if image_obj.get("nsfwLevel", 0) > 0:
|
97 |
+
nsfw_flag = True
|
98 |
+
|
99 |
+
return nsfw_flag
|
100 |
+
|
101 |
|
102 |
|
103 |
def get_prompts_from_image(image_id_str: str):
|
|
|
279 |
def process_url(url, profile, do_download=True, folder=".", hunyuan_type: Optional[str] = None):
|
280 |
json_data = get_json_data(url)
|
281 |
if json_data:
|
282 |
+
# Always extract info, even if NSFW
|
283 |
+
info = extract_info(json_data, hunyuan_type=hunyuan_type)
|
284 |
+
if info:
|
285 |
+
# Detect NSFW but do not block
|
286 |
+
nsfw_flag = check_nsfw(json_data)
|
287 |
+
info["nsfw_flag"] = nsfw_flag
|
288 |
+
|
289 |
+
downloaded_files_summary = {}
|
290 |
+
if do_download:
|
291 |
+
gr.Info(f"Downloading files for {info['name']}...")
|
292 |
+
downloaded_files_summary = download_files(info, folder)
|
293 |
+
gr.Info(f"Finished downloading files for {info['name']}.")
|
294 |
+
|
295 |
+
return info, downloaded_files_summary
|
296 |
else:
|
297 |
+
raise gr.Error("LoRA extraction failed. The base model might not be supported, or it's not a LoRA model, or no suitable files found in the version.")
|
|
|
298 |
else:
|
299 |
+
raise gr.Error("Failed to fetch model data from CivitAI API. Please check the URL and CivitAI's status.")
|
300 |
|
301 |
|
302 |
def create_readme(info: Dict[str, Any], downloaded_files: Dict[str, Any], user_repo_id: str, link_civit: bool = False, is_author: bool = True, folder: str = "."):
|