File size: 1,879 Bytes
3e54926
e9af851
3e54926
0db6ea0
 
e9af851
0db6ea0
 
eb13b82
0db6ea0
 
eb13b82
0db6ea0
 
eb13b82
0db6ea0
 
 
 
 
 
 
 
 
 
 
e9af851
0db6ea0
 
 
 
e9af851
0db6ea0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eb13b82
e9af851
0db6ea0
 
eb13b82
0db6ea0
 
e9af851
 
eb13b82
e9af851
0db6ea0
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 gradio as gr
from textblob import TextBlob

import yt_dlp 
import os 

def download_video(url, request):
    """downlad video and audio from youtube url
    Args:
        url (str): youtube video url
        output_path (str): path to save the downloaded files
    Returns:
        video_filename (str): path to the downloaded video file
        audio_filename (str): path to the downloaded audio file
    """

    # instanciate output path
    output_path='./cache'
    if not os.path.exists(output_path):
        os.mkdir(output_path)

    # get video
    ydl_opts_video = {
        'format': 'worst[ext=mp4]',
        'outtmpl': output_path+'/video/'+'%(title)s_video.%(ext)s',
        'quiet': True
    }
    print('Downloading video...')
    with yt_dlp.YoutubeDL(ydl_opts_video) as ydl:
        info_dict = ydl.extract_info(url, download=True)
        video_filename = ydl.prepare_filename(info_dict)

    # get audio
    audio_opts = {
        'format': 'bestaudio[ext=m4a]',
        'outtmpl': output_path+'/audio/'+'%(title)s.audio.%(ext)s',
        'quiet': False,
        'noplaylist': True,
    }
    print('Downloading audio...')
    with yt_dlp.YoutubeDL(audio_opts) as ydl:
        info_dict = ydl.extract_info(url, download=True)
        audio_filename = ydl.prepare_filename(info_dict)

        
    return {
        "video_path": video_filename,
        "audio_path": audio_filename,
        "request": request
    }
# Create the Gradio interface
demo = gr.Interface(
    fn=download_video, # will use function arguments to define inputs names
    inputs=[gr.Textbox(placeholder="Enter video url"),gr.Textbox(placeholder="Enter request")],
    outputs=gr.JSON(),
    title="Video information request",
    description="Retreive user's request information from a video"
)

# Launch the interface and MCP server
if __name__ == "__main__":
    demo.launch()