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