Python SDK使用说明

本文介绍视频直播服务端Python SDK的使用方法和示例代码。以查询导播台列表接口为例,帮助您快速掌握视频直播接口的使用方法。

前提条件

  • 已安装Python 2.7或以上版本。

  • 已下载服务端Python SDK,详细信息,请参见SDK下载

操作步骤

  1. 安装SDK。

    1. 安装阿里云核心SDK。

      sudo pip install aliyun-python-sdk-core

    2. 安装阿里云视频直播SDK。

      sudo pip install aliyun-python-sdk-live

  2. 更新SDK。

    1. 更新阿里云核心SDK。

      sudo pip install aliyun-python-sdk-core --upgrade

    2. 更新阿里云视频直播SDK。

      sudo pip install aliyun-python-sdk-live --upgrade

  3. 使用SDK。

    1. 文件说明。本文以SDK中的DescribeCastersRequest.py文件为例介绍。

      # Licensed to the Apache Software Foundation (ASF) under one
      # or more contributor license agreements.  See the NOTICE file
      # distributed with this work for additional information
      # regarding copyright ownership.  The ASF licenses this file
      # to you under the Apache License, Version 2.0 (the
      # "License"); you may not use this file except in compliance
      # with the License.  You may obtain a copy of the License at
      #
      #
      #     http://www.apache.org/licenses/LICENSE-2.0
      #
      #
      # Unless required by applicable law or agreed to in writing,
      # software distributed under the License is distributed on an
      # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
      # KIND, either express or implied.  See the License for the
      # specific language governing permissions and limitations
      # under the License.
      
      from aliyunsdkcore.request import RpcRequest
      from aliyunsdklive.endpoint import endpoint_data
      
      class DescribeCastersRequest(RpcRequest):
      
          def __init__(self):
              RpcRequest.__init__(self, 'live', '2016-11-01', 'DescribeCasters','live')
              self.set_method('POST')
      
              if hasattr(self, "endpoint_map"):
                  setattr(self, "endpoint_map", endpoint_data.getEndpointMap())
              if hasattr(self, "endpoint_regional"):
                  setattr(self, "endpoint_regional", endpoint_data.getEndpointRegional())
      
          def get_StartTime(self): # String
              return self.get_query_params().get('StartTime')
      
          def set_StartTime(self, StartTime):  # String
              self.add_query_param('StartTime', StartTime)
          def get_PageNum(self): # Integer
              return self.get_query_params().get('PageNum')
      
          def set_PageNum(self, PageNum):  # Integer
              self.add_query_param('PageNum', PageNum)
          def get_CasterName(self): # String
              return self.get_query_params().get('CasterName')
      
          def set_CasterName(self, CasterName):  # String
              self.add_query_param('CasterName', CasterName)
          def get_PageSize(self): # Integer
              return self.get_query_params().get('PageSize')
      
          def set_PageSize(self, PageSize):  # Integer
              self.add_query_param('PageSize', PageSize)
          def get_NormType(self): # String
              return self.get_query_params().get('NormType')
      
          def set_NormType(self, NormType):  # String
              self.add_query_param('NormType', NormType)
          def get_CasterId(self): # String
              return self.get_query_params().get('CasterId')
      
          def set_CasterId(self, CasterId):  # String
              self.add_query_param('CasterId', CasterId)
          def get_EndTime(self): # String
              return self.get_query_params().get('EndTime')
      
          def set_EndTime(self, EndTime):  # String
              self.add_query_param('EndTime', EndTime)
          def get_OwnerId(self): # Long
              return self.get_query_params().get('OwnerId')
      
          def set_OwnerId(self, OwnerId):  # Long
              self.add_query_param('OwnerId', OwnerId)
          def get_OrderByModifyAsc(self): # String
              return self.get_query_params().get('OrderByModifyAsc')
      
          def set_OrderByModifyAsc(self, OrderByModifyAsc):  # String
              self.add_query_param('OrderByModifyAsc', OrderByModifyAsc)
          def get_ChargeType(self): # Integer
              return self.get_query_params().get('ChargeType')
      
              def set_ChargeType(self, ChargeType):  # Integer
              self.add_query_param('ChargeType', ChargeType)
              def get_Status(self): # Integer
              return self.get_query_params().get('Status')
      
              def set_Status(self, Status):  # Integer
              self.add_query_param('Status', Status)
                                  

      该文件中对于DescribeCastersRequest这个类,有若干组一一对应的get_Xset_X方法,分别用于获取和设定该API请求的参数。

    2. 创建一个名为 config.ini 的配置文件放在建议目录conf中,其中包含 AK/SK 信息。配置文件的内容如下:

      [default]
      access_key_id = YOUR_ACCESS_KEY_ID
      access_key_secret = YOUR_ACCESS_KEY_SECRET

      请将 YOUR_ACCESS_KEY_IDYOUR_ACCESS_KEY_SECRET 替换为您的实际 AK/SK 值。

      然后,可以使用以下 Python 代码读取配置文件并调用阿里云 SDK。

      此处以v20161101版本为例,调用DescribeCasters接口:

      #!/usr/bin/env python
      #coding=utf-8
      
      from configparser import ConfigParser
      from aliyunsdkcore.client import AcsClient
      from aliyunsdkcore.acs_exception.exceptions import ClientException
      from aliyunsdkcore.acs_exception.exceptions import ServerException
      from aliyunsdkcore.auth.credentials import AccessKeyCredential
      from aliyunsdkcore.auth.credentials import StsTokenCredential
      from aliyunsdklive.request.v20161101.DescribeCastersRequest import DescribeCastersRequest
      
      config = ConfigParser()
      config.read('conf/config.ini')
      
      # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
      # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
      # 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。
      access_key_id = config.get('default', 'access_key_id')
      access_key_secret = config.get('default', 'access_key_secret')
      #初始化client
      #AK和Secrect需要自己提供(可以在阿里云控制台中找到)
      #以访问cn-hangzhou region为例
      credentials = AccessKeyCredential(access_key_id, access_key_secret)
      # use STS Token
      # credentials = StsTokenCredential('<your-access-key-id>', '<your-access-key-secret>', '<your-sts-token>')
      client = AcsClient(region_id='cn-hangzhou', credential=credentials)
      #构造需发起的API请求调用
      request = DescribeCastersRequest()
      request.set_accept_format('json')
      
      request.set_CasterId("testCase")
      request.set_CasterName("testName")
      request.set_StartTime("2020-01-01T12:00:01")
      #发起请求
      response = client.do_action_with_exception(request)
      # python2:  print(response)
      #请求结果
      print(str(response, encoding='utf-8'))

后续步骤

如果您需要移除SDK,请执行以下命令:

  • sudo pip uninstall aliyun-python-sdk-core

  • sudo pip uninstall aliyun-python-sdk-live