Spaces:
Runtime error
Runtime error
File size: 1,141 Bytes
4f194a4 2285996 4f194a4 2285996 4f194a4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
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}")
|