update
This commit is contained in:
35
backend/download/download_service.py
Normal file
35
backend/download/download_service.py
Normal file
@@ -0,0 +1,35 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user