import os import sys import uuid import gradio as gr import requests import json import tarfile from pathlib import Path from huggingface_hub import (create_repo,get_full_repo_name,upload_file,CommitOperationAdd,HfApi) uid = uuid.uuid4() print(uid) isExist = os.path.exists(f'{uid}') if not isExist: os.makedirs(f'{uid}') #token_self = os.environ['HF_TOKEN'] o=os.environ['P'] model_list = [ ] types=[ "A", "B", "C", "R1", ] def show_s(name,d_app,token): api = HfApi(token=token) author=name s_ist = (api.list_spaces(author=author)) print (s_ist) file_j = open(f'{uid}/tmp_j','w') file_j.writelines(str(s_ist)) file_j.close() file_b = open(f'{uid}/tmp_j','r') r_file = file_b.readlines() spaces=[] spaces2=[] for line in r_file: if "'id':" in line: line = line.split(":",1)[1] line = line.split("/",1)[1] line2 = line.replace("'","").replace(",","").replace("\n","") spaces.append(line2) #print(f"{line2}") return(gr.update(label="Spaces", choices=[s for s in spaces]),gr.update(label="Spaces", choices=[s for s in spaces])) def show_s_d(name,d_app,token): api = HfApi(token=token) author=name s_ist = (api.list_spaces(author=author)) print (s_ist) file_j = open(f'{uid}/tmp_j','w') file_j.writelines(str(s_ist)) file_j.close() file_b = open(f'{uid}/tmp_j','r') r_file = file_b.readlines() spaces=[] spaces2=[] for line in r_file: if "'id':" in line: line = line.split(":",1)[1] line = line.split("/",1)[1] line2 = line.replace("'","").replace(",","").replace("\n","") spaces.append(line2) #print(f"{line2}") return(gr.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")) return(gr.Dropdown.update(label="Files", choices=[f for f in f_ist])) def load_space(r_name,s_name,d_app): print(f'https://huggingface.co/spaces/{r_name}/{s_name}/raw/main/{d_app}') r = requests.get(f'https://huggingface.co/spaces/{r_name}/{s_name}/raw/main/{d_app}') file = open(f'{uid}/{d_app}','w') file.writelines(r.text) file.close() o_file = open(f'{uid}/mod_{d_app}','w') o_file.writelines(r.text) return r.text,r.text def load_space_d(r_name,s_name,d_app): print(f'https://huggingface.co/spaces/{r_name}/{s_name}/raw/main/{d_app}') r = requests.get(f'https://huggingface.co/spaces/{r_name}/{s_name}/raw/main/{d_app}') file = open(f'{uid}/d{d_app}','w') file.writelines(r.text) file.close() o_file = open(f'{uid}/mod_d_{d_app}','w') o_file.writelines(r.text) return r.text def upd(x,d_app): file = open(f'{uid}/{d_app}','w') file.writelines(x) file.close() o_file = open(f'{uid}/mod_{d_app}','w') o_file.writelines(x) return x def repl(rs,rt,d_app): file = open(f'{uid}/{d_app}','r') r_file = file.read() r_file = r_file.replace(f'{rs}',f'{rt}') o_file = open(f'{uid}/mod_{d_app}','w') o_file = o_file.write(r_file) file.close() return r_file, f'{uid}/mod_{d_app}' def get_f(r_name,spaces,token): api = HfApi(token=token) spaces_b=[] files_b=[] files_c=[] for space in spaces: isExist = os.path.exists(f'{space}') if not isExist: os.makedirs(f'{space}') f_ist = (api.list_repo_files(repo_id=f'{r_name}/{space}', repo_type="space")) for file in f_ist: t_file=open(f'{uid}/{space}-{file}','w') zz_file=open(f'{space}/{file}','w') r = requests.get(f'https://huggingface.co/spaces/{r_name}/{space}/raw/main/{file}') t_file.write(r.text) t_file.close() zz_file.write(r.text) zz_file.close() files_b.append(f'{uid}/{space}-{file}') with tarfile.open(f'{space}.tar.gz','w:gz') as tar: tar.add(f"./{space}",arcname=os.path.basename(f"./{space}")) spaces_b.append(f'{space}.tar.gz') return(files_b,spaces_b) def build_space(token,r_name,s_name,d_app,rd_name,sd_name,dd_app,priv): if token==None or token=="": token = token_self else: token = token pass if dd_app=="" or dd_app==None: dd_app=d_app if rd_name=="" or rd_name==None: rd_name=r_name if sd_name=="" or sd_name==None: sd_name=s_name api = HfApi(token=token) repo_name=f'{rd_name}/{sd_name}' print (repo_name) try: api.upload_file( path_or_fileobj=f"{uid}/mod_{d_app}", path_in_repo=f"{dd_app}", repo_id=repo_name, token=token, repo_type="space", ) if priv==True: api.update_repo_visibility(repo_id=repo_name,private=True,repo_type="space") #os.remove(f"{uid}at.py") return gr.HTML.update(f'''