Omnibus's picture
Update player.py
c11f347
raw
history blame
3.33 kB
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=""
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">
out_html=f'''{out_html}
<video src="https://huggingface.co/datasets/jbilcke-hf/ai-tube-index/resolve/main/videos/{vid_file}" conrols>
</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()
app.load(find_dataset,None,channel)
channel.change(load_vid,channel,[output,label_output])
app.launch(show_api=False,share=False)