first commit

This commit is contained in:
enrilinux
2026-03-08 12:54:08 +01:00
parent 9ad5408a5d
commit f94333c2f9
7 changed files with 229 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
import yt_dlp
import glob
import re
import os
DOWNLOAD_DIR = "downloads"
def sanitize_filename(name):
"""Rimuove caratteri non validi dai nomi dei file"""
return re.sub(r'[\\/*?:"<>|]', '', name)
def download_video(url, mode):
# Template che usa il titolo e l'ID
template = f"{DOWNLOAD_DIR}/%(title)s - %(id)s.%(ext)s"
if mode == "audio":
opts = {
"format": "bestaudio/best",
"outtmpl": template,
"postprocessors": [{
"key": "FFmpegExtractAudio",
"preferredcodec": "mp3",
"preferredquality": "192",
}]
}
else:
opts = {
"format": "bestvideo+bestaudio/best",
"merge_output_format": "mp4",
"outtmpl": template
}
with yt_dlp.YoutubeDL(opts) as ydl:
info = ydl.extract_info(url, download=True)
# Prende il file scaricato e lo rinomina in modo sicuro
downloaded_files = glob.glob(f"{DOWNLOAD_DIR}/*{info['id']}*")
final_path = downloaded_files[0]
safe_path = os.path.join(
DOWNLOAD_DIR,
sanitize_filename(os.path.basename(final_path))
)
if safe_path != final_path:
os.rename(final_path, safe_path)
return safe_path