曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4865|回复: 0
打印 上一主题 下一主题

使用 curl 来管理百度网盘

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2013-11-4 20:24:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
百度网盘是开放 API 的,获取这些 API 首先需要加入百度开发者,其网址为:http://developer.baidu.com/dev#/create

接着,创建任意一个应用,其目的是为了获取 API Key 并开通其权限,如下图所示:

如右侧红色方框中,状态为开启的表示可以使用该 API 服务权限已经开通。开通的方法是,勾选相应的 API服务,然后点击页面上方的“开启”即可。

百度网盘属于个人云存储服务(PCS),它的说明文档位于:http://developer.baidu.com/wiki/index.php?title=docs/pcs

通过第三方应用操作网盘,一个关键是获得 Access Token (访问令牌),该令牌有效期为一个月,但是可以在到期时刷新请求从而为令牌续期。获取令牌有 5 种方式,这里选择 "Device" 方式(见说明文档)。

现在假设已经获得了 API_Key,下面说明每一个步骤:

1. 获取 User code 和 Device Code :
curl -k -L -d "client_id=&response_type=device_code&scope=basic,netdisk"  "https://openapi.baidu.com/oauth/2.0/device/code"

其中, 就是你创建应用时,百度给你的 API_Key 。在发出该请求后,你会得到一个 JSON 文本:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
        "device_code":"2044c7d4013744b821ad9a1e0492b9f2",
        "user_code":"6udzte26",
        "verification_url":"https:\/\/openapi.baidu.com\/oauth\/2.0\/device",
        "qrcode_url":"http:\/\/openapi.baidu.com\/device\/qrcode\/6c6a8afee394f99e55eb25858\/2c885vjk",
        "expires_in":1800,
        "interval":5
}

2. 进行设备授权。用浏览器打开网址 https://openapi.baidu.com/device ,然后填入上面得到的 user_code ,此举的目的是授权“设备”(程序)访问你的网盘(当然必须先登录网盘),完后会看到提示:


3. 接着使用上面获得的 device_code 以获取 Access token :
curl -k -L -d "grant_type=device_token&code=&client_id=&client_secret=" "https://openapi.baidu.com/oauth/2.0/token"

其中  是上面获得设备码;Secret Key 也是在创建应用时由系统分配。如果执行成功,那么会获得含有 Access token 及 refresh token 的 JSON 文本:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
    "access_token": "1.a6b7dbd428f731035f771b8d15063f61.86400.1292922000-2346678-124328",
    "expires_in": 86400,
    "refresh_token": "2.385d55f8615fdfd9edb7c4b5ebdc3e39.604800.1293440400-2346678-124328",
    "scope": "basic email",
    "session_key": "ANXxSNjwQDugf8615OnqeikRMu2bKaXCdlLxn",
    "session_secret": "248APxvxjCZ0VEC43EYrvxqaK4oZExMB",
}

4. 上面说过,Access token 的有效期是 30 天,过期后可以通过刷新 refresh token 来为 Access token 续期。那下面就来操作网盘,比如要获取网盘的容量:
[beyes@groad baidu_pan]$ curl -k -L "https://pcs.baidu.com/rest/2.0/pcs/quota?method=info&access_token=3.9843a82ece6459badf07bb5b93ee358a.2592000.1386148691.1629633624-1651105"
{"quota":3637078130688,"used":404325764959,"request_id":2584381413}

返回信息中的 quota 就是磁盘配额,即网盘的容量,以字节为单位,上面算下来大约是 3T,这是百度网盘在网盘大战时做活动搞的。

5. 可以试着上传一个文件:
[beyes@groad baidu_pan]$ curl -k -L -F "file=@tmp.cc" "https://c.pcs.baidu.com/rest/2.0/pcs/file?method=upload&access_token=3.9843a82ece6459badf07bb5b93ee358a.2592000.1386148691.1629633624-1651105&path=/apps/BDP/tmp.cc"
{"fs_id":3970707120,"path":"\/apps\/BDP\/tmp.cc","ctime":1383560072,"mtime":1383560072,"md5":"f1849aa41bef1f013999cbd6d318ca0f","size":635,"request_id":3943963738}

这样的返回结果表明是成功的。我们可以通过百度网盘的网页客户端观察到这一点:
当然也可以调用列出文件的 API 来查看:
[beyes@groad baidu_pan]$ curl -k -L "https://pcs.baidu.com/rest/2.0/pcs/file?method=list&access_token=3.9843a82ece6459badf07bb5b93ee358a.2592000.1386148691.1629633624-1651105&path=/apps/BDP/"
{"list":[{"fs_id":3970707120,"path":"\/apps\/BDP\/tmp.cc","ctime":1383560072,"mtime":1383560072,"md5":"f1849aa41bef1f013999cbd6d318ca0f","size":635,"isdir":0}],"request_id":1376296270}



需要注意的是,文件上传只能位于网盘的“我的应用数据”这个文件夹的子文件中,而不能是其它地方。实际上,这个“我的应用数据”文件夹就是 apps,你可以在网盘客户端中尝试新建名为 apps 的文件夹,这不会成功。

6. 下载文件
[beyes@groad baidu_pan]$ curl -k -O "https://d.pcs.baidu.com/rest/2.0/pcs/file?method=download&access_token=3.9843a82ece6459badf07bb5b93ee358a.2592000.1386148691.1629633624-1651105&path=/apps/BDP/tmp.cc"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
105   635  105   635    0     0    346      0  0:00:01  0:00:01 --:--:--   775
[beyes@groad baidu_pan]$ ls
tmp.cc


更多的 API 调用请参考 API 说明文档。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-4-29 05:15 , Processed in 0.081256 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表