From 286ff502b5fbec56fe0420dea29ede0a6bbf076e Mon Sep 17 00:00:00 2001 From: nathom Date: Fri, 30 Jul 2021 11:24:09 -0700 Subject: [PATCH] Only use click for secho, echo, style --- rip/cli.py | 138 ++++++++++++++++++++-------------------- rip/constants.py | 2 +- rip/core.py | 52 +++++++-------- streamrip/clients.py | 2 +- streamrip/exceptions.py | 8 +-- streamrip/media.py | 38 +++++------ streamrip/utils.py | 12 ++-- tests/tests.py | 6 +- 8 files changed, 129 insertions(+), 129 deletions(-) diff --git a/rip/cli.py b/rip/cli.py index c5c4c1c..2eae9b9 100644 --- a/rip/cli.py +++ b/rip/cli.py @@ -9,10 +9,10 @@ logging.basicConfig(level="WARNING") logger = logging.getLogger("streamrip") -class SkipArg(click.Group): +class SkipArg(Group): def parse_args(self, ctx, args): if len(args) == 0: - click.echo(self.get_help(ctx)) + echo(self.get_help(ctx)) exit() if args[0] in self.commands: @@ -25,27 +25,27 @@ class SkipArg(click.Group): super(SkipArg, self).parse_args(ctx, args) -# @click.option( +# @option( # "-u", # "--urls", # metavar="URLS", # help="Url from Qobuz, Tidal, SoundCloud, or Deezer", # multiple=True, # ) -@click.group(cls=SkipArg, invoke_without_command=True) -@click.option("-c", "--convert", metavar="CODEC", help="alac, mp3, flac, or ogg") -@click.option( +@group(cls=SkipArg, invoke_without_command=True) +@option("-c", "--convert", metavar="CODEC", help="alac, mp3, flac, or ogg") +@option( "-q", "--quality", metavar="INT", help="0: < 320kbps, 1: 320 kbps, 2: 16 bit/44.1 kHz, 3: 24 bit/<=96 kHz, 4: 24 bit/<=192 kHz", ) -@click.option("-t", "--text", metavar="PATH", help="Download urls from a text file.") -@click.option("-nd", "--no-db", is_flag=True, help="Ignore the database.") -@click.option("--debug", is_flag=True, help="Show debugging logs.") -@click.argument("URLS", nargs=1) -@click.version_option(prog_name="rip", version=__version__) -@click.pass_context +@option("-t", "--text", metavar="PATH", help="Download urls from a text file.") +@option("-nd", "--no-db", is_flag=True, help="Ignore the database.") +@option("--debug", is_flag=True, help="Show debugging logs.") +@argument("URLS", nargs=1) +@version_option(prog_name="rip", version=__version__) +@pass_context def cli(ctx, **kwargs): """Streamrip: The all-in-one Qobuz, Tidal, SoundCloud, and Deezer music downloader. @@ -84,7 +84,7 @@ def cli(ctx, **kwargs): if ctx.invoked_subcommand is None and not ctx.params["urls"]: print(dir(cli)) - click.echo(cli.get_help(ctx)) + echo(cli.get_help(ctx)) if ctx.invoked_subcommand not in { None, @@ -106,13 +106,13 @@ def cli(ctx, **kwargs): r = requests.get("https://pypi.org/pypi/streamrip/json").json() newest = r["info"]["version"] if __version__ != newest: - click.secho( + secho( "A new version of streamrip is available! " "Run `pip3 install streamrip --upgrade` to update.", fg="yellow", ) else: - click.secho("streamrip is up-to-date!", fg="green") + secho("streamrip is up-to-date!", fg="green") if kwargs["no_db"]: config.session["database"]["enabled"] = False @@ -124,7 +124,7 @@ def cli(ctx, **kwargs): if kwargs["quality"] is not None: quality = int(kwargs["quality"]) if quality not in range(5): - click.secho("Invalid quality", fg="red") + secho("Invalid quality", fg="red") return config.session["qobuz"]["quality"] = quality @@ -142,21 +142,21 @@ def cli(ctx, **kwargs): logger.debug(f"Handling {kwargs['text']}") core.handle_txt(kwargs["text"]) else: - click.secho(f"Text file {kwargs['text']} does not exist.") + secho(f"Text file {kwargs['text']} does not exist.") if ctx.invoked_subcommand is None: core.download() @cli.command(name="filter") -@click.option("--repeats", is_flag=True) -@click.option("--non-albums", is_flag=True) -@click.option("--extras", is_flag=True) -@click.option("--features", is_flag=True) -@click.option("--non-studio-albums", is_flag=True) -@click.option("--non-remasters", is_flag=True) -@click.argument("URLS", nargs=-1) -@click.pass_context +@option("--repeats", is_flag=True) +@option("--non-albums", is_flag=True) +@option("--extras", is_flag=True) +@option("--features", is_flag=True) +@option("--non-studio-albums", is_flag=True) +@option("--non-remasters", is_flag=True) +@argument("URLS", nargs=-1) +@pass_context def filter_discography(ctx, **kwargs): """Filter an artists discography (qobuz only). @@ -176,22 +176,22 @@ def filter_discography(ctx, **kwargs): @cli.command() -@click.option( +@option( "-t", "--type", default="album", help="album, playlist, track, or artist", show_default=True, ) -@click.option( +@option( "-s", "--source", default="qobuz", help="qobuz, tidal, soundcloud, deezer, or deezloader", show_default=True, ) -@click.argument("QUERY", nargs=-1) -@click.pass_context +@argument("QUERY", nargs=-1) +@pass_context def search(ctx, **kwargs): """Search and download media in interactive mode. @@ -223,18 +223,18 @@ def search(ctx, **kwargs): if core.interactive_search(query, kwargs["source"], kwargs["type"]): core.download() else: - click.secho("No items chosen, exiting.", fg="bright_red") + secho("No items chosen, exiting.", fg="bright_red") @cli.command() -@click.option("-l", "--list", default="ideal-discography", show_default=True) -@click.option( +@option("-l", "--list", default="ideal-discography", show_default=True) +@option( "-s", "--scrape", is_flag=True, help="Download all of the items in a list." ) -@click.option( +@option( "-n", "--num-items", default=50, help="Number of items to parse.", show_default=True ) -@click.pass_context +@pass_context def discover(ctx, **kwargs): """Search for albums in Qobuz's featured lists. @@ -278,13 +278,13 @@ def discover(ctx, **kwargs): @cli.command() -@click.option( +@option( "-s", "--source", help="qobuz, tidal, deezer, deezloader, or soundcloud", ) -@click.argument("URL") -@click.pass_context +@argument("URL") +@pass_context def lastfm(ctx, source, url): """Search for tracks from a last.fm playlist on a given source. @@ -312,25 +312,25 @@ def lastfm(ctx, source, url): @cli.command() -@click.option("-o", "--open", is_flag=True, help="Open the config file") -@click.option("-d", "--directory", is_flag=True, help="Open the config directory") -@click.option("-q", "--qobuz", is_flag=True, help="Set Qobuz credentials") -@click.option("-t", "--tidal", is_flag=True, help="Re-login into Tidal") -@click.option("-dz", "--deezer", is_flag=True, help="Set the Deezer ARL") -@click.option("--reset", is_flag=True, help="RESET the config file") -@click.option( +@option("-o", "--open", is_flag=True, help="Open the config file") +@option("-d", "--directory", is_flag=True, help="Open the config directory") +@option("-q", "--qobuz", is_flag=True, help="Set Qobuz credentials") +@option("-t", "--tidal", is_flag=True, help="Re-login into Tidal") +@option("-dz", "--deezer", is_flag=True, help="Set the Deezer ARL") +@option("--reset", is_flag=True, help="RESET the config file") +@option( "--update", is_flag=True, help="Reset the config file, keeping the credentials", ) -@click.option("-p", "--path", is_flag=True, help="Show the config file's path") -@click.option( +@option("-p", "--path", is_flag=True, help="Show the config file's path") +@option( "-ov", "--open-vim", is_flag=True, help="Open the config file in the nvim or vim text editor.", ) -@click.pass_context +@pass_context def config(ctx, **kwargs): """Manage the streamrip configuration file.""" import os @@ -350,11 +350,11 @@ def config(ctx, **kwargs): config.update() if kwargs["path"]: - click.echo(CONFIG_PATH) + echo(CONFIG_PATH) if kwargs["open"]: - click.secho(f"Opening {CONFIG_PATH}", fg="green") - click.launch(CONFIG_PATH) + secho(f"Opening {CONFIG_PATH}", fg="green") + launch(CONFIG_PATH) if kwargs["open_vim"]: if shutil.which("nvim") is not None: @@ -364,58 +364,58 @@ def config(ctx, **kwargs): if kwargs["directory"]: config_dir = os.path.dirname(CONFIG_PATH) - click.secho(f"Opening {config_dir}", fg="green") - click.launch(config_dir) + secho(f"Opening {config_dir}", fg="green") + launch(config_dir) if kwargs["qobuz"]: - config.file["qobuz"]["email"] = input(click.style("Qobuz email: ", fg="blue")) + config.file["qobuz"]["email"] = input(style("Qobuz email: ", fg="blue")) - click.secho("Qobuz password (will not show on screen):", fg="blue") + secho("Qobuz password (will not show on screen):", fg="blue") config.file["qobuz"]["password"] = md5( getpass(prompt="").encode("utf-8") ).hexdigest() config.save() - click.secho("Qobuz credentials hashed and saved to config.", fg="green") + secho("Qobuz credentials hashed and saved to config.", fg="green") if kwargs["tidal"]: client = TidalClient() client.login() config.file["tidal"].update(client.get_tokens()) config.save() - click.secho("Credentials saved to config.", fg="green") + secho("Credentials saved to config.", fg="green") if kwargs["deezer"]: - click.secho( + secho( "If you're not sure how to find the ARL cookie, see the instructions at ", italic=True, nl=False, dim=True, ) - click.secho( + secho( "https://github.com/nathom/streamrip/wiki/Finding-your-Deezer-ARL-Cookie", underline=True, italic=True, fg="blue", ) - config.file["deezer"]["arl"] = input(click.style("ARL: ", fg="green")) + config.file["deezer"]["arl"] = input(style("ARL: ", fg="green")) config.save() @cli.command() -@click.option( +@option( "-sr", "--sampling-rate", help="Downsample the tracks to this rate, in Hz." ) -@click.option("-bd", "--bit-depth", help="Downsample the tracks to this bit depth.") -@click.option( +@option("-bd", "--bit-depth", help="Downsample the tracks to this bit depth.") +@option( "-k", "--keep-source", is_flag=True, help="Do not delete the old file after conversion.", ) -@click.argument("CODEC") -@click.argument("PATH") -@click.pass_context +@argument("CODEC") +@argument("PATH") +@pass_context def convert(ctx, **kwargs): """Batch convert audio files. @@ -498,14 +498,14 @@ def convert(ctx, **kwargs): elif os.path.isfile(kwargs["path"]): codec_map[codec](filename=kwargs["path"], **converter_args).convert() else: - click.secho(f"File {kwargs['path']} does not exist.", fg="red") + secho(f"File {kwargs['path']} does not exist.", fg="red") @cli.command() -@click.option( +@option( "-n", "--num-items", help="The number of items to atttempt downloads for." ) -@click.pass_context +@pass_context def repair(ctx, **kwargs): """Retry failed downloads. @@ -520,7 +520,7 @@ def repair(ctx, **kwargs): def none_chosen(): """Print message if nothing was chosen.""" - click.secho("No items chosen, exiting.", fg="bright_red") + secho("No items chosen, exiting.", fg="bright_red") def main(): diff --git a/rip/constants.py b/rip/constants.py index 75cabf1..bd0e689 100644 --- a/rip/constants.py +++ b/rip/constants.py @@ -7,7 +7,7 @@ from pathlib import Path from click import style, secho APPNAME = "streamrip" -APP_DIR = click.get_app_dir(APPNAME) +APP_DIR = get_app_dir(APPNAME) HOME = Path.home() LOG_DIR = CACHE_DIR = CONFIG_DIR = APP_DIR diff --git a/rip/core.py b/rip/core.py index 35adee1..2fddcda 100644 --- a/rip/core.py +++ b/rip/core.py @@ -162,8 +162,8 @@ class RipCore(list): if not parsed and len(self) == 0: if "last.fm" in url: message = ( - f"For last.fm urls, use the {click.style('lastfm', fg='yellow')} " - f"command. See {click.style('rip lastfm --help', fg='yellow')}." + f"For last.fm urls, use the {style('lastfm', fg='yellow')} " + f"command. See {style('rip lastfm --help', fg='yellow')}." ) else: message = f"Cannot find urls in text: {url}" @@ -175,7 +175,7 @@ class RipCore(list): logger.info( f"ID {item_id} already downloaded, use --no-db to override." ) - click.secho( + secho( f"ID {item_id} already downloaded, use --no-db to override.", fg="magenta", ) @@ -248,7 +248,7 @@ class RipCore(list): max_items = float("inf") if self.failed_db.is_dummy: - click.secho( + secho( "Failed downloads database must be enabled in the config file " "to repair!", fg="red", @@ -304,7 +304,7 @@ class RipCore(list): item.load_meta(**arguments) except NonStreamable: self.failed_db.add((item.client.source, item.type, item.id)) - click.secho(f"{item!s} is not available, skipping.", fg="red") + secho(f"{item!s} is not available, skipping.", fg="red") continue try: @@ -321,7 +321,7 @@ class RipCore(list): self.failed_db.add(failed_item_info) continue except ItemExists as e: - click.secho(f'"{e!s}" already exists. Skipping.', fg="yellow") + secho(f'"{e!s}" already exists. Skipping.', fg="yellow") continue if hasattr(item, "id"): @@ -366,13 +366,13 @@ class RipCore(list): creds = self.config.creds(client.source) if client.source == "deezer" and creds["arl"] == "": if self.config.session["deezer"]["deezloader_warnings"]: - click.secho( + secho( "Falling back to Deezloader (max 320kbps MP3). If you have a subscription, run ", nl=False, fg="yellow", ) - click.secho("rip config --deezer ", nl=False, bold=True) - click.secho("to download FLAC files.\n\n", fg="yellow") + secho("rip config --deezer ", nl=False, bold=True) + secho("to download FLAC files.\n\n", fg="yellow") raise DeezloaderFallback while True: @@ -380,7 +380,7 @@ class RipCore(list): client.login(**creds) break except AuthenticationError: - click.secho("Invalid credentials, try again.", fg="yellow") + secho("Invalid credentials, try again.", fg="yellow") self.prompt_creds(client.source) creds = self.config.creds(client.source) except MissingCredentials: @@ -419,7 +419,7 @@ class RipCore(list): interpreter_urls = QOBUZ_INTERPRETER_URL_REGEX.findall(url) if interpreter_urls: - click.secho( + secho( "Extracting IDs from Qobuz interpreter urls. Use urls " "that include the artist ID for faster preprocessing.", fg="yellow", @@ -432,7 +432,7 @@ class RipCore(list): dynamic_urls = DEEZER_DYNAMIC_LINK_REGEX.findall(url) if dynamic_urls: - click.secho( + secho( "Extracting IDs from Deezer dynamic link. Use urls " "of the form https://www.deezer.com/{country}/{type}/{id} for " "faster processing.", @@ -526,7 +526,7 @@ class RipCore(list): from streamrip.utils import TQDM_BAR_FORMAT for purl in lastfm_urls: - click.secho(f"Fetching playlist at {purl}", fg="blue") + secho(f"Fetching playlist at {purl}", fg="blue") title, queries = self.get_lastfm_playlist(purl) pl = Playlist(client=self.get_client(lastfm_source), name=title) @@ -555,7 +555,7 @@ class RipCore(list): pl.loaded = True if tracks_not_found > 0: - click.secho(f"{tracks_not_found} tracks not found.", fg="yellow") + secho(f"{tracks_not_found} tracks not found.", fg="yellow") self.append(pl) @@ -817,9 +817,9 @@ class RipCore(list): :type source: str """ if source == "qobuz": - click.secho("Enter Qobuz email:", fg="green") + secho("Enter Qobuz email:", fg="green") self.config.file[source]["email"] = input() - click.secho( + secho( "Enter Qobuz password (will not show on screen):", fg="green", ) @@ -828,27 +828,27 @@ class RipCore(list): ).hexdigest() self.config.save() - click.secho( + secho( f'Credentials saved to config file at "{self.config._path}"', fg="green", ) elif source == "deezer": - click.secho( + secho( "If you're not sure how to find the ARL cookie, see the instructions at ", italic=True, nl=False, dim=True, ) - click.secho( + secho( "https://github.com/nathom/streamrip/wiki/Finding-your-Deezer-ARL-Cookie", underline=True, italic=True, fg="blue", ) - self.config.file["deezer"]["arl"] = input(click.style("ARL: ", fg="green")) + self.config.file["deezer"]["arl"] = input(style("ARL: ", fg="green")) self.config.save() - click.secho( + secho( f'Credentials saved to config file at "{self.config._path}"', fg="green", ) @@ -856,19 +856,19 @@ class RipCore(list): raise Exception def _config_updating_message(self): - click.secho( + secho( "Updating config file... Some settings may be lost. Please run the " "command again.", fg="magenta", ) def _config_corrupted_message(self, err: Exception): - click.secho( + secho( "There was a problem with your config file. This happens " "sometimes after updates. Run ", nl=False, fg="red", ) - click.secho("rip config --reset ", fg="yellow", nl=False) - click.secho("to reset it. You will need to log in again.", fg="red") - click.secho(str(err), fg="red") + secho("rip config --reset ", fg="yellow", nl=False) + secho("to reset it. You will need to log in again.", fg="red") + secho(str(err), fg="red") diff --git a/streamrip/clients.py b/streamrip/clients.py index bfe9b87..9c675b7 100644 --- a/streamrip/clients.py +++ b/streamrip/clients.py @@ -855,7 +855,7 @@ class TidalClient(Client): fg="blue", ) if launch: - click.launch(login_link) + launch(login_link) start = time.time() elapsed = 0.0 diff --git a/streamrip/exceptions.py b/streamrip/exceptions.py index 784d182..1f3cf10 100644 --- a/streamrip/exceptions.py +++ b/streamrip/exceptions.py @@ -50,7 +50,7 @@ class NonStreamable(Exception): :param item: """ - click.echo(self.print_msg(item)) + echo(self.print_msg(item)) def print_msg(self, item) -> str: """Return a generic readable message. @@ -59,12 +59,12 @@ class NonStreamable(Exception): :type item: Media :rtype: str """ - base_msg = [click.style(f"Unable to stream {item!s}.", fg="yellow")] + base_msg = [style(f"Unable to stream {item!s}.", fg="yellow")] if self.message: base_msg.extend( ( - click.style("Message:", fg="yellow"), - click.style(self.message, fg="red"), + style("Message:", fg="yellow"), + style(self.message, fg="red"), ) ) diff --git a/streamrip/media.py b/streamrip/media.py index 1eaff82..c7d68a0 100644 --- a/streamrip/media.py +++ b/streamrip/media.py @@ -270,7 +270,7 @@ class Track(Media): :type progress_bar: bool """ if not self.part_of_tracklist: - click.secho(f"Downloading {self!s}\n", bold=True) + secho(f"Downloading {self!s}\n", bold=True) self._prepare_download( quality=quality, @@ -311,7 +311,7 @@ class Track(Media): words[0] + " " + " ".join(map(str.lower, words[1:])) + "." ) - click.secho(f"Panic: {e} dl_info = {dl_info}", fg="red") + secho(f"Panic: {e} dl_info = {dl_info}", fg="red") raise NonStreamable _quick_download(download_url, self.path, desc=self._progress_desc) @@ -461,7 +461,7 @@ class Track(Media): :rtype: str """ - return click.style(f"Track {self.meta.tracknumber:02}", fg="blue") + return style(f"Track {self.meta.tracknumber:02}", fg="blue") def download_cover(self, width=999999, height=999999): """Download the cover art, if cover_url is given.""" @@ -666,7 +666,7 @@ class Track(Media): """ if not self.downloaded: logger.debug("Track not downloaded, skipping conversion") - click.secho("Track not downloaded, skipping conversion", fg="magenta") + secho("Track not downloaded, skipping conversion", fg="magenta") return CONV_CLASS = { @@ -683,7 +683,7 @@ class Track(Media): try: self.container = codec.upper() except AttributeError: - click.secho("Error: No audio codec chosen to convert to.", fg="red") + secho("Error: No audio codec chosen to convert to.", fg="red") exit() if not hasattr(self, "final_path"): @@ -691,7 +691,7 @@ class Track(Media): if not os.path.isfile(self.path): logger.info("File %s does not exist. Skipping conversion.", self.path) - click.secho(f"{self!s} does not exist. Skipping conversion.", fg="red") + secho(f"{self!s} does not exist. Skipping conversion.", fg="red") return assert ( @@ -809,7 +809,7 @@ class Video(Media): :param kwargs: """ - click.secho( + secho( f"Downloading {self.title} (Video). This may take a while.", fg="blue", ) @@ -944,7 +944,7 @@ class YoutubeVideo(Media): :type youtube_video_downloads_folder: str :param kwargs: """ - click.secho(f"Downloading url {self.id}", fg="blue") + secho(f"Downloading url {self.id}", fg="blue") filename_formatter = "%(track_number)s.%(track)s.%(container)s" filename = os.path.join(parent_folder, filename_formatter) @@ -964,7 +964,7 @@ class YoutubeVideo(Media): ) if download_youtube_videos: - click.secho("Downloading video stream", fg="blue") + secho("Downloading video stream", fg="blue") pv = subprocess.Popen( [ "youtube-dl", @@ -1080,7 +1080,7 @@ class Tracklist(list): # TODO: make this function return the items that have not been downloaded failed_downloads: List[Tuple[str, str, str]] = [] if kwargs.get("concurrent_downloads", True): - click.echo() # To separate cover progress bars and the rest + echo() # To separate cover progress bars and the rest with concurrent.futures.ThreadPoolExecutor( kwargs.get("max_connections", 3) ) as executor: @@ -1101,7 +1101,7 @@ class Tracklist(list): except (KeyboardInterrupt, SystemExit): executor.shutdown() - click.echo("Aborted! May take some time to shutdown.") + echo("Aborted! May take some time to shutdown.") exit() else: @@ -1109,11 +1109,11 @@ class Tracklist(list): if self.client.source != "soundcloud": # soundcloud only gets metadata after `target` is called # message will be printed in `target` - click.secho(f'\nDownloading "{item!s}"', bold=True, fg="green") + secho(f'\nDownloading "{item!s}"', bold=True, fg="green") try: target(item, **kwargs) except ItemExists: - click.secho(f"{item!s} exists. Skipping.", fg="yellow") + secho(f"{item!s} exists. Skipping.", fg="yellow") except NonStreamable as e: e.print(item) failed_downloads.append((item.client.source, item.type, item.id)) @@ -1259,7 +1259,7 @@ class Tracklist(list): :rtype: str """ - click.secho( + secho( f"\n\nDownloading {self.title} ({self.__class__.__name__})\n", fg="magenta", bold=True, @@ -1417,7 +1417,7 @@ class Album(Tracklist, Media): self.download_message() # choose optimal cover size and download it - click.secho("Downloading cover art", bold=True) + secho("Downloading cover art", bold=True) cover_path = os.path.join(gettempdir(), f"cover_{hash(self)}.jpg") embed_cover_size = kwargs.get("embed_cover_size", "large") @@ -1441,7 +1441,7 @@ class Album(Tracklist, Media): cover_size = os.path.getsize(cover_path) if cover_size > FLAC_MAX_BLOCKSIZE: # 16.77 MB - click.secho( + secho( "Downgrading embedded cover size, too large ({cover_size}).", fg="bright_yellow", ) @@ -1468,7 +1468,7 @@ class Album(Tracklist, Media): and kwargs.get("download_booklets", True) and not any(f.endswith(".pdf") for f in os.listdir(self.folder)) ): - click.secho("\nDownloading booklets", bold=True) + secho("\nDownloading booklets", bold=True) for item in self.booklets: Booklet(item).download(parent_folder=self.folder) @@ -1778,7 +1778,7 @@ class Playlist(Tracklist, Media): kwargs["parent_folder"] = self.folder if self.client.source == "soundcloud": item.load_meta() - click.secho(f"Downloading {item!s}", fg="blue") + secho(f"Downloading {item!s}", fg="blue") if kwargs.get("set_playlist_to_album", False): item.meta.album = self.name @@ -2211,4 +2211,4 @@ def _quick_download(url: str, path: str, desc: str = None): def _cover_download(url: str, path: str): - _quick_download(url, path, click.style("Cover", fg="blue")) + _quick_download(url, path, style("Cover", fg="blue")) diff --git a/streamrip/utils.py b/streamrip/utils.py index 419c4be..ae97507 100644 --- a/streamrip/utils.py +++ b/streamrip/utils.py @@ -299,13 +299,13 @@ def decrypt_mqa_file(in_path, out_path, encryption_key): from Crypto.Cipher import AES from Crypto.Util import Counter except (ImportError, ModuleNotFoundError): - click.secho( + secho( "To download this item in MQA, you need to run ", fg="yellow", nl=False, ) - click.secho("pip3 install pycryptodome --upgrade", fg="blue", nl=False) - click.secho(".") + secho("pip3 install pycryptodome --upgrade", fg="blue", nl=False) + secho(".") exit() # Do not change this @@ -385,7 +385,7 @@ def decho(message, fg=None): :param fg: ANSI color with which to display the message on the screen """ - click.secho(message, fg=fg) + secho(message, fg=fg) logger.debug(message) @@ -479,9 +479,9 @@ TQDM_THEMES = { "plain": None, "dainty": ( "{desc} |{bar}| " - + click.style("{remaining}", fg="magenta") + + style("{remaining}", fg="magenta") + " left at " - + click.style("{rate_fmt}{postfix} ", fg="cyan", bold=True) + + style("{rate_fmt}{postfix} ", fg="cyan", bold=True) ), } diff --git a/tests/tests.py b/tests/tests.py index 76dd22f..02693c9 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -44,14 +44,14 @@ def download_albums(): procs.append(subprocess.run([*rip_url, url])) for p in procs: - click.echo(p) + echo(p) def check_album_dl_success(folder, correct): if set(os.listdir(folder)) != set(correct): - click.secho(f"Check for {folder} failed!", fg="red") + secho(f"Check for {folder} failed!", fg="red") else: - click.secho(f"Check for {folder} succeeded!", fg="green") + secho(f"Check for {folder} succeeded!", fg="green") def main():