BaiduPCS API & App 百度网盘客户端

Overview

BaiduPCS-Py

PyPI version Build

A BaiduPCS API and An App

BaiduPCS-Py 是百度网盘 pcs 的非官方 api 和一个命令行运用程序。

也是 https://github.com/PeterDing/iScript/blob/master/pan.baidu.com.py 的重构版。

安装

需要 Python 版本大于或等于 3.7

pip3 install BaiduPCS-Py

API

BaiduPCS-Py 的百度网盘 API 只依赖 requests,方便用户开发自己的运用。

from baidupcs_py.baidupcs import BaiduPCSApi

api = BaiduPCSApi(bduss=bduss, cookies=cookies)

用法

BaiduPCS-Py --help

命令别名

可以用下面的命令别名代替原来的命令名。

别名 原名
w who
uu updateuser
su su
ul userlist
ua useradd
ek encryptkey
ud userdel
l ls
f search
md mkdir
mv move
rn rename
cp copy
rm remove
d download
p play
u upload
sn sync
S share
sl shared
cs cancelshared
s save
a add
t tasks
ct cleartasks
cct canceltasks
sv server

添加用户

BaiduPCS-Py 目前不支持用帐号登录。需要使用者在 pan.baidu.com 登录后获取 cookies 和其中的 bduss 值,并用命令 useradd 为 BaiduPCS-Py 添加一个用户。

使用者可以用下面的方式获取用户的 cookies 和 bduss 值。

  1. 登录 pan.baidu.com
  2. 打开浏览器的开发者工具(如 Chrome DevTools)。
  3. 然后选择开发者工具的 Network 面板。
  4. 在登录后的页面中任意点开一个文件夹。
  5. 在 Network 面板中找到 list?.... 一行,然后在右侧的 Headers 部分找到 Cookie: 所在行,复制 Cookie: 后的所有内容作为 cookies 值,其中的 BDUSS=...;... (没有最后的字符;)作为 bduss 值。

cookies

现在找到了 cookies 和 bduss 值,我们可以用下面的命令添加一个用户。

交互添加:

BaiduPCS-Py useradd

或者直接添加:

BaiduPCS-Py useradd --cookies "cookies 值" --bduss "bduss 值"

你也可以只添加 bduss,省去 cookies (或 cookies 中没有 STOKEN 值),但这会让你无发使用 sharesave 命令来转存其他用法的分享文件。

BaiduPCS-Py 支持多用户,你只需一直用 useradd 来添加用户即可。

设置文件加密密钥和盐

BaiduPCS-Py 支持“无感的”文件加密。

BaiduPCS-Py 可以加密上传文件,在下载的时候自动解密,让使用者感觉不到加密解密的过程。

如果使用者需要将保密文件上传至百度网盘保存,可以使用这个方法。即使帐号被盗,攻击者也无法还原文件内容。

BaiduPCS-Py 支持以下加密方法:

  • Simple 一种简单的加密算法。根据密钥生成一个字节对照表来加密解密文件。 速度快,但不安全,不建议加密重要文件。 因为这种算法加解密不需要知道上下文信息,所以,下载时支持分段下载,如果是媒体文件则支持拖动播放。 推荐用于加密不重要的媒体文件。
  • ChaCha20 工业级加密算法,速度快,推荐用于加密重要文件。不支持分段下载。
  • AES265CBC 工业级加密算法,推荐用于加密重要文件。不支持分段下载。

注意:用命令 encryptkey 设置的密钥和盐只是为当前用户的。

为当前用户设置加密密钥和盐:

交互添加:

BaiduPCS-Py encryptkey

或者直接添加:

BaiduPCS-Py encryptkey --encrypt-key 'my-encrypt-key' --salt 'some-salt'

上传并加密文件:

上传和同步文件时只需要指定加密算法就可。如果不指定就不加密。

# 默认使用上面设置的 `encrypt-key`
BaiduPCS-Py upload some-file.mp4 some-dir/ /to/here --encrypt-type AES265CBC

下载并用上面设置的 encrypt-key 自动解密文件:

BaiduPCS-Py download /to/here/some-file.mp4 /to/here/some-dir/

也可以使用临时的 encrypt-key

BaiduPCS-Py upload some-file.mp4 some-dir/ /to/here --encrypt-type Simple --encrypt-key 'onlyyou'

但在使用临时的 encrypt-key 后,cat、下载和播放这些文件时需要指定 encrypt-key,但不需要指定加密算法,程序会自动检查加密算法:

# 下载
BaiduPCS-Py download /to/here/some-file.mp4 /to/here/some-dir/  --encrypt-key 'onlyyou'

# 开启本地服务并播放
BaiduPCS-Py play /to/here/some-file.mp4 --encrypt-key 'onlyyou' --use-local-server

显示当前用户的密钥和盐:

BaiduPCS-Py who --show-encrypt-key

BaiduPCS-Py 下载时默认会解密文件,如果想要下载但不解密文件,需要加 --no-decrypt

BaiduPCS-Py download some-file --no-decrypt

显示当前用户的信息

