全部产品
云市场

Python SDK

更新时间:2018-11-17 14:15:26

下载地址

IMM Service 的 Python SDK 让开发人员可以非常方便地使用 Python 操作阿里云智能媒体管理服务。 已经开源到github

操作步骤

为快速开始使用 IMM Service Python SDK,请按照如下步骤进行。

步骤 1 创建阿里云账号

具体方法请参考 阿里云账号注册流程

为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。具体实名认证流程,请参考 这里

步骤 2 获取阿里云访问密钥

为了使用 IMM Service Python SDK,您必须申请阿里云的 访问密钥。

登录阿里云 密钥管理页面。选择一对用于 SDK 的访问密钥对。如果没有,请创建一对新访问密钥,且保证它处于启用状态。有关如何创建访问密钥,参见 创建访问密钥

该密钥对会在下面的步骤使用,且需要保管好,不能对外泄露。另外,您可以参考 SDK 配置了解更多 SDK 如何使用访问密钥的信息。

步骤 3 创建项目

可以使用 Python SDK 创建,也可以在控制台上创建好项目(Project)。有关如何创建 Project ,参见 创建项目

步骤 4 安装 Imm Service Python SDK

Python SDK 的安装方式有两种, 目前只支持 Python 2.6.x, 2.7.x:

  • 使用 pip 安装(推荐)

执行以下命令,通过 pip 安装 SDK。

  1. pip install aliyun-python-sdk-core # 安装阿里云 SDK 核心库
  2. pip install aliyun-python-sdk-imm # 安装管理 IMM 的库
  • 下载 GithHub 源码

执行以下命令,通过 GitHub 安装 Python SDK。

  1. git clone https://github.com/aliyun/aliyun-openapi-python-sdk.git
  2. # 安装阿里云 SDK 核心库
  3. cd aliyun-python-sdk-core
  4. python setup.py install
  5. # 安装阿里云 IMM SDK
  6. cd aliyun-python-sdk-imm
  7. python setup.py install

步骤 5 使用 Python SDK

以下这个代码示例展示了调用阿里云 Python SDK 的3个主要步骤:

  1. 创建 Client 实例。在创建 Client 实例时,您需要获取 Region ID、AccessKey ID 和 AccessKey Secret。
  2. 创建 API 请求并设置参数。
  3. 发起请求并处理应答或异常。

下面的 demo 以文档转换为例,展示了如何使用 Python SDK

5.1 创建文档转换任务

  1. createReq = CreateOfficeConversionTaskRequest.CreateOfficeConversionTaskRequest()
  2. srcUri = "oss://your-bucket-name/your-path/your-doc.doc"
  3. tgtUri = "oss://your-bucket-name/your-path/your-doc-output"
  4. tgtType = "png"
  5. createReq.set_Project("test-doc-project")
  6. createReq.set_SrcUri(srcUri)
  7. createReq.set_TgtUri(tgtUri)
  8. createReq.set_TgtType(tgtType)
  9. response = client.do_action_with_exception(createReq)
  10. print response

任务创建成功返回结果如下

  1. {
  2. "Status": "Running",
  3. "CreateTime": "2018-07-21T15:37:28.539Z",
  4. "RequestId": "01E3E9D5-48B2-4326-BC75-9AAD22953077",
  5. "Percent": 0,
  6. "TaskId": "ee52a217-234a-4922-8bd5-fcce5584c0e7",
  7. "TgtLoc": "oss://your-bucket-name/your-path/your-doc-output"
  8. }

5.2 轮询获取文档转换任务状态,轮训周期 1s(不能低于0.2s),超时时间10s

  1. res = json.loads(response)
  2. taskId = res["TaskId"]
  3. getReq = GetOfficeConversionTaskRequest.GetOfficeConversionTaskRequest()
  4. getReq.set_Project("test-doc-project")
  5. getReq.set_TaskId(taskId)
  6. period = 1
  7. timeout = 30
  8. start = time.time()
  9. while True:
  10. time.sleep(period)
  11. response = client.do_action_with_exception(getReq)
  12. print response
  13. status = json.loads(response)["Status"]
  14. if status == "Finished": #任务完成
  15. print "Task finished."
  16. break
  17. if status == "Failed": #任务失败
  18. print "Task failed."
  19. break
  20. if time.time() - start > timeout: #任务超时
  21. print "Task timeout."
  22. break

Running状态结果返回如下

  1. {
  2. "NotifyTopicName": "",
  3. "FailDetail": {
  4. "Code": ""
  5. },
  6. "TaskId": "ee52a217-234a-4922-8bd5-fcce5584c0e7",
  7. "NotifyEndpoint": "",
  8. "PageCount": 0,
  9. "Status": "Running",
  10. "TgtType": "png",
  11. "FinishTime": "",
  12. "CreateTime": "2018-07-21T15:37:28.539Z",
  13. "RequestId": "4153D465-45D3-4457-A273-DED40505CAD5",
  14. "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
  15. "Percent": 0,
  16. "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
  17. }

Finished 状态结果返回如下

  1. {
  2. "NotifyTopicName": "",
  3. "FailDetail": {
  4. "Code": "NoError"
  5. },
  6. "TaskId": "ee52a217-234a-4922-8bd5-fcce5584c0e7",
  7. "NotifyEndpoint": "",
  8. "PageCount": 32,
  9. "Status": "Finished",
  10. "TgtType": "png",
  11. "FinishTime": "2018-07-21T15:37:32.419Z",
  12. "CreateTime": "2018-07-21T15:37:28.539Z",
  13. "RequestId": "CACA2EC6-98FC-457A-810F-4035DD32A43B",
  14. "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
  15. "Percent": 100,
  16. "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
  17. }

Failed 状态结果返回如下

  1. {
  2. "NotifyTopicName": "",
  3. "FailDetail": {
  4. "Code": "FailedToDownloadSrcFile"
  5. },
  6. "TaskId": "1c8d3a19-9f28-433f-be13-8e42b8851ef3",
  7. "NotifyEndpoint": "",
  8. "PageCount": 0,
  9. "Status": "Failed",
  10. "TgtType": "png",
  11. "FinishTime": "",
  12. "CreateTime": "2018-07-21T15:47:53.865Z",
  13. "RequestId": "453B7362-D404-47A3-88A7-BE14F494812C",
  14. "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
  15. "Percent": 0,
  16. "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
  17. }

若在使用中有疑问,请参考 FAQ,或者进入 钉钉用户群 实时交流。