本文介绍如何安装和快速使用智能媒体管理Python SDK。

前提条件

  • 已下载并安装Python 2或Python 3的开发环境。
  • 已创建并获取Access Key。具体操作,请参见获取AccessKey
  • 已开通OSS服务、创建存储空间并上传文件到存储空间。具体操作,请参见OSS控制台使用流程
  • 已开通智能媒体管理服务。具体操作,请参见开通产品
    注意 目前在华东1(杭州)和华东2(上海)地域中,您也可以通过调用OpenImmService接口开通智能媒体管理服务。
  • 已创建所需类型的项目。具体操作,请参见创建项目

快速使用

使用智能媒体管理Python SDK的操作步骤如下:

  1. 安装智能媒体管理Python SDK。

    Python SDK的有如下两种安装方式。

    • 方式一:通过pip安装(推荐)

      执行如下命令通过pip安装智能媒体管理Python SDK。

      pip install aliyun-python-sdk-core # 安装阿里云SDK核心库。
      pip install aliyun-python-sdk-imm # 安装阿里云智能媒体管理Python SDK。                         
    • 方式二:通过GithHub源码安装

      如果未安装git,请安装git后,执行如下命令通过GitHub源码安装智能媒体管理Python SDK。

      Python SDK在GitHub中的路径请参见Python SDK

      git clone https://github.com/aliyun/aliyun-openapi-python-sdk.git
      # 安装阿里云SDK核心库。
      cd aliyun-python-sdk-core
      python setup.py install
      # 安装阿里云智能媒体管理Python SDK。
      cd aliyun-python-sdk-imm
      python setup.py install                            
  2. 开始一个Python项目。

    调用Python SDK的主要步骤如下:

    1. 创建Client实例。

      在创建Client实例时,您需要获取并配置Region ID、AccessKey ID和AccessKey Secret。

    2. 创建API请求并设置参数。
    3. 发起请求并处理应答或异常。

    如下示例以在华东1(杭州)地域中创建文档转换任务为例说明。

    1. 创建文档转换任务。
      #!/usr/bin/env python
      #coding=utf-8
      
      from aliyunsdkcore.client import AcsClient
      from aliyunsdkcore.acs_exception.exceptions import ClientException
      from aliyunsdkcore.acs_exception.exceptions import ServerException
      from aliyunsdkimm.request.v20170906.CreateOfficeConversionTaskRequest import CreateOfficeConversionTaskRequest
      
      client = AcsClient('your_access_key_id', 'your_access_key_secret', 'cn-hangzhou')
      
      createReq = CreateOfficeConversionTaskRequest()
      srcUri = "oss://your-bucket-name/your-path/your-doc.doc"
      tgtUri = "oss://your-bucket-name/your-path/your-doc-output"
      tgtType = "vector"
      createReq.set_Project("immdoctest")
      createReq.set_SrcUri(srcUri)
      createReq.set_TgtUri(tgtUri)
      createReq.set_TgtType(tgtType)
      response = client.do_action_with_exception(createReq)
      print (response)                           

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

      {
        "Status": "Running",
        "CreateTime": "2018-07-21T15:37:28.539Z",
        "RequestId": "01E3E9D5-48B2-4326-BC75-9AAD22953077",
        "Percent": 0,
        "TaskId": "ee52a217-234a-4922-8bd5-fcce5584c0e7",
        "TgtLoc": "oss://your-bucket-name/your-path/your-doc-output"
      }                           
    2. 轮询获取文档转换任务状态,轮询时间间隔为1s(不能低于0.2s),超时时间为10s。
      res = json.loads(response)
      taskId = res["TaskId"]
      getReq = GetOfficeConversionTaskRequest.GetOfficeConversionTaskRequest()
      getReq.set_Project("immdoctest")
      getReq.set_TaskId(taskId)
      
      period = 1
      timeout = 30
      start = time.time()
      while True:
          time.sleep(period)
          response = client.do_action_with_exception(getReq)
          print (response)
          status = json.loads(response)["Status"]
          if status == "Finished":    #任务完成。
              print ("Task finished.")
              break
          if status == "Failed":     #任务失败。
              print ("Task failed.")
              break
          if time.time() - start > timeout:   #任务超时。
              print ("Task timeout.")
              break                           

      当文档转换任务的执行状态为Running时的返回结果如下:

      {
        "NotifyTopicName": "",
        "FailDetail": {
          "Code": ""
        },
        "TaskId": "ee52a217-234a-4922-8bd5-fcce5584c0e7",
        "NotifyEndpoint": "",
        "PageCount": 0,
        "Status": "Running",
        "TgtType": "vector",
        "FinishTime": "",
        "CreateTime": "2018-07-21T15:37:28.539Z",
        "RequestId": "4153D465-45D3-4457-A273-DED40505CAD5",
        "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
        "Percent": 0,
        "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
      }                            

      当文档转换任务的执行状态为Finished时的返回结果如下:

      {
        "NotifyTopicName": "",
        "FailDetail": {
          "Code": "NoError"
        },
        "TaskId": "ee52a217-234a-4922-8bd5-fcce5584c0e7",
        "NotifyEndpoint": "",
        "PageCount": 32,
        "Status": "Finished",
        "TgtType": "vector",
        "FinishTime": "2018-07-21T15:37:32.419Z",
        "CreateTime": "2018-07-21T15:37:28.539Z",
        "RequestId": "CACA2EC6-98FC-457A-810F-4035DD32A43B",
        "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
        "Percent": 100,
        "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
      }                            

      当文档转换任务的执行状态为Failed时的返回结果如下:

      {
        "NotifyTopicName": "",
        "FailDetail": {
          "Code": "FailedToDownloadSrcFile"
        },
        "TaskId": "1c8d3a19-9f28-433f-be13-8e42b8851ef3",
        "NotifyEndpoint": "",
        "PageCount": 0,
        "Status": "Failed",
        "TgtType": "vector",
        "FinishTime": "",
        "CreateTime": "2018-07-21T15:47:53.865Z",
        "RequestId": "453B7362-D404-47A3-88A7-BE14F494812C",
        "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
        "Percent": 0,
        "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
      }