BaiduPCS-Py who

或者:

BaiduPCS-Py who user_id

指明显示用户 id 为 user_id 的用户信息。

选项

Option Description
-K, --show-encrypt-key 显示加密密钥

更新用户信息

默认更新当前用户信息。

BaiduPCS-Py updateuser

也可指定多个 user_id

BaiduPCS-Py updateuser user_id

显示所有用户

BaiduPCS-Py userlist

切换当前用户

BaiduPCS-Py su

删除一个用户

BaiduPCS-Py userdel

文件操作

BaiduPCS-Py 操作网盘中的文件可以使用文件的绝对路径或相对路径(相对与当前目录 pwd)。

每一个用户都有自己的当前工作目录(pwd),默认为 / 根目录。

使用者可以用 cd 命令来切换当前的工作目录(pwd)。

下面所有涉及网盘路径的命令,其中如果网盘路径用的是相对路径,那么是相对于当前工作目录(pwd)的。 如果是网盘路径用的是绝对路径,那么就是这个绝对路径。

显示当前工作目录

BaiduPCS-Py pwd

切换当前工作目录

切换到绝对路径:

BaiduPCS-Py cd /to/some/path

切换到相对路径:

# 切换到 (pwd)/../path
BaiduPCS-Py cd ../path

列出网盘路径下的文件

BaiduPCS-Py ls [OPTIONS] [REMOTEPATHS]...

BaiduPCS-Py ls /absolute/path

# or
BaiduPCS-Py ls relative/path

选项

Option Description
-r, --desc 逆序排列文件
-n, --name 依名字排序
-t, --time 依时间排序
-s, --size 依文件大小排序
-R, --recursive 递归列出文件
-I, --include TEXT 筛选包含这个字符串的文件
--include-regex, --IR TEXT 筛选包含这个正则表达式的文件
-E, --exclude TEXT 筛选 包含这个字符串的文件
--exclude-regex, --ER TEXT 筛选 包含这个正则表达式的文件
-f, --is-file 筛选 目录文件
-d, --is-dir 筛选目录文件
--no-highlight, --NH 取消匹配高亮
-S, --show-size 显示文件大小
-D, --show-date 显示文件创建时间
-M, --show-md5 显示文件 md5
-A, --show-absolute-path 显示文件绝对路径

搜索文件

搜索包含 keyword 的文件

BaiduPCS-Py search [OPTIONS] KEYWORD [REMOTEDIR]

# 在当前工作目录中搜索
BaiduPCS-Py search keyword

# or
BaiduPCS-Py search keyword /absolute/path

# or
BaiduPCS-Py search keyword relative/path

选项

Option Description
-R, --recursive 递归搜索文件
-I, --include TEXT 筛选包含这个字符串的文件
--include-regex, --IR TEXT 筛选包含这个正则表达式的文件
-E, --exclude TEXT 筛选 包含这个字符串的文件
--exclude-regex, --ER TEXT 筛选 包含这个正则表达式的文件
-f, --is-file 筛选 目录文件
-d, --is-dir 筛选目录文件
--no-highlight, --NH 取消匹配高亮
-S, --show-size 显示文件大小
-D, --show-date 显示文件创建时间
-M, --show-md5 显示文件 md5

显示文件内容

BaiduPCS-Py cat [OPTIONS] REMOTEPATH

选项

Option Description
-e, --encoding TEXT 文件编码,默认自动解码
--no-decrypt, --ND 不解密
--encrypt-key, --ek TEXT 加密密钥,默认使用用户设置的

创建目录

BaiduPCS-Py mkdir [OPTIONS] [REMOTEDIRS]...

选项

Option Description
-S, --show 显示目录

移动文件

移动一些文件到一个目录中。

BaiduPCS-Py move [OPTIONS] [REMOTEPATHS]... REMOTEDIR

选项

Option Description
-S, --show 显示结果

文件重命名

BaiduPCS-Py rename [OPTIONS] SOURCE DEST

选项

Option Description
-S, --show 显示结果

拷贝文件

拷贝一些文件到一个目录中。

BaiduPCS-Py move [OPTIONS] [REMOTEPATHS]... REMOTEDIR

选项

Option Description
-S, --show 显示结果

删除文件

BaiduPCS-Py remove [OPTIONS] [REMOTEPATHS]...

下载文件

BaiduPCS-Py download [OPTIONS] [REMOTEPATHS]...

选项

Option Description
-o, --outdir TEXT 指定下载本地目录,默认为当前目录
-R, --recursive 递归下载
-f, --from-index INTEGER 从所有目录中的第几个文件开始下载,默认为 0(第一个)
-I, --include TEXT 筛选包含这个字符串的文件
--include-regex, --IR TEXT 筛选包含这个正则表达式的文件
-E, --exclude TEXT 筛选 不 包含这个字符串的文件
--exclude-regex, --ER TEXT 筛选 不 包含这个正则表达式的文件
-s, --concurrency INTEGER 下载同步链接数,默认为 5。数子越大下载速度越快,但是容易被百度封锁
-k, --chunk-size TEXT 同步链接分块大小
-q, --quiet 取消第三方下载应用输出
--out-cmd, --OC 输出第三方下载应用命令
-d, --downloader [ me | aget_py | aget_rs | aria2 ] 指定下载应用

