Files
youtube-app/backend/download/download_service.py
Marek Lenczewski 8f15f51bce update
2026-04-07 16:13:16 +02:00

36 lines
857 B
Python

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