媒资管理

本篇文档提供了Python SDK媒资管理模块相关功能的API调用示例。主要包含搜索媒资信息、获取视频信息、修改视频信息、删除视频、获取源文件信息、获取图片信息、删除图片信息等。

接口调用说明

  • 本文提供的接口调用示例均通过AccessKey初始化客户端实例。

  • 接口的参数解释和返回字段的详细说明请访问阿里云OpenAPI门户,在各接口右侧的文档页签查看。

  • 本文仅提供部分复杂接口的代码示例,其余接口的SDK代码示例,可以通过阿里云OpenAPI门户获取。访问阿里云OpenAPI门户,在接口的左侧参数配置页签,填写需要的参数信息并发起调用后,在右侧的SDK示例页签,选择SDK版本,选择目标语言,查看并下载示例代码。

  • 本文均以V1.0版本的SDK为例进行接口调用,如需获取V2.0版本的SDK示例,请在通过阿里云OpenAPI门户获取SDK示例时,指定到对应的SDK版本。image.png

初始化客户端

使用前请先初始化客户端,请参见初始化

搜索媒资信息

调用SearchMedia接口,生成搜索媒资信息的SDK示例。

阿里云OpenAPI门户地址:SearchMedia

调用示例如下:

from aliyunsdkvod.request.v20170321 import SearchMediaRequest
def search_media(clt):
    request = SearchMediaRequest.SearchMediaRequest()
    request.set_Fields('Title,CoverURL,Status');
    request.set_Match('Status in ("Normal","Checking") and CreationTime = ("2018-10-01T08:00:00Z","2018-12-25T08:00:00Z")')
    request.set_PageNo(1)
    request.set_PageSize(10)
    request.set_SearchType('video')
    request.set_SortBy('CreationTime:Desc')

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    medias = search_media(clt)
    print(medias['MediaList'])
    print(json.dumps(medias, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

获取音视频信息

  • 调用GetVideoInfo接口,生成获取单个音视频的信息的SDK示例。

    阿里云OpenAPI门户地址:GetVideoInfo

  • 调用GetVideoInfos接口,生成批量获取音视频的信息的SDK示例。

    阿里云OpenAPI门户地址:GetVideoInfos

修改单个音视频信息

调用UpdateVideoInfo接口,生成修改单个音视频信息的SDK示例。

阿里云OpenAPI门户地址:UpdateVideoInfo

批量修改音视频信息

调用UpdateVideoInfos接口,生成批量修改音视频信息的SDK示例。

阿里云OpenAPI门户地址:UpdateVideoInfos

调用示例如下:

from aliyunsdkvod.request.v20170321 import UpdateVideoInfosRequest
def update_video_infos(clt):
    request = UpdateVideoInfosRequest.UpdateVideoInfosRequest()

    updateContent = []
    updateItem1 = {'VideoId': '<VideoId1>', 'Title': 'New Sample Title1', 'Tags': 'NewTag1,NewTag2'}
    updateItem2 = {'VideoId': '<VideoId2>', 'Title': 'New Sample Title2', 'Tags': 'NewTag3,NewTag4'}
    updateContent.append(updateItem1)
    updateContent.append(updateItem2)
    request.set_UpdateContent(json.dumps(updateContent))

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    update = update_video_infos(clt)
    print(update['NonExistVideoIds'])
    print(json.dumps(update, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

获取源文件信息(含原片下载地址)

调用GetMezzanineInfo接口,生成获取源文件信息的SDK示例。

阿里云OpenAPI门户地址:GetMezzanineInfo

获取音视频列表

调用GetVideoList接口,生成获取音视频列表的SDK示例。

阿里云OpenAPI门户地址:GetVideoList

调用示例如下:

重要

时间参数要使用UTC时间,北京时间与UTC的时差为+8,也就是UTC+8,例如2018-01-01T12:00:00Z表示北京时间2018年1月1日20点0分0秒。

from aliyunsdkvod.request.v20170321 import GetVideoListRequest
def get_video_list(clt):
    request = GetVideoListRequest.GetVideoListRequest()
    # 以获取最近30天的视频列表为例
    utcNow = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
    utcMonthAgo = datetime.datetime.utcfromtimestamp(time.time() - 30*86400).strftime("%Y-%m-%dT%H:%M:%SZ")
    request.set_StartTime(utcMonthAgo)   # 视频创建的起始时间,为UTC格式
    request.set_EndTime(utcNow)          # 视频创建的结束时间,为UTC格式
    #request.set_Status('Uploading,Normal,Transcoding')  # 视频状态,默认获取所有状态的视频,多个用逗号分隔
    #request.set_CateId(0)               # 按分类进行筛选
    request.set_PageNo(1)
    request.set_PageSize(20)

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    videoList = get_video_list(clt)
    print(json.dumps(videoList, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

删除音视频

调用DeleteVideo接口,生成删除音视频的SDK示例。

阿里云OpenAPI门户地址:DeleteVideo

删除媒体流

调用DeleteStream接口,生成删除媒体流的SDK示例。

阿里云OpenAPI门户地址:DeleteStream

批量删除源文件

调用DeleteMezzanines接口,生成批量删除源文件的SDK示例。

阿里云OpenAPI门户地址:DeleteMezzanines

批量更新图片信息

调用UpdateImageInfos接口,生成批量更新图片信息的SDK示例。

阿里云OpenAPI门户地址:UpdateImageInfos

调用示例如下:

from aliyunsdkvod.request.v20170321 import UpdateImageInfosRequest
def update_image_infos(clt):
    request = UpdateImageInfosRequest.UpdateImageInfosRequest()

    updateContent = []
    updateItem1 = {'ImageId': '<imageId1>', 'Title': 'New Sample Title1', 'Tags': 'NewTag1,NewTag2'}
    updateItem2 = {'ImageId': '<imageId2>', 'Title': 'New Sample Title2', 'Tags': 'NewTag3,NewTag4'}
    updateContent.append(updateItem1)
    updateContent.append(updateItem2)
    request.set_UpdateContent(json.dumps(updateContent))

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    update = update_image_infos(clt)
    print(update['NonExistImageIds']['ImageId'])
    print(json.dumps(update, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

获取图片信息

调用GetImageInfo接口,生成获取图片信息的SDK示例。

阿里云OpenAPI门户地址:GetImageInfo

删除图片

调用DeleteImage接口,生成删除图片的SDK示例。

阿里云OpenAPI门户地址:DeleteImage

调用示例如下:

from aliyunsdkvod.request.v20170321 import DeleteImageRequest
def delete_image(clt):
    request = DeleteImageRequest.DeleteImageRequest()

    #根据ImageURL删除图片文件
    request.set_DeleteImageType('ImageURL')
    request.set_ImageURLs('http://192.168.0.0/16/cover.jpg')

    #根据ImageId删除图片文件
    #request.set_DeleteImageType('ImageId')
    #request.set_ImageIds('ImageId1,ImageId2')

    #根据VideoId删除指定ImageType的图片文件
    #request.set_DeleteImageType('VideoId')
    #request.set_VideoId('VideoId')
    #request.set_ImageType('SpriteSnapshot')

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    delInfo = delete_image(clt)
    print(json.dumps(delInfo, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())