Spaces:
Sleeping
Sleeping
import gradio as gr | |
import spaces | |
import os | |
import re | |
os.environ["GRADIO_ANALYTICS_ENABLED"] = "False" | |
def is_repo_exists(repo_id): | |
from huggingface_hub import HfApi | |
api = HfApi() | |
try: | |
if api.repo_exists(repo_id=repo_id): return True | |
else: return False | |
except Exception as e: | |
print(f"Error: Failed to connect {repo_id}. ") | |
print(e) | |
return True # for safe | |
all_repos = [] | |
def extract_hf_reponame(line: str): | |
d = {"line": line, "repos": [], "exist": True, "unique": True} | |
if line.strip().startswith("#"): return d | |
m = re.findall(r'[/,\s\"\']?([^/,\s\"\']+/[^/,\s\"\']+)[/,\s\"\']?', line, re.DOTALL) | |
for s in m: | |
if s in all_repos: d["unique"] = False | |
if not is_repo_exists(s): d["exist"] = False | |
d["repos"].append(s) | |
all_repos.append(s) | |
return d | |
def extract_hf_reponames(repos: str, progress=gr.Progress(track_tqdm=True)): | |
from tqdm import tqdm | |
global all_repos | |
all_repos = [] | |
repojson = [] | |
for line in tqdm(repos.splitlines(), desc="[Processing]"): | |
repojson.append(extract_hf_reponame(line)) | |
output = "" | |
error_md = "## Error:\n" | |
for d in repojson: | |
if not d["exist"] or not ["unique"]: output += "# " | |
output += d["line"].removesuffix("\n") | |
if not d["exist"]: | |
output += " # repo doesn't exist." | |
error_md += f"- Repo doesn't exist in '{d['line']}'\n" | |
if not d["unique"]: | |
output += " # duplicate elements." | |
error_md += f"- Duplicate elements in '{d['line']}'\n" | |
output += "\n" | |
return output, error_md | |
css = """""" | |
with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", fill_width=True, css=css) as demo: | |
with gr.Column(): | |
repos_text = gr.Textbox(label="Paste model list", value="", lines=8) | |
#repos_code = gr.Code(label="Paste model list in python code", language="python", value="", lines=8, interactive=True) | |
run_button = gr.Button(value="Submit") | |
#debug_json = gr.JSON(value=[{}]) | |
error_md = gr.Markdown() | |
output_code = gr.Code(label="Output", language="python", value="", lines=8, interactive=True) | |
gr.DuplicateButton(value="Duplicate Space") | |
gr.on( | |
triggers=[run_button.click], | |
fn=extract_hf_reponames, | |
inputs=[repos_text], | |
outputs=[output_code, error_md], | |
) | |
demo.queue().launch() | |