def download( ctx, remotepaths, outdir, recursive, from_index, include, include_regex, exclude, exclude_regex, downloader, concurrency, chunk_size, no_decrypt, quiet, out_cmd, encrypt_password, ): """下载文件""" if out_cmd: assert downloader != Downloader.me.name, "输出命令只能用于第三方下载应用" api = _recent_api(ctx) if not api: return sifters = [] if include: sifters.append(IncludeSifter(include, regex=False)) if include_regex: sifters.append(IncludeSifter(include, regex=True)) if exclude: sifters.append(ExcludeSifter(exclude, regex=False)) if exclude_regex: sifters.append(ExcludeSifter(exclude_regex, regex=True)) pwd = _pwd(ctx) remotepaths = [join_path(pwd, r) for r in remotepaths] if no_decrypt: encrypt_password = b"" else: encrypt_password = encrypt_password or _encrypt_password(ctx) _download( api, remotepaths, outdir, sifters=sifters, recursive=recursive, from_index=from_index, downloader=getattr(Downloader, downloader), downloadparams=DownloadParams(concurrency=concurrency, chunk_size=chunk_size, quiet=quiet), out_cmd=out_cmd, encrypt_password=encrypt_password, )
def ls( ctx, remotepaths, desc, name, time, size, recursive, include, include_regex, exclude, exclude_regex, is_file, is_dir, no_highlight, show_size, show_date, show_md5, show_absolute_path, ): """列出网盘路径下的文件""" api = _recent_api(ctx) if not api: return sifters = [] if include: sifters.append(IncludeSifter(include, regex=False)) if include_regex: sifters.append(IncludeSifter(include, regex=True)) if exclude: sifters.append(ExcludeSifter(exclude, regex=False)) if exclude_regex: sifters.append(ExcludeSifter(exclude_regex, regex=True)) if is_file: sifters.append(IsFileSifter()) if is_dir: sifters.append(IsDirSifter()) pwd = _pwd(ctx) remotepaths = (join_path(pwd, r) for r in list(remotepaths) or (pwd, )) list_files( api, *remotepaths, desc=desc, name=name, time=time, size=size, recursive=recursive, sifters=sifters, highlight=not no_highlight, show_size=show_size, show_date=show_date, show_md5=show_md5, show_absolute_path=show_absolute_path, )
def search( ctx, keyword, remotedir, recursive, include, include_regex, exclude, exclude_regex, is_file, is_dir, no_highlight, show_size, show_date, show_md5, csv, ): """搜索包含 `keyword` 的文件""" api = _recent_api(ctx) if not api: return sifters = [] if include: sifters.append(IncludeSifter(include, regex=False)) if include_regex: sifters.append(IncludeSifter(include, regex=True)) if exclude: sifters.append(ExcludeSifter(exclude, regex=False)) if exclude_regex: sifters.append(ExcludeSifter(exclude_regex, regex=True)) if is_file: sifters.append(IsFileSifter()) if is_dir: sifters.append(IsDirSifter()) pwd = _pwd(ctx) remotedir = join_path(pwd, remotedir) _search( api, keyword, remotedir, recursive=recursive, sifters=sifters, highlight=not no_highlight, show_size=show_size, show_date=show_date, show_md5=show_md5, csv=csv, )
def play( ctx, remotepaths, recursive, from_index, include, include_regex, exclude, exclude_regex, player, player_params, m3u8, quiet, out_cmd, ): """播放媒体文件""" api = _recent_api(ctx) if not api: return sifters = [] if include: sifters.append(IncludeSifter(include, regex=False)) if include_regex: sifters.append(IncludeSifter(include, regex=True)) if exclude: sifters.append(ExcludeSifter(exclude, regex=False)) if exclude_regex: sifters.append(ExcludeSifter(exclude_regex, regex=True)) pwd = _pwd(ctx) remotepaths = [join_path(pwd, r) for r in remotepaths] _play( api, remotepaths, sifters=sifters, recursive=recursive, from_index=from_index, player=getattr(Player, player), player_params=player_params, m3u8=m3u8, quiet=quiet, out_cmd=out_cmd, )
def ls( ctx, remotepaths, desc, name, time, size, recursive, include, include_regex, exclude, exclude_regex, is_file, is_dir, no_highlight, show_size, show_date, show_md5, show_absolute_path, show_dl_link, show_hash_link, hash_link_protocol, no_check_md5, csv, only_dl_link, only_hash_link, ): """列出网盘路径下的文件和对应的文件信息""" api = _recent_api(ctx) if not api: return sifters = [] if include: sifters.append(IncludeSifter(include, regex=False)) if include_regex: sifters.append(IncludeSifter(include, regex=True)) if exclude: sifters.append(ExcludeSifter(exclude, regex=False)) if exclude_regex: sifters.append(ExcludeSifter(exclude_regex, regex=True)) if is_file: sifters.append(IsFileSifter()) if is_dir: sifters.append(IsDirSifter()) pwd = _pwd(ctx) remotepaths = (join_path(pwd, r) for r in list(remotepaths) or (pwd, )) rapiduploadinfo_file = _rapiduploadinfo_file(ctx) user_id, user_name = _recent_user_id_and_name(ctx) list_files( api, *remotepaths, desc=desc, name=name, time=time, size=size, recursive=recursive, sifters=sifters, highlight=not no_highlight, rapiduploadinfo_file=rapiduploadinfo_file, user_id=user_id, user_name=user_name, show_size=show_size, show_date=show_date, show_md5=show_md5, show_absolute_path=show_absolute_path, show_dl_link=show_dl_link, show_hash_link=show_hash_link, hash_link_protocol=hash_link_protocol, check_md5=not no_check_md5, csv=csv, only_dl_link=only_dl_link, only_hash_link=only_hash_link, )
def play( ctx, remotepaths, recursive, from_index, include, include_regex, exclude, exclude_regex, player, player_params, m3u8, quiet, shuffle, ignore_ext, out_cmd, use_local_server, encrypt_password, ): """播放媒体文件""" api = _recent_api(ctx) if not api: return sifters = [] if include: sifters.append(IncludeSifter(include, regex=False)) if include_regex: sifters.append(IncludeSifter(include, regex=True)) if exclude: sifters.append(ExcludeSifter(exclude, regex=False)) if exclude_regex: sifters.append(ExcludeSifter(exclude_regex, regex=True)) pwd = _pwd(ctx) remotepaths = [join_path(pwd, r) for r in remotepaths] local_server = "" if use_local_server: encrypt_password = encrypt_password or _encrypt_password(ctx) host = "localhost" port = random_avail_port(49152, 65535) local_server = f"http://{host}:{port}" ps = Process( target=start_server, args=( api, "/", ), kwargs=dict( host=host, port=port, workers=CPU_NUM, encrypt_password=encrypt_password, log_level="warning", ), ) ps.start() time.sleep(1) _play( api, remotepaths, sifters=sifters, recursive=recursive, from_index=from_index, player=getattr(Player, player), player_params=player_params, m3u8=m3u8, quiet=quiet, shuffle=shuffle, ignore_ext=ignore_ext, out_cmd=out_cmd, local_server=local_server, ) if use_local_server: ps.terminate()