multimodalart HF staff commited on
Commit
0817061
1 Parent(s): 81518e2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -56
app.py CHANGED
@@ -116,56 +116,6 @@ widget:
116
  with open(f"{folder}/README.md", "w") as file:
117
  file.write(readme_content)
118
 
119
-
120
- def upload_civit_to_hf(profile: Optional[gr.OAuthProfile], url, progress=gr.Progress(track_tqdm=True)):
121
- if not profile.name:
122
- return gr.Error("Are you sure you are logged in?")
123
-
124
- folder = str(uuid.uuid4())
125
- os.makedirs(folder, exist_ok=False)
126
- info, downloaded_files = process_url(url, folder=folder)
127
- create_readme(info, downloaded_files, folder=folder)
128
- try:
129
- api = HfApi(token=os.environ["HUGGING_FACE_HUB_TOKEN"])
130
- username = api.whoami()["name"]
131
- slug_name = slugify(info["name"])
132
- repo_id = f"{username}/{profile.preferred_username}-{slug_name}"
133
- api.create_repo(repo_id=repo_id, private=True, exist_ok=True)
134
- api.upload_folder(
135
- folder_path=folder,
136
- repo_id=repo_id,
137
- repo_type="model",
138
- )
139
- api.update_repo_visibility(repo_id=repo_id, private=False)
140
- except:
141
- raise gr.Error("something went wrong")
142
-
143
- transfer_repos = gr.load("multimodalart/transfer_repos", hf_token=os.environ["HUGGING_FACE_HUB_TOKEN"], src="spaces")
144
- user_repo_id = f"{profile.preferred_username}/{slug_name}"
145
- response_code = transfer_repos(repo_id, user_repo_id)
146
- i = 0
147
- while response_code != "200":
148
- message = None
149
- if response_code == "409":
150
- if i < 3:
151
- user_repo_id = f"{profile.preferred_username}/{slug_name}-{i}"
152
- response_code = transfer_repos(repo_id, user_repo_id)
153
- i += 1
154
- else:
155
- message = "It seems this model has been uploaded already in your account."
156
- elif response_code == "404":
157
- message = "Something went wrong with the model upload. Try again."
158
- else:
159
- message = f"Unexpected response code: {response_code}."
160
-
161
- if message:
162
- api.delete_repo(repo_id=repo_id, repo_type="model")
163
- raise gr.Error(message)
164
-
165
- return f'''# Model uploaded to 🤗!
166
- ## Access it here [{user_repo_id}](https://huggingface.co/{user_repo_id}) '''
167
-
168
-
169
  def get_creator(username):
170
  url = f"https://civitai.com/api/trpc/user.getCreator?input=%7B%22json%22%3A%7B%22username%22%3A%22{username}%22%2C%22authed%22%3Atrue%7D%7D"
