diff --git a/streamrip/bases.py b/streamrip/bases.py index 3a03ef7..e707e3f 100644 --- a/streamrip/bases.py +++ b/streamrip/bases.py @@ -957,13 +957,19 @@ class YoutubeVideo: """Dummy class implemented for consistency with the Media API.""" class DummyClient: - source = 'youtube' + source = "youtube" def __init__(self, url: str): self.url = url self.client = self.DummyClient() - def download(self, parent_folder='StreamripDownloads', **kwargs): + def download( + self, + parent_folder="StreamripDownloads", + download_youtube_videos=False, + youtube_video_downloads_folder="StreamripDownloads", + **kwargs, + ): filename_formatter = "%(track_number)s.%(track)s.%(container)s" filename = os.path.join(parent_folder, filename_formatter) @@ -980,6 +986,20 @@ class YoutubeVideo: self.url, ] ) + + print(f"{download_youtube_videos=}") + if download_youtube_videos: + pv = subprocess.Popen( + [ + "youtube-dl", + "-o", + os.path.join( + youtube_video_downloads_folder, "%(title)s.%(container)s" + ), + self.url, + ] + ) + pv.wait() p.wait() def load_meta(self, *args, **kwargs): diff --git a/streamrip/config.py b/streamrip/config.py index d89a1a1..b8ecb2b 100644 --- a/streamrip/config.py +++ b/streamrip/config.py @@ -71,6 +71,8 @@ class Config: }, "youtube": { "quality": 0, + "download_videos": False, + "video_downloads_folder": DOWNLOADS_DIR, }, "database": {"enabled": True, "path": None}, "conversion": { diff --git a/streamrip/constants.py b/streamrip/constants.py index 272cb7d..4fc6d6b 100644 --- a/streamrip/constants.py +++ b/streamrip/constants.py @@ -12,7 +12,8 @@ CONFIG_PATH = os.path.join(CONFIG_DIR, "config.yaml") LOG_DIR = click.get_app_dir(APPNAME) DB_PATH = os.path.join(LOG_DIR, "downloads.db") -DOWNLOADS_DIR = os.path.join(Path.home(), "StreamripDownloads") +HOME = Path.home() +DOWNLOADS_DIR = os.path.join(HOME, "StreamripDownloads") AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0" @@ -145,7 +146,7 @@ LASTFM_URL_REGEX = r"https://www.last.fm/user/\w+/playlists/\w+" QOBUZ_INTERPRETER_URL_REGEX = ( r"https?://www\.qobuz\.com/\w\w-\w\w/interpreter/[-\w]+/[-\w]+" ) -YOUTUBE_URL_REGEX = r"https://www\.youtube\.com/watch\?v=\w+" +YOUTUBE_URL_REGEX = r"https://www\.youtube\.com/watch\?v=[-\w]+" TIDAL_MAX_Q = 7 diff --git a/streamrip/core.py b/streamrip/core.py index 4f30b5d..8075bed 100644 --- a/streamrip/core.py +++ b/streamrip/core.py @@ -147,6 +147,12 @@ class MusicDL(list): ], "download_videos": self.config.session["tidal"]["download_videos"], "download_booklets": self.config.session["qobuz"]["download_booklets"], + "download_youtube_videos": self.config.session["youtube"][ + "download_videos" + ], + "youtube_video_downloads_folder": self.config.session["youtube"][ + "video_downloads_folder" + ], } def download(self): @@ -169,7 +175,7 @@ class MusicDL(list): ) click.secho("rip config --reset ", fg="yellow", nl=False) click.secho("to reset it. You will need to log in again.", fg="red") - logger.debug(err) + click.secho(err, fg='red') exit() logger.debug("Arguments from config: %s", arguments)