File size: 1,797 Bytes
e96ebdd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310801b
e96ebdd
 
310801b
e96ebdd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import fn
import gradio as gr

fn.load_model()

last_url = None
last_video = None
last_audio = None
last_chat = None
last_info = None

def run(url, mode):
    global last_url, last_video, last_audio, last_chat, last_info

    if url != last_url:
        last_url = url
        if last_video and os.path.exists(last_video):
            os.remove(last_video)
        last_video = None
        if last_audio and os.path.exists(last_audio):
            os.remove(last_audio)
        last_audio = None
        last_chat = None
        last_info = None

    result = fn.run(url, mode)

    if mode == 'video':
        ext = os.path.splitext(result)[1]
        os.rename(result, 'last_video' + ext)
        last_video = 'last_video' + ext
    elif mode == 'audio':
        ext = os.path.splitext(result)[1]
        os.rename(result, 'last_audio' + ext)
        last_audio = 'last_audio' + ext
    elif mode == 'chat':
        last_chat = result
    elif mode == 'info':
        last_info = result

    return last_video, last_audio, last_chat, last_info

with gr.Blocks() as demo:
    title = gr.Markdown('# ytdlp')
    url = gr.Textbox(label="URL", interactive=True)
    mode = gr.Dropdown(value='video', choices=['video', 'audio', 'chat', 'info'], label="mode", allow_custom_value=False, interactive=True)
    run_button = gr.Button(value='Run')
    video = gr.Video(label="Video", interactive=False)
    audio = gr.Audio(label="Audio", interactive=False, type="filepath")
    chat = gr.Textbox(label="Chat", interactive=False, show_copy_button=True)
    info = gr.Textbox(label="Info", interactive=False, show_copy_button=True)

    run_button.click(
        fn=run,
        inputs=[url, mode],
        outputs=[video, audio, chat, info],
    )

if __name__ == '__main__':
    demo.launch()