Omnibus's picture
Update dl.py
32b6e6e
raw
history blame
10.1 kB
import os
import sys
import uuid
import gradio as gr
import requests
import json
from zipfile import ZipFile
import shutil
from pathlib import Path
from huggingface_hub import (create_repo,get_full_repo_name,upload_file,CommitOperationAdd,HfApi,snapshot_download)
from PIL import Image
uid = uuid.uuid4()
#token = os.environ['HF_TOKEN']
#token_self = os.environ['HF_TOKEN']
#o=os.environ['P']
def show_s(name,token):
spaces=[]
spaces.append("")
api = HfApi(token=token)
author=name
s_ist = (api.list_spaces(author=author))
for i,space in enumerate(s_ist):
space_ea = space.id.split("/",1)[1]
spaces.append(space_ea)
#print (space_ea)
return(gr.Dropdown.update(label="Spaces", choices=[s for s in spaces]))
def show_f(repo,name,token):
api = HfApi(token=token)
f_ist = (api.list_repo_files(repo_id=f'{repo}/{name}', repo_type="space"))
print (f_ist)
file_list = []
#file_out = []
if not os.path.exists(name):
os.makedirs(name)
images = [".png" , ".jpg" , ".gif" , ".webm" , ".mp4"]
for d_app in f_ist:
if "/" in d_app:
dir_1=d_app.split("/",1)[0]
rem_1=d_app.split("/",1)[1]
if not os.path.exists(f'{name}/{dir_1}'):
os.makedirs(f'{name}/{dir_1}')
if "/" in rem_1:
dir_2=rem_1.split("/",1)[0]
rem_2=rem_1.split("/",1)[1]
if not os.path.exists(f'{name}/{dir_1}/{dir_2}'):
os.makedirs(f'{name}/{dir_1}/{dir_2}')
sf=rem_2.split(".",1)[1]
pf=rem_2.split(".",1)[0]
f_name=f'{dir_1}/{dir2}/{pf}.{sf}'
else:
sf=rem_1.split(".",1)[1]
pf=rem_1.split(".",1)[0]
f_name=f'{dir_1}/{pf}.{sf}'
print(f_name)
else:
sf=d_app.split(".",1)[1]
pf=d_app.split(".",1)[0]
f_name=f'{pf}.{sf}'
pass
#numbers = [x for x in images if img in f_name]
img_tog=False
for img in images:
if img in f_name:
url = f"https://huggingface.co/spaces/{repo}/{name}/resolve/main/{d_app}"
r = requests.get(url)
with open(f'{name}/{f_name}', "wb") as f:
f.write(r.content)
#html_text += f'<object data="https://huggingface.co/spaces/{repo}/{name}/raw/main/{d_app}"'
#out_text = "Image File"
#https://huggingface.co/spaces/Omnibus/idefics_playground/resolve/main/example_images/cat_sketch.png
#sav_im = Image.open(f"https://huggingface.co/spaces/{repo}/{name}/resolve/main/{d_app}")
#sav_im.save(f'{name}/{f_name}')
file_list.append(Path(f'{name}/{f_name}'))
#file_out.append(f"https://huggingface.co/spaces/{repo}/{name}/raw/main/{d_app}")
img_tog=True
else:
pass
if img_tog == False:
r = requests.get(f'https://huggingface.co/spaces/{repo}/{name}/raw/main/{d_app}')
print(d_app)
#print (r.text)
uid = uuid.uuid4()
file = open(f'{name}/{f_name}','wb')
file.write(r.content)
file.close()
#file = open(f'{name}/{f_name}','w')
#file.writelines(r.text)
#file.close()
file_list.append(Path(f'{name}/{f_name}'))
#file_out.append(d_app)
with ZipFile(f"{name}.zip", "w") as zipObj:
for idx, file in enumerate(f_ist):
zipObj.write(f'{name}/{file}')
file_list.append(f'{name}.zip')
return(gr.Dropdown.update(label="Files", choices=[f for f in f_ist],interactive=True), file_list)
def show_f2(repo,name,token):
api = HfApi(token=token)
#f_ist = snapshot_download(repo_id=f'{repo}/{name}', repo_type="space")
f_ist = (api.list_repo_files(repo_id=f'{repo}/{name}', repo_type="space"))
print (f_ist)
file_list = []
file_out = []
if not os.path.exists(name):
os.makedirs(name)
for d_app in f_ist:
r = requests.get(f'https://huggingface.co/spaces/{repo}/{name}/raw/main/{d_app}')
#print (r.text)
uid = uuid.uuid4()
sf=d_app.split(".",1)[1]
pf=d_app.split(".",1)[0]
f_name=f'{pf}.{sf}'
file = open(f'{name}/{f_name}','w')
file.writelines(r.text)
file.close()
file_list.append(Path(f'{name}/{f_name}'))
file_out.append(d_app)
with ZipFile(f"{name}.zip", "w") as zipObj:
for idx, file in enumerate(f_ist):
zipObj.write(f'{name}/{file}')
file_list.append(f'{name}.zip')
return(gr.Dropdown.update(label="Files", choices=[f for f in f_ist],interactive=True), file_list)
def show_f_cont(repo,name,file,token):
html_text = '<html>\n<body>\n'
if (".png" or ".jpg" or ".gif" or ".webm" or ".mp4") in file:
html_text += f'<object data="https://huggingface.co/spaces/{repo}/{name}/resolve/main/{file}"'
out_text = "Image File"
else:
r = requests.get(f'https://huggingface.co/spaces/{repo}/{name}/raw/main/{file}')
text=r.text
html_text += f'<pre>{text}</pre>\n'
out_text = r.text
html_text += '</body>\n</html>'
return(html_text,out_text)
def show_all(author,token):
spaces=[]
api = HfApi(token=token)
#author=name
s_ist = (api.list_spaces(author=author))
file_list = []
file_list_ea=[]
for i,space in enumerate(s_ist):
space_ea = space.id.split("/",1)[1]
spaces.append(space_ea)
#print (space_ea)
f_ist = (api.list_repo_files(repo_id=f'{author}/{space_ea}', repo_type="space"))
#print (f_ist)
if not os.path.exists(space_ea):
os.makedirs(space_ea)
for d_app in f_ist:
r = requests.get(f'https://huggingface.co/spaces/{author}/{space_ea}/raw/main/{d_app}')
#print (r.text)
uid = uuid.uuid4()
try:
sf=d_app.split(".",1)[1]
pf=d_app.split(".",1)[0]
f_name=f'{pf}.{sf}'
file = open(f'{space_ea}/{f_name}','w')
file.writelines(r.text)
file.close()
#file_list_ea.append(Path(f'{space}/{f_name}'))
except Exception:
pass
with ZipFile(f"{space_ea}.zip", "w") as zipObj:
for idx, file in enumerate(f_ist):
try:
zipObj.write(f'{space_ea}/{file}')
except Exception:
pass
file_list.append(f'{space_ea}.zip')
yield file_list
with ZipFile(f"{author}.zip", "w") as zipObj:
for idx, file in enumerate(file_list):
try:
zipObj.write(f'{file}')
except Exception:
pass
file_list.append(f'{author}.zip')
yield file_list
def show_all_z(author,token):
spaces=[]
api = HfApi(token=token)
#author=name
s_ist = (api.list_spaces(author=author))
file_list = []
file_list_ea=[]
for i,space in enumerate(s_ist):
space_ea = space.id.split("/",1)[1]
spaces.append(space_ea)
#print (space_ea)
f_ist = (api.list_repo_files(repo_id=f'{author}/{space_ea}', repo_type="space"))
#print (f_ist)
if not os.path.exists(space_ea):
os.makedirs(space_ea)
file= snapshot_download(repo_id=f'{author}/{space_ea}', repo_type="space")
shutil.make_archive(f"{space_ea}", 'zip', file)
file_list.append(f'{space_ea}.zip')
yield file_list
with ZipFile(f"{author}.zip", "w") as zipObj:
for idx, file in enumerate(file_list):
try:
zipObj.write(f'{file}')
except Exception:
pass
file_list.append(f'{author}.zip')
yield file_list
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=False) as no:
pass_box=gr.Textbox()
pass_btn=gr.Button()
with gr.Box(visible=True) as yes:
with gr.Row():
with gr.Column(scale=2):
with gr.Group():
with gr.Row():
r_name = gr.Textbox(label="Repo")
token = gr.Textbox(label="auth")
with gr.Row():
s_btn = gr.Button("Show Spaces")
with gr.Row():
s_name = gr.Dropdown(label="Spaces", choices=[])
f_name = gr.Dropdown(label="Files", choices=[])
with gr.Row():
l_btn = gr.Button("Load Space")
with gr.Row():
show_all_btn1 = gr.Button("Load All 1")
show_all_btn2 = gr.Button("Load All 2")
with gr.Box():
r_h=gr.HTML()
with gr.Column(scale=1):
files=gr.File(file_count="directory")
with gr.Row():
r_t=gr.Textbox(max_lines=100)
m_t=gr.Textbox(max_lines=100)
uu=gr.Textbox(visible=False)
show_all_btn1.click(show_all,[r_name,token],files)
show_all_btn2.click(show_all_z,[r_name,token],files)
s_btn.click(show_s,[r_name,token],s_name)
f_name.change(show_f_cont,[r_name,s_name,f_name],[r_h,r_t])
#s_name.change(show_f,[r_name,s_name,token],[d_app,files])
l_btn.click(show_f,[r_name,s_name,token], [f_name, files])
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(show_api=False)