171
  headers = {
@@ -206,12 +156,12 @@ def check_civit_link(profile: Optional[gr.OAuthProfile], url):
206
  attributes_methods = dir(profile)
207
  if(not hf_username):
208
  no_username_text = f'Model by <b>{info["creator"]}</b> 🤗, if you are {info["creator"]}, hi! Your CivitAI profile seems to not have information about your Hugging Face account. Please visit <a href="https://civitai.com/user/account">https://civitai.com/user/account</a> and include it there<br><img width="60%" src="https://i.imgur.com/hCbo9uL.png" /><br>(if you are not {info["creator"]}, you cannot submit their model at this time)'
209
- return no_username_text, gr.update(interactive=False), gr.update(visible=True)
210
  if(profile.preferred_username != hf_username):
211
  unmatched_username_text = '<h4>Oops, the Hugging Face account in your CivitAI profile seems to be different than the one your are using here. Please visit <a href="https://civitai.com/user/account">https://civitai.com/user/account</a> and update it there<br><img src="https://i.imgur.com/hCbo9uL.png" /></h4>'
212
- return unmatched_username_text, gr.update(interactive=False), gr.update(visible=True)
213
  else:
214
- return '', gr.update(interactive=True), gr.update(visible=False)
215
 
216
  def swap_fill(profile: Optional[gr.OAuthProfile]):
217
  if profile is None:
@@ -221,6 +171,58 @@ def swap_fill(profile: Optional[gr.OAuthProfile]):
221
 
222
  def show_output():
223
  return gr.update(visible=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  css = '''
225
  #login {
226
  font-size: 0px;
@@ -271,11 +273,12 @@ Get diffusers compatibility, a free GPU-based Inference Widget and possibility t
271
  try_again_button = gr.Button("I have added my HF profile to my account", visible=False)
272
  submit_button_civit = gr.Button("Upload model to Hugging Face", interactive=False)
273
  output = gr.Markdown(label="Output progress", visible=False)
274
-
 
275
  demo.load(fn=swap_fill, outputs=[disabled_area, enabled_area])
276
- submit_source_civit.change(fn=check_civit_link, inputs=[submit_source_civit], outputs=[instructions, submit_button_civit, try_again_button])
277
  try_again_button.click(fn=check_civit_link, inputs=[submit_source_civit], outputs=[instructions, submit_button_civit, try_again_button])
278
- submit_button_civit.click(fn=show_output, inputs=[], outputs=[output]).then(fn=upload_civit_to_hf, inputs=[submit_source_civit], outputs=[output])
279
  gr.LogoutButton(elem_id="logout")
280
  demo.queue()
281
  demo.launch()
 
116
  with open(f"{folder}/README.md", "w") as file:
117
  file.write(readme_content)
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  def get_creator(username):
120
  url = f"https://civitai.com/api/trpc/user.getCreator?input=%7B%22json%22%3A%7B%22username%22%3A%22{username}%22%2C%22authed%22%3Atrue%7D%7D"
121
  headers = {
 
156
  attributes_methods = dir(profile)
157
  if(not hf_username):
158
  no_username_text = f'Model by <b>{info["creator"]}</b> 🤗, if you are {info["creator"]}, hi! Your CivitAI profile seems to not have information about your Hugging Face account. Please visit <a href="https://civitai.com/user/account">https://civitai.com/user/account</a> and include it there<br><img width="60%" src="https://i.imgur.com/hCbo9uL.png" /><br>(if you are not {info["creator"]}, you cannot submit their model at this time)'
159
+ return no_username_text, gr.update(interactive=False), gr.update(visible=True), hf_username
160
  if(profile.preferred_username != hf_username):
161
  unmatched_username_text = '<h4>Oops, the Hugging Face account in your CivitAI profile seems to be different than the one your are using here. Please visit <a href="https://civitai.com/user/account">https://civitai.com/user/account</a> and update it there<br><img src="https://i.imgur.com/hCbo9uL.png" /></h4>'
162
+ return unmatched_username_text, gr.update(interactive=False), gr.update(visible=True), hf_username
163
  else:
164
+ return '', gr.update(interactive=True), gr.update(visible=False), hf_username
165
 
166
  def swap_fill(profile: Optional[gr.OAuthProfile]):
167
  if profile is None:
 
171
 
172
  def show_output():
173
  return gr.update(visible=True)
174
+
175
+ def upload_civit_to_hf(profile: Optional[gr.OAuthProfile], url, civit_username, progress=gr.Progress(track_tqdm=True)):
176
+ if not profile.name:
177
+ return gr.Error("Are you sure you are logged in?")
178
+ if civit_username != profile.preferred_username:
179
+ return gr.Error("You are not the model author")
180
+
181
+ folder = str(uuid.uuid4())
182
+ os.makedirs(folder, exist_ok=False)
183
+ info, downloaded_files = process_url(url, folder=folder)
184
+ create_readme(info, downloaded_files, folder=folder)
185
+ try:
186
+ api = HfApi(token=os.environ["HUGGING_FACE_HUB_TOKEN"])
187
+ username = api.whoami()["name"]
188
+ slug_name = slugify(info["name"])
189
+ repo_id = f"{username}/{profile.preferred_username}-{slug_name}"
190
+ api.create_repo(repo_id=repo_id, private=True, exist_ok=True)
191
+ api.upload_folder(
192
+ folder_path=folder,
193
+ repo_id=repo_id,
194
+ repo_type="model",
195
+ )
196
+ api.update_repo_visibility(repo_id=repo_id, private=False)
197
+ except:
198
+ raise gr.Error("something went wrong")
199
+
200
+ transfer_repos = gr.load("multimodalart/transfer_repos", hf_token=os.environ["HUGGING_FACE_HUB_TOKEN"], src="spaces")
201
+ user_repo_id = f"{profile.preferred_username}/{slug_name}"
202
+ response_code = transfer_repos(repo_id, user_repo_id)
203
+ i = 0
204
+ while response_code != "200":
205
+ message = None
206
+ if response_code == "409":
207
+ if i < 3:
208
+ user_repo_id = f"{profile.preferred_username}/{slug_name}-{i}"
209
+ response_code = transfer_repos(repo_id, user_repo_id)
210
+ i += 1
211
+ else:
212
+ message = "It seems this model has been uploaded already in your account."
213
+ elif response_code == "404":
214
+ message = "Something went wrong with the model upload. Try again."
215
+ else:
216
+ message = f"Unexpected response code: {response_code}."
217
+
218
+ if message:
219
+ api.delete_repo(repo_id=repo_id, repo_type="model")
220
+ raise gr.Error(message)
221
+
222
+ return f'''# Model uploaded to 🤗!
223
+ ## Access it here [{user_repo_id}](https://huggingface.co/{user_repo_id}) '''
224
+
225
+
226
  css = '''
227
  #login {
228
  font-size: 0px;
 
273
  try_again_button = gr.Button("I have added my HF profile to my account", visible=False)
274
  submit_button_civit = gr.Button("Upload model to Hugging Face", interactive=False)
275
  output = gr.Markdown(label="Output progress", visible=False)
276
+
277
+ civit_username = gr.State()
278
  demo.load(fn=swap_fill, outputs=[disabled_area, enabled_area])
279
+ submit_source_civit.change(fn=check_civit_link, inputs=[submit_source_civit], outputs=[instructions, submit_button_civit, try_again_button, civit_username])
280
  try_again_button.click(fn=check_civit_link, inputs=[submit_source_civit], outputs=[instructions, submit_button_civit, try_again_button])
281
+ submit_button_civit.click(fn=show_output, inputs=[], outputs=[output]).then(fn=upload_civit_to_hf, inputs=[submit_source_civit, civit_username], outputs=[output])
282
  gr.LogoutButton(elem_id="logout")
283
  demo.queue()
284
  demo.launch()