def _initial_checks(): if not os.path.isdir(CONFIG_PATH) or not os.path.isfile(CONFIG_FILE): os.makedirs(CONFIG_PATH, exist_ok=True) _reset_config(CONFIG_FILE) if len(sys.argv) < 2: sys.exit(qobuz_dl_args().print_help())
def main(): _initial_checks() config = configparser.ConfigParser() config.read(CONFIG_FILE) try: email = config["DEFAULT"]["email"] password = config["DEFAULT"]["password"] default_folder = config["DEFAULT"]["default_folder"] default_limit = config["DEFAULT"]["default_limit"] default_quality = config["DEFAULT"]["default_quality"] no_m3u = config.getboolean("DEFAULT", "no_m3u") albums_only = config.getboolean("DEFAULT", "albums_only") no_fallback = config.getboolean("DEFAULT", "no_fallback") og_cover = config.getboolean("DEFAULT", "og_cover") embed_art = config.getboolean("DEFAULT", "embed_art") no_cover = config.getboolean("DEFAULT", "no_cover") no_database = config.getboolean("DEFAULT", "no_database") app_id = config["DEFAULT"]["app_id"] smart_discography = config.getboolean("DEFAULT", "smart_discography") folder_format = config["DEFAULT"]["folder_format"] track_format = config["DEFAULT"]["track_format"] secrets = [ secret for secret in config["DEFAULT"]["secrets"].split(",") if secret ] arguments = qobuz_dl_args(default_quality, default_limit, default_folder).parse_args() except (KeyError, UnicodeDecodeError, configparser.Error) as error: arguments = qobuz_dl_args().parse_args() if not arguments.reset: sys.exit(f"{RED}Your config file is corrupted: {error}! " "Run 'qobuz-dl -r' to fix this.") if arguments.reset: sys.exit(_reset_config(CONFIG_FILE)) if arguments.purge: try: os.remove(QOBUZ_DB) except FileNotFoundError: pass sys.exit(f"{GREEN}The database was deleted.") qobuz = QobuzDL( arguments.directory, arguments.quality, arguments.embed_art or embed_art, ignore_singles_eps=arguments.albums_only or albums_only, no_m3u_for_playlists=arguments.no_m3u or no_m3u, quality_fallback=not arguments.no_fallback or not no_fallback, cover_og_quality=arguments.og_cover or og_cover, no_cover=arguments.no_cover or no_cover, downloads_db=None if no_database or arguments.no_db else QOBUZ_DB, folder_format=arguments.folder_format or folder_format, track_format=arguments.track_format or track_format, smart_discography=arguments.smart_discography or smart_discography, ) qobuz.initialize_client(email, password, app_id, secrets) _handle_commands(qobuz, arguments)
def main(): if not os.path.isdir(CONFIG_PATH) or not os.path.isfile(CONFIG_FILE): try: os.makedirs(CONFIG_PATH, exist_ok=True) except FileExistsError: pass reset_config(CONFIG_FILE) if len(sys.argv) < 2: sys.exit(qobuz_dl_args().print_help()) email = None password = None app_id = None secrets = None config = configparser.ConfigParser() config.read(CONFIG_FILE) try: email = config["DEFAULT"]["email"] password = base64.b64decode(config["DEFAULT"]["password"]).decode() default_folder = config["DEFAULT"]["default_folder"] default_limit = config["DEFAULT"]["default_limit"] default_quality = config["DEFAULT"]["default_quality"] app_id = config["DEFAULT"]["app_id"] secrets = [ secret for secret in config["DEFAULT"]["secrets"].split(",") if secret ] arguments = qobuz_dl_args( default_quality, default_limit, default_folder ).parse_args() except (KeyError, UnicodeDecodeError): arguments = qobuz_dl_args().parse_args() if not arguments.reset: print("Your config file is corrupted! Run 'qobuz-dl -r' to fix this\n") if arguments.reset: sys.exit(reset_config(CONFIG_FILE)) directory = musicDir(arguments.directory) Qz = qopy.Client(email, password, app_id, secrets) try: quality_str = QUALITIES[int(arguments.quality)] print("Quality set: " + quality_str) except KeyError: sys.exit("Invalid quality!") if arguments.command == "fun": sys.exit( interactive( Qz, directory, arguments.limit, not arguments.albums_only, arguments.embed_art, ) ) if arguments.command == "dl": for url in arguments.SOURCE: if os.path.isfile(url): download_by_txt_file( Qz, url, directory, arguments.quality, arguments.embed_art ) else: handle_urls(url, Qz, directory, arguments.quality, arguments.embed_art) else: download_lucky_mode( Qz, arguments.type, " ".join(arguments.QUERY), arguments.number, directory, arguments.quality, arguments.embed_art, )
def main(): if not os.path.isdir(CONFIG_PATH) or not os.path.isfile(CONFIG_FILE): os.makedirs(CONFIG_PATH, exist_ok=True) reset_config(CONFIG_FILE) if len(sys.argv) < 2: sys.exit(qobuz_dl_args().print_help()) config = configparser.ConfigParser() config.read(CONFIG_FILE) try: email = config["DEFAULT"]["email"] password = base64.b64decode(config["DEFAULT"]["password"]).decode() default_folder = config["DEFAULT"]["default_folder"] default_limit = config["DEFAULT"]["default_limit"] default_quality = config["DEFAULT"]["default_quality"] no_m3u = config.getboolean("DEFAULT", "no_m3u") albums_only = config.getboolean("DEFAULT", "albums_only") no_fallback = config.getboolean("DEFAULT", "no_fallback") og_cover = config.getboolean("DEFAULT", "og_cover") embed_art = config.getboolean("DEFAULT", "embed_art") no_cover = config.getboolean("DEFAULT", "no_cover") app_id = config["DEFAULT"]["app_id"] secrets = [ secret for secret in config["DEFAULT"]["secrets"].split(",") if secret ] arguments = qobuz_dl_args(default_quality, default_limit, default_folder).parse_args() except (KeyError, UnicodeDecodeError, configparser.Error): arguments = qobuz_dl_args().parse_args() if not arguments.reset: sys.exit( f"{RED}Your config file is corrupted! Run 'qobuz-dl -r' to fix this" ) if arguments.reset: sys.exit(reset_config(CONFIG_FILE)) qobuz = QobuzDL( arguments.directory, arguments.quality, arguments.embed_art or embed_art, ignore_singles_eps=arguments.albums_only or albums_only, no_m3u_for_playlists=arguments.no_m3u or no_m3u, quality_fallback=not arguments.no_fallback or not no_fallback, cover_og_quality=arguments.og_cover or og_cover, no_cover=arguments.no_cover or no_cover, ) qobuz.initialize_client(email, password, app_id, secrets) try: if arguments.command == "dl": qobuz.download_list_of_urls(arguments.SOURCE) elif arguments.command == "lucky": query = " ".join(arguments.QUERY) qobuz.lucky_type = arguments.type qobuz.lucky_limit = arguments.number qobuz.lucky_mode(query) elif arguments.command == "album": for id in arguments.ID: downloader.download_id_by_type(qobuz, id, arguments.directory, arguments.quality, True, arguments.embed_art) elif arguments.command == "track": for id in arguments.ID: downloader.download_id_by_type(qobuz, id, arguments.directory, arguments.quality, False, arguments.embed_art) elif arguments.command == "favs": download_favorites(qobuz, arguments.directory + "/" + arguments.file) else: qobuz.interactive_limit = arguments.limit qobuz.interactive() except KeyboardInterrupt: logging.info( f"{RED}Interrupted by user\n{YELLOW}Already downloaded items will " "be skipped if you try to download the same releases again") finally: remove_leftovers(qobuz.directory)
def main(): if not os.path.isdir(CONFIG_PATH) or not os.path.isfile(CONFIG_FILE): os.makedirs(CONFIG_PATH, exist_ok=True) reset_config(CONFIG_FILE) if len(sys.argv) < 2: sys.exit(qobuz_dl_args().print_help()) config = configparser.ConfigParser() config.read(CONFIG_FILE) try: email = config["DEFAULT"]["email"] password = config["DEFAULT"]["password"] default_folder = config["DEFAULT"]["default_folder"] default_limit = config["DEFAULT"]["default_limit"] default_quality = config["DEFAULT"]["default_quality"] no_m3u = config.getboolean("DEFAULT", "no_m3u") albums_only = config.getboolean("DEFAULT", "albums_only") no_fallback = config.getboolean("DEFAULT", "no_fallback") og_cover = config.getboolean("DEFAULT", "og_cover") embed_art = config.getboolean("DEFAULT", "embed_art") no_cover = config.getboolean("DEFAULT", "no_cover") no_database = config.getboolean("DEFAULT", "no_database") app_id = config["DEFAULT"]["app_id"] if ( "folder_format" not in config["DEFAULT"] or "track_format" not in config["DEFAULT"] or "smart_discography" not in config["DEFAULT"] ): logging.info( f"{YELLOW}Config file does not include some settings, updating..." ) config["DEFAULT"]["folder_format"] = "{artist} - {album} ({year}) " "[{bit_depth}B-{sampling_rate}kHz]" config["DEFAULT"]["track_format"] = "{tracknumber}. {tracktitle}" config["DEFAULT"]["smart_discography"] = "false" with open(CONFIG_FILE, "w") as cf: config.write(cf) smart_discography = config.getboolean("DEFAULT", "smart_discography") folder_format = config["DEFAULT"]["folder_format"] track_format = config["DEFAULT"]["track_format"] secrets = [ secret for secret in config["DEFAULT"]["secrets"].split(",") if secret ] arguments = qobuz_dl_args( default_quality, default_limit, default_folder ).parse_args() except (KeyError, UnicodeDecodeError, configparser.Error): arguments = qobuz_dl_args().parse_args() if not arguments.reset: sys.exit( f"{RED}Your config file is corrupted! Run 'qobuz-dl -r' to fix this." ) if arguments.reset: sys.exit(reset_config(CONFIG_FILE)) if arguments.purge: try: os.remove(QOBUZ_DB) except FileNotFoundError: pass sys.exit(f"{GREEN}The database was deleted.") qobuz = QobuzDL( arguments.directory, arguments.quality, arguments.embed_art or embed_art, ignore_singles_eps=arguments.albums_only or albums_only, no_m3u_for_playlists=arguments.no_m3u or no_m3u, quality_fallback=not arguments.no_fallback or not no_fallback, cover_og_quality=arguments.og_cover or og_cover, no_cover=arguments.no_cover or no_cover, downloads_db=None if no_database or arguments.no_db else QOBUZ_DB, folder_format=arguments.folder_format or folder_format, track_format=arguments.track_format or track_format, smart_discography=arguments.smart_discography or smart_discography, ) qobuz.initialize_client(email, password, app_id, secrets) try: if arguments.command == "dl": qobuz.download_list_of_urls(arguments.SOURCE) elif arguments.command == "lucky": query = " ".join(arguments.QUERY) qobuz.lucky_type = arguments.type qobuz.lucky_limit = arguments.number qobuz.lucky_mode(query) else: qobuz.interactive_limit = arguments.limit qobuz.interactive() except KeyboardInterrupt: logging.info( f"{RED}Interrupted by user\n{YELLOW}Already downloaded items will " "be skipped if you try to download the same releases again." ) finally: remove_leftovers(qobuz.directory)