multimodalart HF staff commited on
Commit
f212c91
1 Parent(s): d7d7222

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -11
app.py CHANGED
@@ -67,22 +67,25 @@ def download_file(url, filename, folder="."):
67
  except requests.exceptions.RequestException as e:
68
  print(f"Error downloading file: {e}")
69
 
70
- def process_url(url, folder="."):
71
  json_data = get_json_data(url)
72
  if json_data:
73
  if check_nsfw(json_data):
74
  info = extract_info(json_data)
75
  if info:
76
- downloaded_files = download_files(info, folder)
 
 
 
77
  return info, downloaded_files
78
  else:
79
- print("No model met the criteria.")
80
  else:
81
- print("NSFW content found.")
82
  else:
83
- print("Failed to get JSON data.")
84
 
85
- def create_readme(info, downloaded_files, is_author, folder="."):
86
  readme_content = ""
87
  original_url = f"https://civitai.com/models/{info['id']}"
88
  non_author_disclaimer = f'This model was originally uploaded on [CivitAI]({original_url}), by [{info["creator"]}](https://civitai.com/user/{info["creator"]}/models). The information below was provided by the author on CivitAI:'
@@ -113,14 +116,14 @@ widget:
113
  file.write(readme_content)
114
 
115
 
116
- def upload_civit_to_hf(profile: Optional[gr.OAuthProfile], url, is_author, progress=gr.Progress(track_tqdm=True)):
117
  if not profile.name:
118
  return gr.Error("Are you sure you are logged in?")
119
 
120
  folder = str(uuid.uuid4())
121
  os.makedirs(folder, exist_ok=False)
122
  info, downloaded_files = process_url(url, folder)
123
- create_readme(info, downloaded_files, False, folder)
124
  try:
125
  api = HfApi(token=hf_token)
126
  username = api.whoami()["name"]
@@ -136,6 +139,9 @@ def upload_civit_to_hf(profile: Optional[gr.OAuthProfile], url, is_author, progr
136
  raise gr.Error("something went wrong")
137
  return "Model uploaded!"
138
 
 
 
 
139
  def swap_fill(profile: Optional[gr.OAuthProfile]):
140
  if profile is None:
141
  return gr.update(visible=True), gr.update(visible=False)
@@ -174,7 +180,7 @@ with gr.Blocks(css=css) as demo:
174
  label="CivitAI model URL",
175
  info="URL of the CivitAI model, make sure it is a SDXL LoRA",
176
  )
177
- is_author = gr.Checkbox(label="Are you the model author?", info="If you are not the author, a disclaimer with information about the author and the CivitAI source will be added", value=False)
178
  submit_button_civit = gr.Button("Upload model to Hugging Face and submit")
179
  output = gr.Textbox(label="Output progress")
180
  with gr.Column(visible=False) as enabled_area:
@@ -183,11 +189,14 @@ with gr.Blocks(css=css) as demo:
183
  label="CivitAI model URL",
184
  info="URL of the CivitAI model, make sure it is a SDXL LoRA",
185
  )
186
- is_author = gr.Checkbox(label="Are you the model author?", info="If you are not the author, a disclaimer with information about the author and the CivitAI source will be added", value=False)
 
187
  submit_button_civit = gr.Button("Upload model to Hugging Face")
188
  output = gr.Textbox(label="Output progress")
 
189
  demo.load(fn=swap_fill, outputs=[disabled_area, enabled_area])
190
- submit_button_civit.click(fn=upload_civit_to_hf, inputs=[submit_source_civit, is_author], outputs=[output])
 
191
 
192
  demo.queue()
193
  demo.launch()
 
67
  except requests.exceptions.RequestException as e:
68
  print(f"Error downloading file: {e}")
69
 
70
+ def process_url(url, download_files=True, folder="."):
71
  json_data = get_json_data(url)
72
  if json_data:
73
  if check_nsfw(json_data):
74
  info = extract_info(json_data)
75
  if info:
76
+ if(download_files):
77
+ downloaded_files = download_files(info, folder)
78
+ else
79
+ downloaded_files = []
80
  return info, downloaded_files
81
  else:
82
+ raise gr.Error("Only SDXL LoRAs are supported for now")
83
  else:
84
+ raise gr.Error("This model has content tagged as unsafe by CivitAI")
85
  else:
86
+ raise gr.Error("Something went wrong in fetching CivitAI API")
87
 
88
+ def create_readme(info, downloaded_files, is_author=True, folder="."):
89
  readme_content = ""
90
  original_url = f"https://civitai.com/models/{info['id']}"
91
  non_author_disclaimer = f'This model was originally uploaded on [CivitAI]({original_url}), by [{info["creator"]}](https://civitai.com/user/{info["creator"]}/models). The information below was provided by the author on CivitAI:'
 
116
  file.write(readme_content)
117
 
118
 
119
+ def upload_civit_to_hf(profile: Optional[gr.OAuthProfile], url, progress=gr.Progress(track_tqdm=True)):
120
  if not profile.name:
121
  return gr.Error("Are you sure you are logged in?")
122
 
123
  folder = str(uuid.uuid4())
124
  os.makedirs(folder, exist_ok=False)
125
  info, downloaded_files = process_url(url, folder)
126
+ create_readme(info, downloaded_files, folder)
127
  try:
128
  api = HfApi(token=hf_token)
129
  username = api.whoami()["name"]
 
139
  raise gr.Error("something went wrong")
140
  return "Model uploaded!"
141
 
142
+ def check_civit_link(url):
143
+ info, _ = process_url(url, download_files=False)
144
+ return info["creator"]
145
  def swap_fill(profile: Optional[gr.OAuthProfile]):
146
  if profile is None:
147
  return gr.update(visible=True), gr.update(visible=False)
 
180
  label="CivitAI model URL",
181
  info="URL of the CivitAI model, make sure it is a SDXL LoRA",
182
  )
183
+ #is_author = gr.Checkbox(label="Are you the model author?", info="If you are not the author, a disclaimer with information about the author and the CivitAI source will be added", value=False)
184
  submit_button_civit = gr.Button("Upload model to Hugging Face and submit")
185
  output = gr.Textbox(label="Output progress")
186
  with gr.Column(visible=False) as enabled_area:
 
189
  label="CivitAI model URL",
190
  info="URL of the CivitAI model, make sure it is a SDXL LoRA",
191
  )
192
+ #is_author = gr.Checkbox(label="Are you the model author?", info="If you are not the author, a disclaimer with information about the author and the CivitAI source will be added", value=False)
193
+ instructions = gr.HTML("")
194
  submit_button_civit = gr.Button("Upload model to Hugging Face")
195
  output = gr.Textbox(label="Output progress")
196
+
197
  demo.load(fn=swap_fill, outputs=[disabled_area, enabled_area])
198
+ submit_source_civit.change(fn=check_civit_link, inputs=[submit_source_civit], output=[instructions])
199
+ submit_button_civit.click(fn=upload_civit_to_hf, inputs=[submit_source_civit], outputs=[output])
200
 
201
  demo.queue()
202
  demo.launch()