File size: 1,407 Bytes
bde6277
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import subprocess
import gradio as gr
from datetime import datetime

def download_video(url):
    if not url.strip():
        return "URLを入力してください。"

    # 保存ファイル名の先頭に日時を追加して重複を防ぐ
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    output_template = f"{timestamp}_動画.%(ext)s"

    # yt-dlp コマンドの構築
    command = [
        "yt-dlp",
        "-o", output_template,
        "--write-thumbnail",
        "-f", "mp4",
        url
    ]

    try:
        result = subprocess.run(command, capture_output=True, text=True)
        if result.returncode != 0:
            return f"エラーが発生しました:\n{result.stderr}"
        else:
            return f"ダウンロード完了:{output_template.replace('%(ext)s', 'mp4')}(サムネイルも保存されました)"
    except Exception as e:
        return f"例外が発生しました:{str(e)}"

# Gradio インターフェース作成
with gr.Blocks() as demo:
    gr.Markdown("## 🎥 動画ダウンローダー(yt-dlp + Gradio)")
    url_input = gr.Textbox(label="動画のURLを入力してください")
    output_text = gr.Textbox(label="結果")
    download_button = gr.Button("ダウンロード開始")

    download_button.click(fn=download_video, inputs=[url_input], outputs=[output_text])

# アプリ起動
demo.launch()