默认为 me (BaiduPCS-Py 自己的下载器,支持断续下载)
me 使用多文件并发下载。

除 me 外,其他下载器,不使用多文件并发下载,使用一个文件多链接下载。
如果需要下载多个小文件推荐使用 me,如果需要下载少量大文件推荐使用其他下载器。对于 SVIP 用户,用那个下载器都很快。

aget_py (https://github.com/PeterDing/aget) 默认安装
aget_rs (下载 https://github.com/PeterDing/aget-rs/releases)
aria2 (下载 https://github.com/aria2/aria2/releases)
--encrypt-key, --ek TEXT 加密密钥,默认使用用户设置的

播放媒体文件

BaiduPCS-Py play [OPTIONS] [REMOTEPATHS]...

注意: 大于 100MB 的媒体文件无法直接播放,需要加 -s 使用本地服务器播放。

选项

Option Description
-R, --recursive 递归播放
-f, --from-index INTEGER 从所有目录中的第几个文件开始播放,默认为 0(第一个)
-I, --include TEXT 筛选包含这个字符串的文件
--include-regex, --IR TEXT 筛选包含这个正则表达式的文件
-E, --exclude TEXT 筛选 不 包含这个字符串的文件
--exclude-regex, --ER TEXT 筛选 不 包含这个正则表达式的文件
--player-params, --PP TEXT 第三方播放器参数
-m, --m3u8 获取 m3u8 文件并播放
-q, --quiet 取消第三方播放器输出
--shuffle, --sf 随机播放
--out-cmd, --OC 输出第三方播放器命令
-p, --player [mpv] 指定第三方播放器

默认为 mpv (https://mpv.io)
-s, --use-local-server 使用本地服务器播放。大于 100MB 的媒体文件无法直接播放,需要使用本地服务器播放
--encrypt-key, --ek TEXT 加密密钥,默认使用用户设置的

上传文件

上传一些本地文件或目录到网盘目录。

上传过程中,按 “p” 可以暂停或继续上传。

BaiduPCS-Py upload [OPTIONS] [LOCALPATHS]... REMOTEDIR

选项

Option Description
--encrypt-key, --ek TEXT 加密密钥,默认使用用户设置的
-e, --encrypt-type [No | Simple | ChaCha20 | AES265CBC] 文件加密方法,默认为 No 不加密
-w, --max-workers INTEGER 同时上传文件数
--no-ignore-existing, --NI 上传已经存在的文件
--no-show-progress, --NP 不显示上传进度

同步本地目录到远端

同步本地目录到远端。

如果本地文件 md5 和远端不同则上传文件。对于本地不存在的文件但远端存在则删除远端文件。

BaiduPCS-Py sync [OPTIONS] LOCALDIR REMOTEDIR

选项

Option Description
--encrypt-key, --ek TEXT 加密密钥,默认使用用户设置的
-e, --encrypt-type [No | Simple | ChaCha20 | AES265CBC] 文件加密方法,默认为 No 不加密
-w, --max-workers INTEGER 同时上传文件数
--no-show-progress, --NP 不显示上传进度

分享文件

注意:使用这个命令需要 cookies 中含有 STOKEN 值。

BaiduPCS-Py share [OPTIONS] [REMOTEPATHS]...

选项

Option Description
-p, --password TEXT 设置秘密,4 个字符。默认没有秘密

列出分享链接

BaiduPCS-Py shared

选项

Option Description
-S, --show-all 显示所有分享的链接,默认只显示有效的分享链接

取消分享链接

BaiduPCS-Py cancelshared [OPTIONS] [SHARE_IDS]...

保存其他用户分享的链接

注意:使用这个命令需要 cookies 中含有 STOKEN 值。

保存其他用户分享的链接到远端目录。

BaiduPCS-Py save [OPTIONS] SHARED_URL REMOTEDIR

选项

Option Description
-p, --password TEXT 链接密码,如果没有不用设置
--no-show-vcode, --NV 不显示验证码,如果需要验证码则报错

添加离线下载任务

BaiduPCS-Py add [TASK_URLS]... REMOTEDIR

列出离线下载任务

# 列出所有离线下载任务
BaiduPCS-Py tasks

# 也可列出给定id的任务。
BaiduPCS-Py tasks [TASK_IDS]...

清除已经下载完和下载失败的任务

BaiduPCS-Py cleartasks

取消下载任务

BaiduPCS-Py canceltasks [TASK_IDS]...

删除所有离线下载任务

BaiduPCS-Py purgetasks

选项

Option Description
--yes 确定直接运行

开启 HTTP 服务

在远端 ROOT_DIR 目录下开启 HTTP 服务。

ROOT_DIR 默认为 /

BaiduPCS-Py BaiduPCS-Py server [OPTIONS] [ROOT_DIR]

如果需要设置认证,使用下面的选项设置用户名和密钥:

BaiduPCS-Py BaiduPCS-Py server [ROOT_DIR] --username 'foo' --password 'bar'

选项

Option Description
-h, --host TEXT 监听 host
-p, --port INTEGER 监听 port
-w, --workers INTEGER 进程数
--encrypt-key, --ek TEXT 加密密钥,默认使用用户设置的
--username TEXT HTTP Basic Auth 用户名
--password TEXT HTTP Basic Auth 密钥
Comments
  • 建议增加 BaiduPCS-Py su  1这样的直接切换用户命令

    建议增加 BaiduPCS-Py su 1这样的直接切换用户命令

    建议增加 BaiduPCS-Py su 1这样的直接切换用户命令

    WARNNING: Please to search the similar bugs, before you report a bug. Don't report a similar bug which existed. 注意:在你提交一份报告前,请先搜索是否存在类似的报告。请勿重复提交内容相同的报告。

    Prerequisites / 报告前提 Before you report a bug, please let the bug to be reproduced at the latest verion of BaiduPCS-Py. 在你提交报告前,请在 BaiduPCS-Py 的最新版本上复现问题。

    At sometimes, there are errors occured by an expired cookie. Before you commit the report, please to check whether cookies are expired. 有时一些错误是由于某个 cookie 超期导致的。在你提交报告前,请先检查你的 cookies 是否超期。

    Describe the bug / 描述 bug A clear and concise description of what the bug is. 请清楚的描述你遇到的问题。

    To Reproduce / 复现问题 Steps to reproduce the behavior:

    1. Do '...'
    2. Do '....'
    3. ...
    4. See error

    按照下面的步骤可以复现问题:

    1. 做 '...'
    2. 做 '...'
    3. ...
    4. 问题出现

    Screenshots / 问题截图 If applicable, add screenshots to help explain your problem.

    Don't show BDUSS and cookies.

    如果可能,请附加问题截图。

    不要出现 BDUSScookies

    Envrionment / 运行环境

    • OS: [e.g. Windows]
    • Python [e.g. Python3.8]
    • BaiduPCS-Py Version [e.g. 0.6.9]

    Runing log / 运行日志 Please follow steps to paste the content of file ~/.baidupcs-py/running.log.

    1. Remove the file ~/.baidupcs-py/running.log if it exists.
    2. Run the command where the bug occurs with envrionment variable LOG_LEVEL=DEBUG. e.g. LOG_LEVEL=DEBUG BaiduPCS-Py upload /abc /
    3. Paste the content of file ~/.baidupcs-py/running.log after the bug occurs.

    Don't show BDUSS and cookies.

    请按照下面的步骤贴出运行日志 ~/.baidupcs-py/running.log 中的内容。

    1. 删除 ~/.baidupcs-py/running.log,如果存在。
    2. 在问题发生的命令前加入环境变量 LOG_LEVEL=DEBUG。 例如:LOG_LEVEL=DEBUG BaiduPCS-Py upload /abc /
    3. 在问题出现后,贴出 ~/.baidupcs-py/running.log 中的内容。

    不要出现 BDUSScookies

    Additional context / 补充内容 Add any other context about the problem here. 在这里增加补充内容。

    new-feature 
    opened by ldj46118 8
  • Building wheel for BaiduPCS-Py (PEP 517): finished with status 'error'

    Building wheel for BaiduPCS-Py (PEP 517): finished with status 'error'

    安装提示错误 Building wheel for BaiduPCS-Py (PEP 517): started Building wheel for BaiduPCS-Py (PEP 517): finished with status 'error' Failed to build BaiduPCS-Py

    opened by ldj46118 8
  • 下载没速度

    下载没速度

    下载命令

    (Baiduyun) ➜  test BaiduPCS-Py download ./1 -R -o ./ --no-decrypt
    (v0.5.1) System ERROR: AutoDecryptRequest - Server does not support `Range` head
    ⠦ 1/图包.part1.rar.tmp ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0% • 0/100 bytes • ? • -:--:--
    
    

    用户配置

    (Baiduyun) ➜  samples BaiduPCS-Py ul
     Index   Recent   User Id      User Name   Quota           SVIP   VIP   pwd 
    ────────────────────────────────────────────────────────────────────────────
     1       ✔        3225735228   Mh00mg3     461.3 GB/6 TB   ✔      ✔     /   
    
    bug 
    opened by cryzlasm 8
  • 保存分享出错

    保存分享出错

    感谢大佬分享这么给力的工具,辛苦。 我在用保存共享链接的时候遇到错误: BaiduPCS-Py save -p s9vd https://pan.baidu.com/s/1adS0qazDDcDjx7NP_HNLJQ / ERROR: BaiduPCSError: BaiduPCS._request

    尝试了几个链接都有这问题,谢谢

    bug 
    opened by bsdcpp 8
  • 关于save操作,--no-show-vcode, --NV 	不显示验证码,如果需要验证码则报错

    关于save操作,--no-show-vcode, --NV 不显示验证码,如果需要验证码则报错

    请问已经升级到最新版,save操作还是提示请输入验证码,如果规避这个验证码?他的触发机制是啥呢?

    WARNNING: Please to search the similar bugs, before you report a bug. Don't report a similar bug which existed. 注意:在你提交一份报告前,请先搜索是否存在类似的报告。请勿重复提交内容相同的报告。

    Prerequisites / 报告前提 Before you report a bug, please let the bug to be reproduced at the latest verion of BaiduPCS-Py. 在你提交报告前,请在 BaiduPCS-Py 的最新版本上复现问题。

    At sometimes, there are errors occured by an expired cookie. Before you commit the report, please to check whether cookies are expired. 有时一些错误是由于某个 cookie 超期导致的。在你提交报告前,请先检查你的 cookies 是否超期。

    Describe the bug / 描述 bug A clear and concise description of what the bug is. 请清楚的描述你遇到的问题。

    To Reproduce / 复现问题 Steps to reproduce the behavior:

    1. Do '...'
    2. Do '....'
    3. ...
    4. See error

    按照下面的步骤可以复现问题:

    1. 做 '...'
    2. 做 '...'
    3. ...
    4. 问题出现

    Screenshots / 问题截图 If applicable, add screenshots to help explain your problem.

    Don't show BDUSS and cookies.

    如果可能,请附加问题截图。

    不要出现 BDUSScookies

    Envrionment / 运行环境

    • OS: [e.g. Windows]
    • Python [e.g. Python3.8]
    • BaiduPCS-Py Version [e.g. 0.6.9]

    Runing log / 运行日志 Please follow steps to paste the content of file ~/.baidupcs-py/running.log.

    1. Remove the file ~/.baidupcs-py/running.log if it exists.
    2. Run the command where the bug occurs with envrionment variable LOG_LEVEL=DEBUG. e.g. LOG_LEVEL=DEBUG BaiduPCS-Py upload /abc /
    3. Paste the content of file ~/.baidupcs-py/running.log after the bug occurs.

    Don't show BDUSS and cookies.

    请按照下面的步骤贴出运行日志 ~/.baidupcs-py/running.log 中的内容。

    1. 删除 ~/.baidupcs-py/running.log,如果存在。
    2. 在问题发生的命令前加入环境变量 LOG_LEVEL=DEBUG。 例如:LOG_LEVEL=DEBUG BaiduPCS-Py upload /abc /
    3. 在问题出现后,贴出 ~/.baidupcs-py/running.log 中的内容。

    不要出现 BDUSScookies

    Additional context / 补充内容 Add any other context about the problem here. 在这里增加补充内容。

    opened by ldj46118 7
  • 保存分享报错

    保存分享报错

    已经升级最新版本,save 还是会出现报错情况
    (v0.6.11) ERROR: BaiduPCSError: error_code: 105, message: 啊哦,链接错误没找到文件,请打开正确的分享链接 BaiduPCS-Py save -p nefb https://pan.baidu.com/s/1CrpqjwIgqUVT_bBCV0aWXw /

    opened by 451835239 6
  • 转存分享链接报错 (v0.6.9) System ERROR:

    转存分享链接报错 (v0.6.9) System ERROR:

    在windows试了下登录,创建分享,查看文件夹都没问题,但是转存的时候不成功,报 (v0.6.9) System ERROR: 命令类似于: BaiduPCS-Py save --password mfgq https://pan.baidu.com/s/1ajltWp8Bu0dXU_NE10eC4g / python 是 3.9.2版本, baidupcs-py是0.6.9

    opened by dollzcx 6
  • 使用BaiduPCS-Py,分享文件时遇到错误

    使用BaiduPCS-Py,分享文件时遇到错误

    ` from baidupcs_py.baidupcs import BaiduPCSApi

    api = BaiduPCSApi(bduss=bduss, cookies=cookies)

    print(api.share('/997.zip')) `

    /usr/local/lib/python3.7/dist-packages/baidupcs_py/baidupcs/errors.py in check(*args, **kwargs) 148 149 if err: --> 150 raise err 151 return info 152 BaiduPCSError: error_code: -6, message: 请重新登录

    已经确定cookie中有STOKEN 值 在上传成功后,进行分享,但是会出现‘请重新登录’提示

    opened by aadd445aadda 6
  • SVIP 下载速度慢的问题

    SVIP 下载速度慢的问题

    从昨日下午五点过后无论用 me 还是 aget_py 下载文件的速度都非常慢,试过调 -s 和 -k 各种组合,但是最好的也就是一开始几秒能达到 10MB/s 左右,然后就又降到 <400KB/s。

    账号是svip4,在手机app上实测能跑满带宽,应该没有黑号,并且我注册了个新号并开通了svip,在 BaiduPCS-Py 里下载速度结果还是一样。在另一个 Linux 服务器(不同IP)上使用 BaiduPCS-Py 下载,两个账号的速度也一样上不去。

    然后我用 BaiduPCS-Go 下载文件,2个 Linux 服务器和我的 win10 电脑的结果,全部下载速度和 BaiduPCS-Py 一样,都跑不上去。难道是 PCS 限速了吗?

    bug 
    opened by Pandaft 5
  • 调用上传接口上传大于2G的文件,很大概率会13%左右出现远程主机强迫关闭了一个现有的连接。使用的最新版

    调用上传接口上传大于2G的文件,很大概率会13%左右出现远程主机强迫关闭了一个现有的连接。使用的最新版

    WARNNING: Please to search the similar bugs, before you report a bug. Don't report a similar bug which existed. 注意:在你提交一份报告前,请先搜索是否存在类似的报告。请勿重复提交内容相同的报告。

    Prerequisites / 报告前提 Before you report a bug, please let the bug to be reproduced at the latest verion of BaiduPCS-Py. 在你提交报告前,请在 BaiduPCS-Py 的最新版本上复现问题。

    At sometimes, there are errors occured by an expired cookie. Before you commit the report, please to check whether cookies are expired. 有时一些错误是由于某个 cookie 超期导致的。在你提交报告前,请先检查你的 cookies 是否超期。

    Describe the bug / 描述 bug A clear and concise description of what the bug is. 请清楚的描述你遇到的问题。

    To Reproduce / 复现问题 Steps to reproduce the behavior:

    1. Do '...'
    2. Do '....'
    3. ...
    4. See error

    按照下面的步骤可以复现问题:

    1. 做 '...'
    2. 做 '...'
    3. ...
    4. 问题出现

    Screenshots / 问题截图 If applicable, add screenshots to help explain your problem.

    Don't show BDUSS and cookies.

    如果可能,请附加问题截图。

    不要出现 BDUSScookies

    Envrionment / 运行环境

    • OS: [e.g. Windows]
    • Python [e.g. Python3.8]
    • BaiduPCS-Py Version [e.g. 0.6.9]

    Runing log / 运行日志 Please follow steps to paste the content of file ~/.baidupcs-py/running.log.

    1. Remove the file ~/.baidupcs-py/running.log if it exists.
    2. Run the command where the bug occurs with envrionment variable LOG_LEVEL=DEBUG. e.g. LOG_LEVEL=DEBUG BaiduPCS-Py upload /abc /
    3. Paste the content of file ~/.baidupcs-py/running.log after the bug occurs.

    Don't show BDUSS and cookies.

    请按照下面的步骤贴出运行日志 ~/.baidupcs-py/running.log 中的内容。

    1. 删除 ~/.baidupcs-py/running.log,如果存在。
    2. 在问题发生的命令前加入环境变量 LOG_LEVEL=DEBUG。 例如:LOG_LEVEL=DEBUG BaiduPCS-Py upload /abc /
    3. 在问题出现后,贴出 ~/.baidupcs-py/running.log 中的内容。

    不要出现 BDUSScookies

    Additional context / 补充内容 Add any other context about the problem here. 在这里增加补充内容。

    opened by szllzs 4
  • 请问未来有机会添加一个无感知加密文件名的功能吗

    请问未来有机会添加一个无感知加密文件名的功能吗

    项目里面的无感加密功能真的很棒,但是因为不清楚百度是否会审查或者和谐含有特定关键词的文件,或者说有些含有特定字符的文件存在无法上传的情况(比如数据库内一些特定命名的文件或者带emoji的文件等等),所以一直使用的baidupcs-py+encfs的方案,但是这样就没办法实时播放视频了 加密文件名的好处有2个 1、更大程度的保护隐私规避审查 2、加密文件名的同时解决了百度网盘在文件名上对文件命名的限制 为了避免网盘内加密的文件名和正常的文件名的冲突,可以让用户指定特定的文件夹进行文件名加密/解密 如果作者有意实现这个功能,真的万分感谢。要是觉得没有这个必要的化,可以关闭这个issue,打扰了!!

    opened by tobexeon 4
  • urlopen error [SSL: WRONG_VERSION_NUMBER] wrong version number

    urlopen error [SSL: WRONG_VERSION_NUMBER] wrong version number

    您好!最近发现每次递归下载某个文件夹内的文件BaiduPCS-Py download -R -d aget_py /ZYF/,下载几个后会提示错误:

    错误提示为 (v0.7.1) System ERROR: <urlopen error [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1131)>

    请查看~/.baidupcs-py/running.log的内容:

    2022-10-05 12:04:49,463 | DEBUG | download: download: sifters: [], recursive: True, from_index: 0, downloader: Downloader.aget_py, downloadparams: DownloadParams(chunk_size='52428800', concurrency=5, quiet=False), out_cmd: False, has encrypt_password: False 2022-10-05 12:04:49,463 | DEBUG | download: download: remotepaths should be uniq 1 == 1 2022-10-05 12:06:20,760 | DEBUG | download: download: cmd returncode: 0 2022-10-05 12:08:25,249 | DEBUG | download: download: cmd returncode: 0 2022-10-05 12:13:59,939 | DEBUG | download: download: cmd returncode: 0 2022-10-05 12:16:56,021 | DEBUG | download: download: cmd returncode: 0 2022-10-05 12:18:33,029 | DEBUG | download: download: cmd returncode: 0 2022-10-05 12:19:58,436 | DEBUG | download: download: cmd returncode: 0 2022-10-05 12:22:38,378 | DEBUG | download: download: cmd returncode: 0 2022-10-05 12:25:23,799 | DEBUG | download: download: cmd returncode: 0 2022-10-05 12:25:25,414 | DEBUG | app: app: System Error: Traceback (most recent call last): File "/home/jiaa/.conda/envs/baidu/lib/python3.8/urllib/request.py", line 1354, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/home/jiaa/.conda/envs/baidu/lib/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/http/client.py", line 951, in send self.connect() File "/home/jiaa/.conda/envs/baidu/lib/python3.8/http/client.py", line 1425, in connect self.sock = self._context.wrap_socket(self.sock, File "/home/jiaa/.conda/envs/baidu/lib/python3.8/ssl.py", line 500, in wrap_socket return self.sslsocket_class._create( File "/home/jiaa/.conda/envs/baidu/lib/python3.8/ssl.py", line 1040, in _create self.do_handshake() File "/home/jiaa/.conda/envs/baidu/lib/python3.8/ssl.py", line 1309, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1131)

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/app/app.py", line 118, in wrap return func(*args, **kwargs) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/app/app.py", line 176, in wrap return func(*args, **kwargs) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/app/app.py", line 1032, in download _download( File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/commands/download.py", line 414, in download download_dir( File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/commands/download.py", line 344, in download_dir download_dir( File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/commands/download.py", line 332, in download_dir download_file( File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/commands/download.py", line 299, in download_file dlink = api.download_link(remotepath) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/baidupcs/api.py", line 543, in download_link return self._baidupcs.download_link(remotepath, pcs=pcs) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/common/cache.py", line 46, in wrap val = func(*args, **kwargs) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/site-packages/baidupcs_py/baidupcs/pcs.py", line 989, in download_link resp = urllib.request.urlopen(req) # type: ignore File "/home/jiaa/.conda/envs/baidu/lib/python3.8/urllib/request.py", line 222, in urlopen return opener.open(url, data, timeout) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/home/jiaa/.conda/envs/baidu/lib/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/home/jiaa/.conda/envs/baidu/lib/python3.8/urllib/request.py", line 1397, in https_open return self.do_open(http.client.HTTPSConnection, req, File "/home/jiaa/.conda/envs/baidu/lib/python3.8/urllib/request.py", line 1357, in do_open raise URLError(err) urllib.error.URLError: <urlopen error [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1131)>

    2022-10-05 12:25:26,396 | DEBUG | app: app: _teardown: start 2022-10-05 12:25:26,396 | DEBUG | app: app: _teardown: end

    请问是账号的问题还是bug呢,账号是开了VIP的,用百度客户端没有问题。 期待您的回复! 感谢。

    opened by jalatls 2
  • 百度盘自动跳转至新版界面导致无法获取 bdstoken

    百度盘自动跳转至新版界面导致无法获取 bdstoken

    https://github.com/PeterDing/BaiduPCS-Py/blob/6fd6fbc2818e14a5103285298a6c227d8bb0bbb8/baidupcs_py/baidupcs/pcs.py#L153

    访问旧版界面会HTTP 302跳转到新版界面,新版界面的bdstoken 使用单独的HTTP GET请求获取: https://pan.baidu.com/api/gettemplatevariable?clienttype=0&app_id=250528&web=1&fields=[%22bdstoken%22,%22token%22,%22uk%22,%22isdocuser%22,%22servertime%22]

    暂时可以使用 https://pan.baidu.com/disk/home?stayAtHome=true 获取旧版界面。

    opened by kice 0
  • 建议: ls命令的输出格式建议

    建议: ls命令的输出格式建议

    首先就是 ls--csv 开关输出的格式根本就不是csv格式;如果加上了递归输出,什么都不是了。

    --csv开关` 改成输出为合法的csv的格式,而不是tsv(要Tab分割就额外指定)。

    | path (绝对路径) | isdir (是否为目录) | size (大小: 字节) | user(所属用户) | modified (修改时间) | |---------------|------------|-----------|----------|------------------| | /dir/file.txt | False | 123454121 | a_user | 2022/01/23 12:34 |

    括号的中文只是说明这一列的是什么数据;其次可能需要注意下文件名中包含,

    其次额外建议加一个类似win DIR/B 输出,方便重定向到txt文件。

    opened by kice 3
  • 建议: 可以调用百度盘客户端下载网盘文件

    建议: 可以调用百度盘客户端下载网盘文件

    直连虽好,但是直接调用客户端方便很多。下载量大的话我这边比直连稳定很多,并且不需要折腾那么多东西。

    目前我所知有两种情况:

    • 分享页面直接下载。会跳转一个URL来调用yundetectservice.exe,命令行第一个参数调用这个exe客户端就会下载相应文件/文件夹
    • 网盘页点击下载。百度后台RPC本地客户端下载,只需要发送HTTP API请求,客户端就能下载对应文件/文件夹
    opened by kice 0
Owner
Peter Ding
Peter Ding
Cdk-python-crud-app - CDK Python CRUD App

Welcome to your CDK Python project! You should explore the contents of this proj

Shapon Sheikh 1 Jan 12, 2022
Django3 web app that renders OpenWeather API data ☁️☁️

nz-weather For a live build, visit - https://brandonru.pythonanywhere.com/ NZ Openweather API data rendered using Django3 and requests ☀️ Local Run In

Brandon Ru 1 Oct 17, 2021
Weather App using openweathermap API

This is my hobby project used to learn how to use public api for project.In this i used the api of openweathermap to featch the weather details of various city across the globe by giving city name as input.

Subramanya K S 1 Nov 6, 2021
Using multiple API sources, create an app that allows users to filter through random locations based on their temperature range choices.

World_weather_analysis Overview Using multiple API sources, create an app that allows users to filter through random locations based on their temperat

Jason Boyer 2 Sep 16, 2022
An interactive App to play with Spotify data, both from the Spotify Web API and from CSV datasets.

An interactive App to play with Spotify data, both from the Spotify Web API and from CSV datasets.

Caio Lang 3 Jan 24, 2022
Spotify Top Lists - get the current top lists of a user from the Spotify API and display them in a Flask app

Spotify Top Lists This is a simple script that will get the current top lists of a user from the Spotify API and display them in a Flask app. Requirem

Yasin 0 Oct 16, 2022
Official python API for Phish.AI public and private API to detect zero-day phishing websites

phish-ai-api Summary Official python API for Phish.AI public and private API to detect zero-day phishing websites How it Works (TLDR) Essentially we h

Phish.AI 168 May 17, 2022
PRAW, an acronym for "Python Reddit API Wrapper", is a python package that allows for simple access to Reddit's API.

PRAW: The Python Reddit API Wrapper PRAW, an acronym for "Python Reddit API Wrapper", is a Python package that allows for simple access to Reddit's AP

Python Reddit API Wrapper Development 3k Dec 29, 2022
Python API wrapper around Trello's API

A wrapper around the Trello API written in Python. Each Trello object is represented by a corresponding Python object. The attributes of these objects

Richard Kolkovich 904 Jan 2, 2023
PRAW, an acronym for "Python Reddit API Wrapper", is a python package that allows for simple access to Reddit's API.

PRAW: The Python Reddit API Wrapper PRAW, an acronym for "Python Reddit API Wrapper", is a Python package that allows for simple access to Reddit's AP

Python Reddit API Wrapper Development 3k Dec 29, 2022
alpaca-trade-api-python is a python library for the Alpaca Commission Free Trading API.

alpaca-trade-api-python is a python library for the Alpaca Commission Free Trading API. It allows rapid trading algo development easily, with support for both REST and streaming data interfaces

Alpaca 1.5k Jan 9, 2023
Telegram PHub Bot using ARQ Api and Pyrogram. This Bot can Download and Send PHub HQ videos in Telegram using ARQ API.

Tg_PHub_Bot Telegram PHub Bot using ARQ Api and Pyrogram. This Bot can Download and Send PHub HQ videos in Telegram using ARQ API. OS Support All linu

TheProgrammerCat 13 Oct 21, 2022
A python to scratch API connector. Can fetch data from the API and send it back in cloud variables.

Scratch2py Scratch2py or S2py is a easy to use, versatile tool to communicate with the Scratch API Based of scratchclient by Raihan142857 Installation

null 20 Jun 18, 2022
An API wrapper around the pythonanywhere's API.

pyaww An API wrapper around the pythonanywhere's API. The name stands for pythonanywherewrapper. 100% api coverage most of the codebase is documented

null 7 Dec 11, 2022
The Bot provide Hadith API and fetch content via api.hadith.sutanlab.id

Bot Hadith-API on Telegram The Bot provide Hadith API and fetch content via api.hadith.sutanlab.id Built With Python Asynchronous HTTP protocol client

xMan 12 Feb 19, 2022
Async ready API wrapper for Revolt API written in Python.

Mutiny Async ready API wrapper for Revolt API written in Python. Installation Python 3.9 or higher is required To install the library, you can just ru

null 16 Mar 29, 2022
🚀 An asynchronous python API wrapper meant to replace discord.py - Snappy discord api wrapper written with aiohttp & websockets

Pincer An asynchronous python API wrapper meant to replace discord.py ❗ The package is currently within the planning phase ?? Links |Join the discord

Pincer 125 Dec 26, 2022
Deploy a STAC API and a dynamic mosaic tiler API using AWS CDK.

Earth Observation API Deploy a STAC API and a dynamic mosaic tiler API using AWS CDK.

Development Seed 39 Oct 30, 2022
An API Wrapper for Gofile API

Gofile2 from gofile2 import Gofile g_a = Gofile() print(g_a.upload(file="/home/itz-fork/photo.png")) An API Wrapper for Gofile API. About API Gofile

I'm Not A Bot #Left_TG 16 Dec 10, 2022