first commit
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user