| import os |
| import sys |
| import uuid |
| import gradio as gr |
| from pathlib import Path |
| from huggingface_hub import (create_repo,get_full_repo_name,upload_file,CommitOperationAdd,HfApi) |
| uid = uuid.uuid4() |
|
|
| |
| o=os.environ['P'] |
| model_list = [ |
| "", |
| "CompVis/stable-diffusion-v1-4", |
| "runwayml/stable-diffusion-v1-5", |
| "prompthero/openjourney", |
| "stabilityai/stable-diffusion-2-1", |
| "stabilityai/stable-diffusion-2-1-base", |
| "andite/anything-v4.0", |
| "Linaqruf/anything-v3.0", |
| "eimiss/EimisAnimeDiffusion_1.0v", |
| "nitrosocke/Nitro-Diffusion", |
| "wavymulder/portraitplus", |
| "22h/vintedois-diffusion-v0-1", |
| "dreamlike-art/dreamlike-photoreal-2.0", |
| "dreamlike-art/dreamlike-diffusion-1.0", |
| "wavymulder/Analog-Diffusion", |
| "nitrosocke/redshift-diffusion", |
| "claudfuen/photorealistic-fuen-v1", |
| "prompthero/openjourney-v2", |
| "johnslegers/epic-diffusion", |
| "nitrosocke/Arcane-Diffusion", |
| "darkstorm2150/Protogen_x5.8_Official_Release", |
|
|
| ] |
|
|
| types=[ |
| "A", |
| "B", |
| "C", |
| "D", |
| "R1", |
| "Auto Image Space" |
| ] |
| |
| def build_space(token,t_name,s_type,m_type=None,r_type=None,d_app=None,d_css=None): |
| uid = uuid.uuid4() |
| model_id=t_name |
| if token==None or token=="": |
| token = token_self |
| else: |
| token = token |
| pass |
| if r_type != "" or r_type != None: |
| m_type=r_type |
| api = HfApi(token=token) |
| repo_name = get_full_repo_name(model_id=model_id, token=token) |
| try: |
| repo_url = api.create_repo( |
| repo_id=model_id, |
| repo_type="space", |
| space_sdk="gradio", |
| private=True, |
| ) |
| print(f"{repo_name} built") |
| except Exception as e: |
| return gr.HTML.update(f"""{str(e)}""") |
|
|
| try: |
| api_url = f'https://huggingface.co/api/spaces/{model_id}' |
| if s_type == "A": |
| with open("a.py", "r") as f: |
| app = f.read() |
| app = app.replace("$name2", m_type) |
| app = app.replace("$app2", d_app) |
| app = app.replace("$css2", d_css) |
| |
| with open(f"{uid}at.py", "w") as f: |
| f.write(app) |
| |
| api.upload_file( |
| path_or_fileobj=f"{uid}at.py", |
| path_in_repo="app.py", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}at.py") |
| elif s_type == "B": |
| with open("b.py", "r") as f: |
| app = f.read() |
| app = app.replace("$name2", m_type) |
| app = app.replace("$app2", d_app) |
| app = app.replace("$css2", d_css) |
| |
| with open(f"{uid}bt.py", "w") as f: |
| f.write(app) |
| |
| api.upload_file( |
| path_or_fileobj=f"{uid}bt.py", |
| path_in_repo="app.py", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}bt.py") |
| elif s_type == "C": |
| with open("c.py", "r") as f: |
| app = f.read() |
| app = app.replace("$name2", m_type) |
| app = app.replace("$app2", d_app) |
| app = app.replace("$css2", d_css) |
| |
| with open(f"{uid}ct.py", "w") as f: |
| f.write(app) |
| |
| api.upload_file( |
| path_or_fileobj=f"{uid}ct.py", |
| path_in_repo="app.py", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}ct.py") |
|
|
| with open("css.css", "r") as f: |
| app = f.read() |
| with open(f"{uid}css.css", "w") as f: |
| f.write(app) |
| |
| api.upload_file( |
| path_or_fileobj=f"{uid}css.css", |
| path_in_repo="css.css", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}css.css") |
|
|
| elif s_type == "D": |
| with open("d.py", "r") as f: |
| app = f.read() |
| app = app.replace("$name2", m_type) |
| app = app.replace("$app2", d_app) |
| app = app.replace("$css2", d_css) |
| with open(f"{uid}ct.py", "w") as f: |
| f.write(app) |
| api.upload_file( |
| path_or_fileobj=f"{uid}ct.py", |
| path_in_repo="app.py", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}ct.py") |
| with open("css.css", "r") as f: |
| app = f.read() |
| with open(f"{uid}css.css", "w") as f: |
| f.write(app) |
| api.upload_file( |
| path_or_fileobj=f"{uid}css.css", |
| path_in_repo="css.css", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}css.css") |
| with open("readme.bac", "r") as f: |
| app = f.read() |
| with open(f"{uid}read.txt", "w") as f: |
| f.write(app) |
| api.upload_file( |
| path_or_fileobj=f"{uid}read.txt", |
| path_in_repo="README.md", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}read.txt") |
|
|
| elif s_type == "Auto Image Space": |
| with open("auto-image-space.py", "r") as f: |
| app = f.read() |
| app = app.replace("$name2", m_type) |
| app = app.replace("$app2", d_app) |
| app = app.replace("$css2", d_css) |
| with open(f"{uid}ct.py", "w") as f: |
| f.write(app) |
| api.upload_file( |
| path_or_fileobj=f"{uid}ct.py", |
| path_in_repo="app.py", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}ct.py") |
| with open("css.css", "r") as f: |
| app = f.read() |
| app.replace("Gray","Yellow") |
| with open(f"{uid}css.css", "w") as f: |
| f.write(app) |
| api.upload_file( |
| path_or_fileobj=f"{uid}css.css", |
| path_in_repo="css.css", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}css.css") |
| with open("readme.bac", "r") as f: |
| app = f.read() |
| with open(f"{uid}read.txt", "w") as f: |
| f.write(app) |
| api.upload_file( |
| path_or_fileobj=f"{uid}read.txt", |
| path_in_repo="README.md", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}read.txt") |
| |
| elif s_type == "R1": |
| with open("r1.py", "r") as f: |
| app = f.read() |
| app = app.replace("$name2", r_type) |
| app = app.replace("$app2", d_app) |
| app = app.replace("$css2", d_css) |
| |
| with open(f"{uid}r1t.py", "w") as f: |
| f.write(app) |
| |
| api.upload_file( |
| path_or_fileobj=f"{uid}r1t.py", |
| path_in_repo="app.py", |
| repo_id=repo_name, |
| token=token, |
| repo_type="space", |
| ) |
| os.remove(f"{uid}r1t.py") |
| |
| return gr.HTML.update(f'''<center>Link to space <a href="https://huggingface.co/spaces/{repo_name}" target="_blank">https://huggingface.co/spaces/{repo_name}</a><center><br>''') |
| except Exception as e: |
| return gr.HTML.update(f"""{str(e)}""") |
|
|
| |
| def checkp(p): |
| if p == o: |
| return gr.update(visible=False), gr.update(visible=True) |
| elif p != o: |
| return None, None |
| with gr.Blocks() as build: |
| with gr.Row(visible=True) as no: |
| pass_box=gr.Textbox() |
| pass_btn=gr.Button() |
| with gr.Row(visible=False) as yes: |
| gr.Column(scale=1) |
| with gr.Column(scale=3): |
| with gr.Box(): |
| token = gr.Textbox(label="auth") |
| t_name = gr.Textbox(label="Space Name") |
| with gr.Row(): |
| with gr.Column(): |
| s_type = gr.Dropdown(label="Space Type",choices=[t for t in types]) |
| d_app = gr.Textbox(label="App File", value="app.py") |
| d_css = gr.Textbox(label="CSS File", value="css.css") |
| with gr.Column(): |
| m_type = gr.Dropdown(label="Model", choices=[m for m in model_list]) |
| r_type = gr.Textbox(label="repo/name") |
| with gr.Row(): |
| inbut = gr.Button() |
| output_html = gr.HTML("""""") |
| files=gr.File() |
| gr.Column(scale=1) |
| pass_btn.click(checkp,pass_box,[no,yes]) |
| inbut.click(build_space,[token,t_name,s_type,m_type,r_type,d_app,d_css],output_html) |
| build.queue(concurrency_count=10).launch() |