python mediafire客户端库
mediafire的Python项目详细描述
安装
$ pip install mediafire
我该用什么?
如果您很匆忙,请使用MediaFireClient-它包含足够的函数来 让你的上传/下载和文件列表正常工作。它没有稳定的api, 只有初步的测试覆盖率。
您可能需要坚持使用MediaFireApi和MediaFireUploader来获得尽可能多的 尽可能控制应用程序流。
mediafire.mediafireapi
API客户端库提供了一个到MediaFireAPI的接口。它处理 请求、响应、签名和错误。
用法:
frommediafireimportMediaFireApiapi=MediaFireApi()session=api.user_get_session_token(email='your.email@example.net',password='password',app_id='42511')# API client does not know about the token# until explicitly told about it:api.session=sessionresponse=api.user_get_info()print(response['user_info']['display_name'])# Or directly for methods that are not yet wrappedresponse=api.request("upload/add_web_upload",{"url":"http://forum.mediafiredev.com/images/mfforumlogo.png","filename":"mfforumlogo.png"})response=api.request("upload/get_web_uploads",{"key":response['upload_key']})
API客户端库支持不带会话令牌的操作。在这种情况下 需要会话令牌的操作将失败,并出现拒绝访问错误:
frommediafireimportMediaFireApiapi=MediaFireApi()response=api.system_get_info()print(response)# prints system inforesponse=api.user_get_info()# fails with "Session token is missing"
一旦设置,就可以取消设置会话令牌:
api.session=None# ordelapi.session
有关包装方法的信息,请参见pydoc mediafire.api。为了 有关所需实际值的文档,请参见MediaFire Core API 文档。
所有包装的方法都遵循相同的命名约定category_action,因此 上传/即时是upload_instant。
您可以轻松构建自己的呼叫:
response=api.request("user/set_avatar",{"quick_key":"123456789012345"})
下载
api客户端不处理常规文件下载,因为这些是简单的http请求 “文件/获取链接”返回的URL。以下是您自己的方法:
response=api.file_get_links('c94lcpx3vax6xp3')normal_download_url=response['links'][0]['normal_download']response=requests.get(normal_download_url,stream=True)withio.open("/tmp/green.jpg",'wb')asfd:forchunkinresponse.iter_content(chunk_size=4096):fd.write(chunk)
如果响应是文件下载,例如file/zip,则返回响应 是一个requests.Response对象,您可以从中读取:
...response=api.request("file/zip",{"keys":"c94lcpx3vax6xp3"})withio.open("/tmp/green.zip",'wb')asfd:forchunkinresponse.iter_content(chunk_size=4096):fd.write(chunk)...
有关详细信息,请参阅Download文档。
mediafire.mediafireuploader
MediaFire支持多种上传方法,并且 单一的上传方法可以让事情变得更简单:
frommediafireimport(MediaFireApi,MediaFireUploader)api=MediaFireApi()uploader=MediaFireUploader(api)# ... authenticate ...fd=open('/path/to/file','rb')result=uploader.upload(fd,'Some filename.txt',folder_key='1234567890123')pprint(api.file_get_info(result.quickkey))
result是一个mediafire.uploader.UploadResult实例。
文件删除
仅用于filedrop上载(即使用filedrop_键时)upload/instant 结果有快捷键。upload/instant和upload/resumable返回 None用于所有字段,因为upload/poll不支持 加密上传密钥。
mediafire.media.conversionserverclient
此API可能会更改
这是在图像和文档转换api之上的一个非常薄的层。
frommediafire.mediaimportConversionServerClientconv=ConversionServerClient()response=conv.request('2004','m8d6blce79xhxl5','i',size_id='1')withopen('/tmp/example.jpg','rb')asfd:fd.write(response.content)
mediafire.client.mediafireclient
此API可能会更改
高级客户端库包装api调用并提供简化的接口。
支持的操作:
- 文件上载
- 文件下载(直接下载链接)
- 列出目录
- 创建目录
- 删除文件和目录
- 获取有关文件和目录的信息
mediafire资源可以由path或quickkey/folderkey引用。
- 路径:mf:/Pictures/Sample.jpg或/Pictures/Sample.jpg
- 文件夹密钥:mf:6302u1a9p0a9x(folder_key长13个字符)
- 快捷键:mf:46d3y4p8542kiyp(quick_key长15个字符)
frommediafire.clientimport(MediaFireClient,File,Folder)client=MediaFireClient()client.login(email='your.email@example.net',password='password',app_id='42511')client.upload_file("flower.jpg","mf:/Pictures/")client.download_file("mf:/Pictures/flower.jpg","flower-from-mediafire.jpg")foriteminclient.get_folder_contents_iter("mf:/Pictures"):iftype(item)isFile:print("File: {}".format(item['filename']))eliftype(item)isFolder:print("Folder: {}".format(item['name']))
有关高级客户端的用法,请参见examples/mediafire-cli.py。
要求
- python 2.7或3.4
- 六
- 请求
- 请求工具带
- 响应(用于测试)
测试
测试套件位于tests/
git clone https://github.com/MediaFire/mediafire-python-open-sdk.git cd mediafire-python-open-sdk # Run tests with python 3 interpreter PYTHONPATH=. python3 -munittest # Run tests with python 2 interpreter PYTHONPATH=. python -munittest discover
报告问题
请使用MediaFire/mediafire-python-open-sdk项目问题跟踪程序 报告实施中的问题。
关于和许可
版权所有(c)2014,Roman Yepishev。保留所有权利。网址:http://www.keypressure.com
2014年10月24日,经Roman Yepishev明确许可,本项目由MediaFire提供。
这个项目是在bsd许可下进行的。有关详细信息,请参见许可证文件。
MediaFire®是MediaFire,LLC的注册商标。