使用bypy实现百度云盘文件上传与下载
前言
我的需求是在一家 pt 站上传种子和做种,但是我的初始文件是在百度网盘中,我需要将文件传到我用来刷 pt 的 vps 中,才能进行后续操作。
对于有 GUI (图形用户界面) 的 linux 系统,想要使用百度网盘直接下载对应的客户端即可进行操作。
但是对于云服务器来说,下载客户端不太现实,好在 github 的开源项目 bypy 给出了使用命令行操作百度云盘的方法。
安装与授权
安装和授权 bypy 参考 github 官方文档(上面贴的有链接)即可,也就是使用pip install bypy 进行安装,安装完成后第一次运行时需要授权,只需跑任何一个命令(比如 bypy info
)然后跟着说明(登陆等)来授权即可。授权只需一次,一旦成功,以后不会再出现授权提示。
1 | pipx install bypy |
接着点击链接,登录百度云盘后,获取到授权码复制到界面中,再点击 Enter 即可。
提示是这样就表示授权成功了。
pipx
和官方文档描述的不同,对于 bypy 的安装,我使用的是 pipx 来替代 pip,pipx
是一个用于隔离安装和运行 Python 命令行工具的工具。它会为每个安装的工具创建独立的虚拟环境,确保不同工具之间的依赖不会冲突。
安装
1 | sudo apt update |
常用指令
指令 | 作用 |
---|---|
pipx install <package_name> |
安装一个 Python 命令行工具,支持隔离的虚拟环境。 |
pipx run <package_name> [arguments] |
临时运行一个工具,而不进行全局安装。 |
pipx list |
列出通过 pipx 安装的所有工具及其依赖。 |
pipx uninstall <package_name> |
删除指定工具及其虚拟环境。 |
pipx reinstall-all |
重新安装所有工具(通常用于 Python 版本升级后)。 |
pipx upgrade <package_name> |
升级指定工具到最新版本。 |
pipx upgrade-all |
升级所有通过 pipx 安装的工具到最新版本。 |
pipx ensurepath |
检查并确保 pipx 安装的工具路径添加到 $PATH 环境变量中。 |
pipx environment <package_name> |
查看指定工具的虚拟环境详细信息。 |
pipx runpip <package_name> <command> |
在工具的虚拟环境中直接运行 pip 命令。 |
pipx uninstall-all |
卸载所有通过 pipx 安装的工具及其虚拟环境(慎用)。 |
pipx --version |
查看 pipx 的版本号。 |
和 pip 区别
特性 | pip | pipx |
---|---|---|
用途 | 用于安装 Python 库或命令行应用程序,可以安装带 entry points 的库 | 专门用于安装和管理 Python 命令行工具,每个工具都在隔离的虚拟环境中运行 |
虚拟环境 | 不自动创建虚拟环境,需要手动使用 venv 或 virtualenv 创建 |
自动为每个安装的工具创建隔离的虚拟环境,避免依赖冲突 |
全局命令 | 安装的包通常是库,需要在 Python 代码中导入使用 | 安装的命令行工具可以全局调用,无需激活虚拟环境 |
依赖管理 | 依赖可能会影响全局 Python 环境或其他项目 | 依赖管理在隔离环境中进行,不会影响系统或其他项目 |
安装命令 | 使用 pip install package_name 命令安装包 |
使用 pipx install package_name 命令安装命令行工具 |
升级和卸载 | 需要手动管理包的升级和卸载 | 提供简单的命令来升级所有工具或卸载特定工具 |
与 PyPI 集成 | 直接从 PyPI 安装包 | 也从 PyPI 安装包,但专注于命令行工具 |
用户权限 | 可能需要管理员权限来安装全局包 | 通常不需要管理员权限,可以作为普通用户操作 |
临时执行 | 不支持临时执行环境 | 支持通过 pipx run 在临时环境中运行应用程序,无需安装 |
多版本管理 | 需要手动管理不同版本的包 | 自动处理不同版本的工具和它们的依赖,无需手动干预 |
跨平台支持 | 支持多个平台,但可能需要不同的包管理器 | 跨平台支持,包括 Linux、macOS 和 Windows |
常用指令
列出目录内容
bypy list [远程目录]
默认显示百度网盘 /apps(就是“我的应用数据”)/bypy 目录下的所有文件。
例如: bypy list / 列出根目录内容,不加这个/,也是默认根目录
bypy会在你的百度网盘里的这个目录里,我的应用数据/bypy/下面,所以如果你要把网盘的内容通过bypy放到服务器,需要现在网盘里把数据先移到bypy的目录下。同理,这里上传下载对应的目录都是我的应用数据/bypy/这里路径下。
上传文件或目录
bypy upload <本地路径> [远程目录]
这是从云服务器上传文件到百度网盘。
测试:
1 | bypy upload /root/data/bypy/1.txt /测试 |
下载文件或目录
bypy downfile
- 功能:下载远程的单个文件。
- 用法:
bypy downfile <remotefile> [localpath]
remotefile
:百度云上的目标文件路径(从应用根目录开始)。localpath
:本地存储路径:- 如果以
/
或\
结尾,表示下载到指定的本地目录。 - 如果是已存在的本地目录,也表示目标是该目录。
- 如果未指定,则默认存储在当前目录
.
。 - 如果是一个新的路径(非目录),则表示存储为指定的文件名。
- 如果以
- 特点:
- 专用于下载单个文件。
- 提供了流式处理的能力,可以通过
mkfifo
管道结合omxplayer
等工具直接播放流媒体。
bypy downdir
- 功能:递归下载远程的目录。
- 用法:
bypy downdir [remotedir] [localdir]
remotedir
:百度云上的目标目录路径(从应用根目录开始)。如果未指定,则默认是百度云的根目录。localdir
:本地目标目录。如果未指定,默认为当前目录。
- 特点:
- 专门用于下载整个目录,包括目录中的所有子目录和文件。
- 只能下载目录,不支持单个文件的操作。
bypy download
- 功能:根据远程路径(文件或目录)智能下载文件或目录。
- 用法:
bypy download [remotepath] [localpath]
remotepath
:百度云上的目标路径,可以是文件也可以是目录。如果未指定,默认是百度云的根目录。localpath
:本地目标路径。如果未指定,默认是当前目录。
- 特点:
- 既支持文件下载,也支持目录递归下载。
- 根据目标类型自动决定下载逻辑(文件/目录)。
全部指令
显示使用帮助和所有命令(英文):bypy
命令 | 描述 |
---|---|
help <command> |
显示指定命令的帮助信息 |
cdl_add <source_url> [save_path] [timeout] |
添加离线下载任务 |
cdl_addmon <source_url> [save_path] [timeout] |
添加并监控离线下载任务 |
cdl_cancel <task_id> |
取消离线下载任务 |
cdl_list |
列出所有离线下载任务 |
cdl_query <task_ids> |
查询离线下载任务 |
cleancache |
清除无效的哈希缓存 |
combine <remotefile> [localfile] [md5s] |
合并文件切片 |
compare [remotedir] [localdir] |
比较远程目录和本地目录 |
copy/cp <from> <to> |
远程复制文件/目录 |
delete/remove/rm <remotepath> |
删除远程文件/目录 |
downdir [remotedir] [localdir] |
递归下载远程目录 |
downfile <remotefile> [localpath] |
下载远程文件 |
download [remotepath] [localpath] |
智能下载文件或目录 |
dumpcache |
显示文件哈希缓存 |
list/ls [remotepath] [format] [sort] [order] |
列出远程目录内容 |
listrecycle [start] [limit] |
列出回收站内容 |
meta <remotepath> [format] |
获取远程文件/目录信息 |
mkdir <remotedir> |
创建远程目录 |
move/mv/rename/ren <from> <to> |
远程移动文件/目录 |
quota/info |
显示云存储配额 |
refreshtoken |
刷新访问 token |
restore <remotepath> |
从回收站恢复文件 |
search <keyword> [remotepath] [recursive] |
搜索远程文件 |
stream <remotefile> <localpipe> [format] [chunk] |
流式处理远程文件(如视频/音频) |
syncdown [remotedir] [localdir] [deletelocal] |
从远程同步到本地目录 |
syncup [localdir] [remotedir] [deleteremote] |
从本地同步到远程目录 |
upload [localpath] [remotepath] [ondup] |
上传文件或目录 |
whoami |
显示用户信息 |