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