Spaces:
Sleeping
Sleeping
File size: 6,463 Bytes
e8baafb d29dbb0 4f6aeda 5e5b0f4 0ca1004 f313251 0ca1004 7949551 5963ebd 12a8720 dfd25b4 12a8720 dfd25b4 12a8720 86a1c17 12a8720 6431362 7949551 6431362 8b79b12 6431362 8b79b12 6431362 bcd832e 6431362 bcd832e 6431362 b958d89 c11f347 7949551 f004b31 7949551 f004b31 7949551 c6dbcc4 c11f347 5f9249e 8e12441 471ca3f 8028210 c1a4ae4 816344b 5f9249e 7949551 c11f347 e8baafb 1a0a0ae e8baafb c11f347 bcd832e c11f347 b958d89 bcd832e 6431362 9e6bbf4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
import gradio as gr
from huggingface_hub import HfApi, list_files_info
import requests
import json
token = ""
source_dataset = "jbilcke-hf/ai-tube-index"
api = HfApi(token=token)
def find_dataset(author=""):
s_ist = (api.list_datasets(author=author,search="ai-tube"))
#print(api.whoami())
channels=[]
videos=[]
for space in s_ist:
try:
channels.append(space.id)
except Exception:
pass
return (gr.Dropdown(label="Channels", choices=[s for s in channels],interactive=True))
def load_vid(channel):
out_html=""
label_html=""
vid_list=[]
sync_list=[]
try:
file_box = [info.path for info in list_files_info(f'{channel}', repo_type="dataset")]
ai_tube_box = [info.path for info in list_files_info(f'{source_dataset}', repo_type="dataset")]
for file in file_box:
if file.startswith("prompt_"):
prompt_slug = file.split("prompt_",1)[1].split(".",1)[0]
out_html=f'{out_html}<pre> • {file}</pre>'
#print(prompt_slug)
for vid_file in ai_tube_box:
try:
vid_slug=vid_file.split("videos/",1)[1].split(".",1)[0]
#print(vid_slug)
try:
if vid_slug == prompt_slug:
out_html=f'{out_html}<pre> + {vid_file}</pre>'
if vid_file.endswith(".json"):
r = requests.get(f'https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/raw/main/videos/{vid_slug}.json')
#r = requests.get(f'https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/blob/main/videos/00b4bcda-7b4a-40f8-9833-e490425a7b91.mp4')
json_out=r.json()
label_html=f'{label_html}{json_out["label"]}<br>{json_out["description"]}<br>'
#print (r.json())
if vid_file.endswith(".mp4"):
vid_list.append(json_out["label"])
sync_list.append(vid_file)
#<source src="https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/resolve/main/videos/{vid_file}" type="video/mp4">
print(vid_file)
label_html=f'''{label_html}
<video src="https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/resolve/main/{vid_file}" controls>
</video>'''
#uid = uuid.uuid4()
#file = open(f'{name}/{f_name}','wb')
#file.write(r.content)
except Exception as e:
print (f'error:: {e}')
pass
except Exception:
pass
except Exception as e:
print(e)
return(out_html,gr.Dropdown(label="Videos",type="index", choices=[s for s in vid_list],interactive=True),sync_list)
def show_vid(vid_file,list_hid):
#vid_slug=vid_file.split("videos/",1)[1].split(".",1)[0]
label_html=f'''{label_html}
<video src="https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/resolve/main/{list_hid[int(vid_file)]}" controls>
</video>'''
return label_html
def load_vid_og(channel):
out_html=""
label_html=""
try:
file_box = [info.path for info in list_files_info(f'{channel}', repo_type="dataset")]
ai_tube_box = [info.path for info in list_files_info(f'{source_dataset}', repo_type="dataset")]
for file in file_box:
if file.startswith("prompt_"):
prompt_slug = file.split("prompt_",1)[1].split(".",1)[0]
out_html=f'{out_html}<pre> • {file}</pre>'
#print(prompt_slug)
for vid_file in ai_tube_box:
try:
vid_slug=vid_file.split("videos/",1)[1].split(".",1)[0]
#print(vid_slug)
try:
if vid_slug == prompt_slug:
out_html=f'{out_html}<pre> + {vid_file}</pre>'
if vid_file.endswith(".json"):
r = requests.get(f'https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/raw/main/videos/{vid_slug}.json')
#r = requests.get(f'https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/blob/main/videos/00b4bcda-7b4a-40f8-9833-e490425a7b91.mp4')
json_out=r.json()
label_html=f'{label_html}{json_out["label"]}<br>{json_out["description"]}<br>'
print (r.json())
if vid_file.endswith(".mp4"):
#<source src="https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/resolve/main/videos/{vid_file}" type="video/mp4">
print(vid_file)
label_html=f'''{label_html}
<video src="https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/resolve/main/{vid_file}" controls>
</video>'''
#uid = uuid.uuid4()
#file = open(f'{name}/{f_name}','wb')
#file.write(r.content)
except Exception as e:
print (f'error:: {e}')
pass
except Exception:
pass
except Exception as e:
print(e)
return(out_html,label_html)
with gr.Blocks() as app:
with gr.Row():
channel = gr.Dropdown()
videos = gr.Dropdown()
button = gr.Button()
output = gr.HTML()
label_output = gr.HTML()
list_hid=gr.Textbox()
app.load(find_dataset,None,channel)
channel.change(load_vid,channel,[output,videos,list_hid])
videos.change(show_vid,[videos,list_hid],[label_output])
app.launch(show_api=False,share=False) |