这次讲解下,百度网盘的api使用方法,一个让我们可以把linux上的文件传到一个强大又免费的空间上。。。
为啥会研究这个?
偶然,一定是偶然。要是想从服务器里面把东西传出来,反正就是把东西搞出来。以前我的方案都是dropbox,但是这东西,速度不咋地,而且很一般的速度。。。具体的应用我就不说了,每个人都有自己的想法,在我看来,他很适合做一个临时的免费的存储空间,速度也很不错的。
这个东西值得用吗?
必须呀。
这是我在linux下的测试报告,上传的速度已经到了5MB左右。。。。
上传文件时的网速的测试!!!
lnmp.py就是我上传的文件,很爽把。。。。 嘿嘿
这个lnmp.py 就是我上传的。。。
首先看看他的使用指南:
基于百度PCS的基本开发流程包括(见下图):
1. 注册百度账号。
2. 登录百度开发者中心,注册成为百度开发者。
【前两个就不说了,自己搞,别问我】
3. 创建应用。
4. 开通PCS API权限。
可以看到咱们创建的应用。
点进去,然后把应用的pcs api 启动下
5. 获取Access_Token。
可以在这调试下
百度给大家提供的api已经是很棒了,尽情的用吧。。。。
http://developer.baidu.com/wiki/index.php?title=docs/pcs/rest/file_data_apis_list
里面已经有大量的说明啦 !!! 典型的rest http的接口。。。
所有的行为操作都要access_token的植入的,不然怎么确定你是不是安全的。。
对于这类的接口,都是大同小异的。。。
都是需要一个临时访问的key。。。。 百度这边叫做access_token !!!
curl -k -L -d "client_id=(key)&response_type=device_code&scope=basic,netdisk" "https://openapi.baidu.com/oauth/2.0/device/code"
curl -k -L -d "grant_type=device_token&code=24539f5e161d056f8f237141a7fd1556&client_id=(key)&client_secret=jrDoGMYof6SPN4WxwYN8PwGg2y9Ecb00" "https://openapi.baidu.com/oauth/2.0/token"
把自己的key替换下就可以了。。。。。
查看容量大小
curl -k -L "https://pcs.baidu.com/rest/2.0/pcs/quota?method=info&access_token=(key)"
上传文件
curl -k -L -F "file=@xia.py" "https://c.pcs.baidu.com/rest/2.0/pcs/file?method=upload&access_token=(key)&path=/apps/netdiskshare/xia.py"
删除文件:
curl -k -L "https://pcs.baidu.com/rest/2.0/pcs/file?method=delete&access_token=\
&path=/apps/netdiskshare/xia.py"
复制文件:
curl -k -L "https://c.pcs.baidu.com/rest/2.0/pcs/file?method=copy&access_token=\
&from=/apps/pcsupload/haiyun.me.tar.gz&to=/apps/pcsupload/www.haiyun.me.tar.gz"
列出目录内文件:
curl -k -L "https://pcs.baidu.com/rest/2.0/pcs/file?method=list&access_token=(key)&path=/apps/netdiskshare/"
下载
curl -k -O "https://d.pcs.baidu.com/rest/2.0/pcs/file?method=download&access_token=(key)&path=/apps/netdiskshare/2.jpg"
百度还提供了好多的语言接口,限于能力,我只看懂了python的。。。
from baidupcs import *
import webbrowser
import hashlib
# 根据自己创建的应用,设置相应的app_key与pcs_dir
app_key = 'app_key'
pcs_dir = 'pcs_dir'
pcs = PCS(app_key)
# webbrowser.open(pcs.access_token_url) # limit grant授权
pcs.authorize('here is access toekn')
# 获取云盘使用情况
info = pcs.quota.info()
print info
print 'quota info: %sM/%sM' % (info.used / 1024 / 1024, info.quota / 1024 / 1024)
# 创建目录
dir_name = 'test'
ret = pcs.file.mkdir(path = '/apps/%s/%s' % (pcs_dir, dir_name))
print 'file.mkdir:', ret
base_dir = '/apps/%s/%s/' % (pcs_dir, dir_name)
# 上传文件
path = 'd:\\test.jpg'
file_data = open(path, 'rb').read()
ret = pcs.file.upload(file = file_data, path = '/apps/%s/%s/test.jpg' % (pcs_dir, dir_name))
print 'file.upload:', ret
# 移动文件(改名)
frm = base_dir + 'test.jpg'
to = base_dir + 'test_to.jpg'
ret = pcs.file.move(_from = frm, to = to)
print ret
官方的一个百度云盘的shell tool工具,貌似是不错,但是不知道为啥用不了,有兴趣的朋友可以试试哈。
http://developer.baidu.com/wiki/index.php?title=docs/cplat/stor/sdk#Shell-Tool
大家可以看看,这边是pdf文档 !!!
http://bcs.duapp.com/cplat-01/bcs%2Fshell-tool%2F%E7%99%BE%E5%BA%A6%E4%BA%91%E5%AD%98%E5%82%A8ShellTool%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C_V1.1.pdf
上传的文件要是过大的话,大家可以用多种方法把大文件拆解下来。。。
head -c1610612736 xiaorui | curl -k -L -H "Host: c.pcs.baidu.com" -F "file=@-" "https://58.217.200.16/rest/2.0/pcs/file?method=upload&access_token=&type=tmpfile"
上传后面的
tail -c+1610612736 xiaorui | curl -k -L -H "Host: c.pcs.baidu.com" -F "file=@-" "https://220.181.164.16/rest/2.0/pcs/file?method=upload&access_token=&type=tmpfile"
也可以用dd的方法, dd if=/dev/zero skip=??? bs=1024000 count=1 of=file1
下面的方式实现了分拆文件的重组。。。。无比的好用 !!!
一个小应用:
直连的下载链接
大家有看懂吗? 一个上传的文件直接可以转成下载的url, 有了公有地址的url,可以直接传给小伙伴们,让他们直接下载就行了。
又是一个全力测试~
文件大小在 1.9G 左右.....
页面上的结果~
获取直连的另一种方法
这个下载地址可以让linux主机批量下载吗? 可以的。。。。把这个复制的连接存放到迅雷里面,可以获取下载的地址,你可以把地址分给别的主机下载。。
已经下载好了,大家look look下吧~
好嘞~
总结:
希望别让百度的人看到了哈,因为做it的人,有的是网络资源,可以随时的搞起。。。 不管怎么说,这东西真是个利器。。。