def _exit_progress_bar(): if _progress.live._started: logger.debug("`app`: _exit_progress_bar: stop progress bar") print() # Stop _progress, otherwise terminal stdout will be contaminated _progress.stop()
def handle_signal(sign_num, frame): if _progress._started: print() # Stop _progress, otherwise terminal stdout will be contaminated _progress.stop() # No use sys.exit() which only exits the main thread os._exit(1)
def download( api: BaiduPCSApi, remotepaths: List[str], localdir: str, sifters: List[Sifter] = [], recursive: bool = False, from_index: int = 0, downloader: Downloader = DEFAULT_DOWNLOADER, downloadparams: DownloadParams = DEFAULT_DOWNLOADPARAMS, out_cmd: bool = False, ): """Download `remotepaths` to the `localdir` Args: `from_index` (int): The start index of downloading entries from EACH remote directory """ remotepaths = sift(remotepaths, sifters) for rp in remotepaths: if not api.exists(rp): print(f"[yellow]WARNING[/yellow]: `{rp}` does not exist.") continue if api.is_file(rp): download_file( api, rp, localdir, downloader=downloader, downloadparams=downloadparams, out_cmd=out_cmd, ) else: _localdir = str(Path(localdir) / os.path.basename(rp)) download_dir( api, rp, _localdir, sifters=sifters, recursive=recursive, from_index=from_index, downloader=downloader, downloadparams=downloadparams, out_cmd=out_cmd, ) if downloader == Downloader.me: MeDownloader._exit_executor() _progress.stop()
def _exit_progress_bar(): if _progress.live._started: print() # Stop _progress, otherwise terminal stdout will be contaminated _progress.stop()
def download( api: BaiduPCSApi, remotepaths: List[str], localdir: str, sifters: List[Sifter] = [], recursive: bool = False, from_index: int = 0, downloader: Downloader = DEFAULT_DOWNLOADER, downloadparams: DownloadParams = DEFAULT_DOWNLOADPARAMS, out_cmd: bool = False, encrypt_password: bytes = b"", ): """Download `remotepaths` to the `localdir` Args: `from_index` (int): The start index of downloading entries from EACH remote directory """ logger.debug( "`download`: sifters: %s, recursive: %s, from_index: %s, " "downloader: %s, downloadparams: %s, out_cmd: %s, has encrypt_password: %s", sifters, recursive, from_index, downloader, downloadparams, out_cmd, bool(encrypt_password), ) logger.debug( "`download`: remotepaths should be uniq %s == %s", len(remotepaths), len(set(remotepaths)), ) assert ( human_size_to_int(downloadparams.chunk_size) <= MAX_CHUNK_SIZE ), f"`chunk_size` must be less or equal then {human_size(MAX_CHUNK_SIZE)}" for rp in remotepaths: if not api.exists(rp): print(f"[yellow]WARNING[/yellow]: `{rp}` does not exist.") continue if api.is_file(rp): download_file( api, rp, localdir, downloader=downloader, downloadparams=downloadparams, out_cmd=out_cmd, encrypt_password=encrypt_password, ) else: _localdir = str(Path(localdir) / os.path.basename(rp)) download_dir( api, rp, _localdir, sifters=sifters, recursive=recursive, from_index=from_index, downloader=downloader, downloadparams=downloadparams, out_cmd=out_cmd, encrypt_password=encrypt_password, ) if downloader == Downloader.me: MeDownloader._exit_executor() _progress.stop()
def download( api: BaiduPCSApi, remotepaths: List[str], localdir: str, sifters: List[Sifter] = [], recursive: bool = False, from_index: int = 0, downloader: Downloader = DEFAULT_DOWNLOADER, downloadparams: DownloadParams = DEFAULT_DOWNLOADPARAMS, out_cmd: bool = False, encrypt_key: Optional[str] = None, ): """Download `remotepaths` to the `localdir` Args: `from_index` (int): The start index of downloading entries from EACH remote directory """ logger.debug( "`download`: sifters: %s, recursive: %s, from_index: %s, " "downloader: %s, downloadparams: %s, out_cmd: %s, has encrypt_key: %s", sifters, recursive, from_index, downloader, downloadparams, out_cmd, bool(encrypt_key), ) logger.debug( "`download`: remotepaths should be uniq %s == %s", len(remotepaths), len(set(remotepaths)), ) remotepaths = sift(remotepaths, sifters) for rp in remotepaths: if not api.exists(rp): print(f"[yellow]WARNING[/yellow]: `{rp}` does not exist.") continue if api.is_file(rp): download_file( api, rp, localdir, downloader=downloader, downloadparams=downloadparams, out_cmd=out_cmd, encrypt_key=encrypt_key, ) else: _localdir = str(Path(localdir) / os.path.basename(rp)) download_dir( api, rp, _localdir, sifters=sifters, recursive=recursive, from_index=from_index, downloader=downloader, downloadparams=downloadparams, out_cmd=out_cmd, encrypt_key=encrypt_key, ) if downloader == Downloader.me: MeDownloader._exit_executor() _progress.stop()