import subprocess from pathlib import Path from database.database import SessionLocal from model.video import Video VIDEOS_DIR = "/videos" MIN_VALID_SIZE = 1024 * 100 # 100 KB def download_video(video_id: int, youtube_url: str): output_path = f"{VIDEOS_DIR}/{video_id}.mp4" subprocess.run( [ "yt-dlp", "-f", "bestvideo[ext=mp4][vcodec^=avc]+bestaudio[ext=m4a]/best[ext=mp4]", "-o", output_path, "--merge-output-format", "mp4", "--force-overwrites", "--no-continue", youtube_url, ], check=True, ) path = Path(output_path) if not path.exists() or path.stat().st_size < MIN_VALID_SIZE: return db = SessionLocal() try: Video.update_file_path(db, video_id, output_path) finally: db.close()