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)