Spaces:
Runtime error
Runtime error
from urllib.parse import urlparse, parse_qs | |
from pytube import YouTube | |
from logger import logger | |
from resource_loader.video_loader_interface import VideoLoaderInterface | |
class YouTubeLoader(VideoLoaderInterface): | |
def __init__(self, url, output_path_youtube): | |
self.filename = None | |
self.media_id = None | |
self.url = url | |
self.output_path_youtube = output_path_youtube | |
self.yt = YouTube(url) | |
self.extract_filename() | |
def extract_filename(self): | |
parsed_url = urlparse(self.url) | |
domain_parts = parsed_url.netloc.split(".") | |
main_domain = domain_parts[-2] if len(domain_parts) >= 2 else None | |
query_params = parse_qs(parsed_url.query) | |
media_id = query_params.get("v", [None])[0] | |
self.media_id = f"{main_domain}_{media_id}" | |
self.filename = f"{self.media_id}.mp3" | |
def download(self): | |
audio_stream = self.yt.streams.filter(only_audio=True).first() | |
audio_stream.download(output_path=self.output_path_youtube, filename=self.filename) | |
logger.info(f"Audio downloaded to {self.output_path_youtube}/{self.filename}") | |