Newer
Older
import shutil
from pathlib import Path
import yt_dlp.postprocessor
from yt_dlp import YoutubeDL
class YTDownloader:
def download(self, url: str, artist: str, song: str, spotify_uri: str):
if (Path(self.videodir) / f"{artist} - {song}.mp4").is_file() and (Path(self.audiodir) / f"{artist} - {song}.mp3").is_file() and self.cache:
return
'outtmpl': f'{str((Path(self.audiodir) / f"{artist} - {song}").resolve())}.%(ext)s',
# ℹ️ See help(yt_dlp.postprocessor) for a list of available Postprocessors and their arguments
'keepvideo': True,
'postprocessors': [{ # Extract audio using ffmpeg
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
}]
}
with YoutubeDL(ydl_opts) as ydl:
ydl.download(url)
Path(self.videodir).mkdir(parents=True, exist_ok=True)
shutil.move(Path(self.audiodir) / f"{artist} - {song}.mp4", Path(self.videodir) / f"{artist} - {song}.mp4")