全部產品
Search
文件中心

Intelligent Media Management:Python SDK

更新時間:Mar 13, 2025

阿里雲API調試工具OpenAPI Explore提供OpenAPI文檔、API調試和SDK樣本,協助您快速入門API開發。本文介紹如何安裝和使用Intelligent Media ManagementPython SDK。

前提條件

安裝SDK

重要

調用2020-09-30版本的API,需要使用2020-09-30版本的SDK。

使用Intelligent Media ManagementPython SDK的操作步驟請參見快速入門

訪問憑證

您可以選擇以下類型的訪問憑證。

  • 臨時訪問憑證:對於需要高安全性的情境,例如臨時授權應用訪問IMM,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。

  • 長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。

使用臨時訪問憑證

當您準備臨時使用Python SDK訪問IMM服務時,可以參考配置臨時訪問憑證

如下以在華東1(杭州)地區中檢測圖片中的人臉及人臉資訊為例,介紹如何使用臨時訪問憑證通過Intelligent Media ManagementPython SDK調用對應API。

  1. 建立demo.py檔案並寫入如下內容。

    import os
    import sys
    
    from typing import List
    
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    from alibabacloud_sts20150401.client import Client as Sts20150401Client
    from alibabacloud_sts20150401 import models as sts_20150401_models
    
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client() -> imm20200930Client:
            """
            使用AK&SK初始化帳號Client
            @return: Client
            @throws Exception
            """
            sts_config = open_api_models.Config(
                # 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
                access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                # 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
            )
            # sts Endpoint,需要和imm保持相同地區
            sts_config.endpoint = "sts-share.cn-hangzhou.aliyuncs.com"
            sts_client = Sts20150401Client(sts_config)
            # 調用sts AssumeRole
            assume_role_request = sts_20150401_models.AssumeRoleRequest(
                # sts token有效時間,單位為秒
                duration_seconds=3600,
                # 角色會話名稱
                role_session_name="immtest",
                # role arn
                role_arn="acs:ram::xxxxxxx:role/imm-test-role-for-amp"
            )
            runtime = util_models.RuntimeOptions()
            response = sts_client.assume_role_with_options(assume_role_request, runtime)
            credential = response.to_map().get("body", dict()).get("Credentials", dict())
            # 使用sts token建立imm client
            imm_config = open_api_models.Config(
                access_key_id=credential["AccessKeyId"],
                access_key_secret=credential["AccessKeySecret"],
                security_token=credential["SecurityToken"])
            # imm Endpoint 請參考 https://api.aliyun.com/product/imm
            imm_config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
            return imm20200930Client(imm_config)
    
        @staticmethod
        def main(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            detect_image_faces_request = imm_20200930_models.DetectImageFacesRequest(
                source_uri='oss://your-bucket-name/your-path/test.jpg',
                project_name='immtest'
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 複製代碼運行請自行列印 API 的傳回值
                response = client.detect_image_faces_with_options(
                    detect_image_faces_request, runtime)
                print(response.body.to_map())
            except Exception as error:
                # 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                # 錯誤 message
                print(error.message)
                # 診斷地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
    
    if __name__ == '__main__':
        Sample.main(sys.argv[1:])
  2. 執行python demo.py命令,控制台輸出結果如下。

    {
       "Faces": [
          {
             "Age": 25,
             "AgeSD": 7,
             "Attractive": 0.998,
             "Beard": "none",
             "BeardConfidence": 1,
             "Boundary": {
                "Height": 127,
                "Left": 81,
                "Top": 62,
                "Width": 96
             },
             "Emotion": "happiness",
             "EmotionConfidence": 0.999,
             "FaceQuality": 0.998,
             "FigureClusterId": "figure-cluster-id-unavailable",
             "FigureConfidence": 0.999,
             "FigureId": "30f18b25-db81-4dc6-8461-fd63ab0ef16d",
             "FigureType": "face",
             "Gender": "female",
             "GenderConfidence": 1,
             "Glasses": "none",
             "GlassesConfidence": 1,
             "Hat": "none",
             "HatConfidence": 1,
             "HeadPose": {
                "Pitch": -16.989,
                "Roll": 6.006,
                "Yaw": 7.47
             },
             "Mask": "none",
             "MaskConfidence": 0.83,
             "Mouth": "open",
             "MouthConfidence": 0.998,
             "Sharpness": 1
          }
       ],
       "RequestId": "28084591-0A06-0981-9AD5-B0FBD0967FD7"
    }            

使用長期訪問憑證

當您準備在應用或服務中長期使用Python SDK訪問IMM服務時,可以參考配置長期訪問憑證

如下以使用1.27.3版本的Python SDK在華東2(北京)地區中建立文檔轉換任務為例,介紹如何使用Python SDK。

  1. 建立demo.py檔案並寫入如下內容。

    # -*- coding: utf-8 -*-
    # This file is auto-generated, don't edit it. Thanks.
    import os
    import sys
    
    from typing import List
    
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client() -> imm20200930Client:
            """
            使用AK&SK初始化帳號Client
            @return: Client
            @throws Exception
            """
            # 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。
            # 建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:https://www.alibabacloud.com/help/document_detail/378659.html。
            config = open_api_models.Config(
                # 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。,
                access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                # 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
                access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
            )
            # Endpoint 請參考 https://api.aliyun.com/product/imm
            config.endpoint = f'imm.cn-beijing.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            notification_mns = imm_20200930_models.MNS(
                topic_name='mns_topic_name'
            )
            notification = imm_20200930_models.Notification(
                mns=notification_mns,
                extended_message_uri='oss://your-bucket-name/test-object.json'
            )
            create_office_conversion_task_request = imm_20200930_models.CreateOfficeConversionTaskRequest(
                project_name='immtest',
                source_uri='oss://your-bucket-name/your-path/your-doc.doc',
                target_uri='oss://your-bucket-name/output',
                target_uriprefix='oss://your-bucket-name/output',
                target_type='png',
                notification=notification
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 複製代碼運行請自行列印 API 的傳回值
                client.create_office_conversion_task_with_options(create_office_conversion_task_request, runtime)
            except Exception as error:
                # 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                # 錯誤 message
                print(error.message)
                # 診斷地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
        @staticmethod
        async def main_async(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            notification_mns = imm_20200930_models.MNS(
                topic_name='mns_topic_name'
            )
            notification = imm_20200930_models.Notification(
                mns=notification_mns,
                extended_message_uri='oss://your-bucket-name/test-object.json'
            )
            create_office_conversion_task_request = imm_20200930_models.CreateOfficeConversionTaskRequest(
                project_name='immtest',
                source_uri='oss://your-bucket-name/your-path/your-doc.doc',
                target_uri='oss://your-bucket-name/output',
                target_uriprefix='oss://your-bucket-name/your-path/your-doc-output',
                target_type='png',
                notification=notification
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 複製代碼運行請自行列印 API 的傳回值
                await client.create_office_conversion_task_with_options_async(create_office_conversion_task_request, runtime)
            except Exception as error:
                # 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                # 錯誤 message
                print(error.message)
                # 診斷地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
    
    if __name__ == '__main__':
        Sample.main(sys.argv[1:])
  2. 執行python demo.py命令,控制台輸出結果如下。

    // 文檔轉換API傳回值。
    {
        "TaskId": "OfficeConversion-65ab9c57-4598-4eb4-bf73-****",
        "RequestId": "A637DBBA-3E98-00F5-B0F2-****",
        "EventId": "011-1LNuW4Ws2lRfjGsZl4a****"
    }
    
    // MNS訊息,Status為Succeeded表示文檔轉換任務執行成功。
    {
        "ProjectName": "immtest",
        "DatasetName": "",
        "RequestId": "A637DBBA-3E98-00F5-B0F2-****",
        "StartTime": "2022-07-19T10:41:44.649Z",
        "EndTime": "2022-07-19T10:41:45.26Z",
        "UserData": "",
        "TaskType": "OfficeConversion",
        "TaskId": "OfficeConversion-65ab9c57-4598-4eb4-bf73-****",
        "Status": "Succeeded",
        "Code": "",
        "Message": ""
    }