Permalink
Browse files

修改readme,main函数中增加一个上传文件的调用示例,增加一张图片

  • Loading branch information...
1 parent 304ab2e commit 209c063576e29859ffb065e1b22ac4b60f0806d7 brain.zhang committed Mar 22, 2013
Showing with 124 additions and 98 deletions.
  1. +116 −89 README.rst
  2. BIN cycle.jpg
  3. +8 −9 vdisksdk.py
View
@@ -1,90 +1,117 @@
=====================
-<br>VDiskSDK Introduction
-<br>=====================
-<br>
-<br>:Author: memorybox <memoryboxes@gmail.com>
-<br>
-<br>About VDiskSDK
-<br>----------------
-<br>新浪微盘的API Python版封装。
-<br>具体接口可参见官方文档:http://www.vdisk.me/api/doc
-<br>支持所有接口调用
-<br>
-<br>How to use
-<br>----------------
-<br>1、导入模块
-<br>from vdisksdk VDiskAPIClient
-<br>
-<br>2、创建对象
-<br>client = VDiskAPIClient('username', 'passwd', 'appkey', 'app_secret')
-<br>
-<br>3、获取token
-<br>client.post.auth__get_token()
-<br>
-<br>4、调用接口
-<br>print client.post.dir__get_dirid_with_path(path = '/')
-<br>print client.post.dir__getlist(dir_id = 0)
-<br>
-<br>说明:
-<br>接口的函数方法是同官方文档的url相对应的,例如:
-<br>
-<br>==========================
-<br>获得列表
-<br>
-<br> URL:
-<br> http://openapi.vdisk.me/?m=dir&a=getlist
-<br> 请求方式: POST
-<br> 返回格式: JSON
-<br> 请求参数:
-<br> token: 动态令牌
-<br> dir_id: int 目录id, 为空或为0表示根目录
-<br> 可选参数:
-<br> page: int 当前页码,缺省为1
-<br> pageSize: int 每页条数,缺省为1024,最小为2。小于 2 或大于 1024 时取默认值 1024。
-<br> dologid: 参考dolog机制
-<br>===========================
-<br>这个函数调用请使用client.post.dir__getlist(dir_id = 0)
-<br>对应关系:
-<br>http://openapi.vdisk.me/?m= (dir)&a=(getlist) --> dir__getlist
-<br>
-<br>如上,如果请求方式为GET,则为client.get.XXX
-<br>如果为POST,则为client.post.XXX
-<br>函数命名对应url接口,中间用'__'间隔。
-<br>
-<br>再一个例子:
-<br>接口为
-<br>============================
-<br>通过路径得到目录id
-<br>
-<br> URL:
-<br> http://openapi.vdisk.me/?m=dir&a=get_dirid_with_path
-<br> 请求方式: GET
-<br> 返回格式: JSON
-<br> 请求参数:
-<br> token: 动态令牌
-<br> path: 路径, 格式"/path"
-<br> dologid: 参考dolog机制
-<br>==============================
-<br>应该调用
-<br>client.post.dir__get_dirid_with_path(path = '/')
-<br>
-<br>
-<br>已知问题:
-<br>虽然某些接口说可以支持GET方式,但调用失败,强烈建议都用POST调用
-<br>token会隔15分钟失效,SDK没有保持连接,你必须自己做这个工作
-<br>总体来说,这个SDK仅仅做了一个API Wrapper。!!未经过测试!!
-<br>
-<br>This project was created and lead by memorybox <memoryboxes@gmail.com>.
-<br>
-<br>License
-<br>------------
-<br>
-<br>VDiskSDK is released under BSD license.
-<br>
-<br>-----------
-<br>参考了新浪微博的python sdk实现:
-<br>http://michaelliao.github.com/sinaweibopy/
-<br>非常感谢作者。
-<br>----------------------------------
-<br>update 更正了 上传文档部分的问题 并增加了 upload 方式调用 其它与上面一致
-<br>
+VDiskSDK Introduction
+=====================
+
+
+About VDiskSDK
+----------------
+
+新浪微盘的API Python版封装。
+具体接口可参见官方文档:http://www.vdisk.me/api/doc
+支持所有接口调用
+
+How to use
+----------------
+
+ 1、导入模块
+ from vdisksdk VDiskAPIClient
+
+ 2、创建对象
+ client = VDiskAPIClient('username', 'passwd', 'appkey', 'app_secret')
+
+ 3、获取token
+ client.post.auth__get_token()
+
+ 4、调用接口
+ print client.post.dir__get_dirid_with_path(path = '/')
+ print client.post.dir__getlist(dir_id = 0)
+
+ 说明:
+ 接口的函数方法是同官方文档的url相对应的,例如:
+
+for example
+----------------
+
+ 1.获得列表
+
+ URL:
+ http://openapi.vdisk.me/?m=dir&a=getlist
+ 请求方式: POST
+ 返回格式: JSON
+ 请求参数:
+ token: 动态令牌
+ dir_id: int 目录id, 为空或为0表示根目录
+ 可选参数:
+ page: int 当前页码,缺省为1
+ pageSize: int 每页条数,缺省为1024,最小为2。小于 2 或大于 1024 时取默认值 1024。
+ dologid: 参考dolog机制
+
+ 这个函数调用请使用client.post.dir__getlist(dir_id = 0)
+ 对应关系:
+ http://openapi.vdisk.me/?m= (dir)&a=(getlist) --> dir__getlist
+
+ 如上,如果请求方式为GET,则为client.get.XXX
+ 如果为POST,则为client.post.XXX
+ 函数命名对应url接口,中间用'__'间隔。
+
+ 2.通过路径得到目录id
+
+ URL:
+ http://openapi.vdisk.me/?m=dir&a=get_dirid_with_path
+ 请求方式: GET
+ 返回格式: JSON
+ 请求参数:
+ token: 动态令牌
+ path: 路径, 格式"/path"
+ dologid: 参考dolog机制
+
+ 调用方法:
+ client.post.dir__get_dirid_with_path(path = '/')
+
+ 3.上传文件
+
+ URL:
+ http://openapi.vdisk.me/?m=file&a=upload_file
+ 请求方式: POST, 必须用Multipart/form-data方式
+ 返回格式: JSON
+ 请求参数:
+ token: 动态令牌
+ dir_id: 目录的id, 0为根目录
+ cover: 重名时是否覆盖, yes或no
+ file: 文件
+ dologid: 参考dolog机制
+ 可选参数:
+ callback: 跳转的url, 会传过来msg
+
+ 调用方法:
+ client.upload.file__upload_file(dir_id = 0, file = 'xxx', cover= 'yes')
+
+problem
+----------------
+
+虽然某些接口说可以支持GET方式,但调用失败,强烈建议都用POST调用
+token会隔15分钟失效,SDK没有保持连接,你必须自己做这个工作
+总体来说,这个SDK仅仅做了一个API Wrapper。!!未经过测试!!
+
+
+License
+----------------
+
+VDiskSDK is released under BSD license.
+
+thanks
+----------------
+
+参考了新浪微博的python sdk实现:
+http://michaelliao.github.com/sinaweibopy/
+非常感谢作者。
+
+update
+----------------
+
+update 更正了 上传文档部分的问题 并增加了 upload 方式调用 其它与上面一致
+
+authors
+----------------
+xiyoulaoyuanjia@gmai.com
+memoryboxes@gmail.com
View
BIN cycle.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
@@ -62,7 +62,7 @@ def _get_json_request(req):
def _http_call(client, url, method, authorization, **kw):
params = {}
uploadPa=''
-# send an http request and expect to return a json object if no error.
+ #send an http request and expect to return a json object if no error.
url_ext = '?token=' + client.access_token
params['token'] = client.access_token
http_url = (method == _HTTP_GET) and ('%s%s' %(url ,url_ext)) or ('%s' % (url))
@@ -78,8 +78,8 @@ def _http_call(client, url, method, authorization, **kw):
uploadPa+=" -F token="+params['token']
cmd="curl"+uploadPa+" \""+http_url+"\""
print cmd
- return _get_json_request(os.popen(cmd).read())
-# print body
+ return _get_json_request(os.popen(cmd).read())
+ #print body
else:
params = (method == _HTTP_GET) and None or params
req = (method == _HTTP_GET) and urllib2.Request(http_url) or urllib2.Request(http_url, urllib.urlencode(params))
@@ -95,7 +95,7 @@ class APIError(StandardError):
def __init__(self, error_code, error):
self.error_code = error_code
self.error = error
-# self.request = request
+ #self.request = request
StandardError.__init__(self, error)
def __str__(self):
@@ -114,7 +114,7 @@ def __getattr__(self, attr):
def wrap(**kw):
return _http_call(self.client,
'%s?m=%s&a=%s' % (self.client.api_url, attr.split('__')[0], attr.split('__')[1]),
- self.method, self.client.access_token, **kw)
+ self.method, self.client.access_token, **kw)
return wrap
@@ -180,8 +180,7 @@ def __keep(self):
if __name__ == '__main__':
client = VDiskAPIClient('xiyoulaoyuanjia@gmail.com', '')
- print client.post.auth__get_token()
-
-# print client.post.dir__get_dirid_with_path(path = '/')
-# print client.post.dir__getlist(dir_id = 0)
+ print client.post.auth__get_token()
+ print client.post.dir__getlist(dir_id = 0)
+ print client.upload.file__upload_file(dir_id = 0, file='cycle.jpg', cover='yes')

0 comments on commit 209c063

Please sign in to comment.