| 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" |
|
|
| |
| 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)}" |
|
|
| |
| 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() |
|
|