From 53eb389d10796136dc6856e19a18ced8be7dc8da Mon Sep 17 00:00:00 2001 From: flynnzzhang Date: Tue, 31 May 2022 21:46:10 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=AA=92=E4=BD=93sdk=202=E6=9C=9F=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/ci_media.py | 933 ++++++++++++++++++++++++++++++++++++--- qcloud_cos/cos_client.py | 267 ++++++++++- ut/test.py | 73 +++ 3 files changed, 1205 insertions(+), 68 deletions(-) diff --git a/demo/ci_media.py b/demo/ci_media.py index 46e9cfae..4463f886 100644 --- a/demo/ci_media.py +++ b/demo/ci_media.py @@ -46,58 +46,160 @@ def ci_get_media_bucket(): def ci_get_media_queue(): # 查询媒体队列信息 response = client.ci_get_media_queue( - Bucket=bucket_name + Bucket=bucket_name, + state='Active', + queueIds='p5135bcxxxxxxxxxxxxxbf047454', + pageNumber='1', + pageSize='1' ) print(response) return response -def ci_create_media_transcode_watermark_jobs(): +def ci_get_media_pic_queue(): + # 查询媒体队列信息 + response = client.ci_get_media_pic_queue( + Bucket=bucket_name, + state='Active', + queueIds='peb83bxxxxxxxxxxxxxxx21c7d68', + pageNumber='1', + pageSize='1' + ) + print(response) + return response + + +def ci_put_media_queue(): + # 查询媒体队列信息 + body = { + 'Name': 'media-queue', + 'QueueID': 'p5135bc6xxxxxxxxxxxxxxxxf047454', + 'State': 'Active', + 'NotifyConfig': { + 'Type': 'Url', + 'Url': 'http://www.demo.callback.com', + 'Event': 'TaskFinish', + 'State': 'On', + 'ResultFormat': 'JSON' + } + } + response = client.ci_update_media_queue( + Bucket=bucket_name, + QueueId='p5135bcxxxxxxxxxxxxxxxxf047454', + Request=body, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_put_media_pic_queue(): + # 查询媒体队列信息 + body = { + 'Name': 'media-pic-queue', + 'QueueID': 'peb83bdxxxxxxxxxxxxxxxxa21c7d68', + 'State': 'Active', + 'NotifyConfig': { + 'Type': 'Url', + 'Url': 'http://www.demo.callback.com', + 'Event': 'TaskFinish', + 'State': 'On', + 'ResultFormat': 'JSON' + } + } + response = client.ci_update_media_pic_queue( + Bucket=bucket_name, + QueueId='peb83bdxxxxxxxxxxxxxxxxxx4a21c7d68', + Request=body, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_transcode_with_digital_watermark_jobs(): # 创建转码任务 body = { - 'Input':{ - 'Object':'117374C.mp4' + 'Input': { + 'Object': 'demo.mp4' }, - 'QueueId': 'pe943803693bd42d1a3105804ddaee525', + 'QueueId': 'p5135bcxxxxxxxxxxxxxxxx047454', 'Tag': 'Transcode', 'Operation': { - 'Output':{'Bucket':bucket_name, 'Region':region, 'Object':'117374C_output.mp4'}, - 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5', - # "WatermarkTemplateId": ["", ""], - 'Watermark': [ - { - 'Type':'Text', - 'Pos':'TopRight', - 'LocMode':'Absolute', - 'Dx':'64', - 'Dy': '64', - 'StartTime':'0', - 'EndTime':'1000.5', - 'Text': { - 'Text': '水印内容', - 'FontSize': '90', - 'FontType': 'simfang.ttf', - 'FontColor': '0xFFEEFF', - 'Transparency': '100', - }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'transcode_with_digital_watermark_output.mp4' }, - { - 'Type':'Image', - 'Pos':'TopLeft', - 'LocMode':'Absolute', - 'Dx':'100', - 'Dy': '100', - 'StartTime':'0', - 'EndTime':'1000.5', - 'Image': { - 'Url': 'http://'+bucket_name+".cos."+region+".myqcloud.com/1215shuiyin.jpg", - 'Mode': 'Fixed', - 'Width': '128', - 'Height': '128', - 'Transparency': '100', + 'TemplateId': 't04e1ab86554984f1aa17c062fbf6c007c', + 'DigitalWatermark': { + 'Type': 'Text', + 'Message': '123456789ab', + 'Version': 'V1', + 'IgnoreError': 'false', + }, + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_transcode_with_watermark_jobs(): + # 创建转码任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bc6xxxxxxxxxxxxxxxxxxbf047454', + 'Tag': 'Transcode', + 'Operation': { + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'transcode_with_watermark_output.mp4' + }, + 'TemplateId': 't04e1ab86554984f1aa17c062fbf6c007c', + # "WatermarkTemplateId": ["", ""], + 'Watermark': [ + { + 'Type': 'Text', + 'Pos': 'TopRight', + 'LocMode': 'Absolute', + 'Dx': '64', + 'Dy': '64', + 'StartTime': '0', + 'EndTime': '1000.5', + 'Text': { + 'Text': '水印内容', + 'FontSize': '90', + 'FontType': 'simfang.ttf', + 'FontColor': '0xFFEEFF', + 'Transparency': '100', + }, }, - } - ] + { + 'Type': 'Image', + 'Pos': 'TopLeft', + 'LocMode': 'Absolute', + 'Dx': '100', + 'Dy': '100', + 'StartTime': '0', + 'EndTime': '1000.5', + 'Image': { + 'Url': 'http://'+bucket_name+".cos."+region+".myqcloud.com/watermark.png", + 'Mode': 'Fixed', + 'Width': '128', + 'Height': '128', + 'Transparency': '100', + }, + } + ] } } # dict中数组类型的标签,都需要特殊处理 @@ -114,20 +216,108 @@ def ci_create_media_transcode_watermark_jobs(): ContentType='application/xml' ) print(response) - return response + return response + + +def ci_create_media_hls_transcode_jobs(): + # 创建hls转码任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135xxxxxxxxxxxxxxxxxxxxx047454', + 'Tag': 'Transcode', + 'Operation': { + "Transcode": { + "Container": { + "Format": "hls" + }, + "Video": { + "Codec": "H.264", + "Profile": "high", + "Bitrate": "1000", + "Width": "1280", + "Fps": "30", + "Preset": "medium", + "Bufsize": "1000", + "Maxrate": "10" + }, + "Audio": { + "Codec": "aac", + "Samplerate": "44100", + "Bitrate": "128", + "Channels": "4" + }, + "TransConfig": { + 'HlsEncrypt': { + 'IsHlsEncrypt': 'true', + 'UriKey': 'http://www.demo.com' + } + }, + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'transcode_output.mp4' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5' + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response def ci_create_media_transcode_jobs(): # 创建转码任务 body = { - 'Input':{ - 'Object':'117374C.mp4' + 'Input': { + 'Object': 'demo.mp4' }, - 'QueueId': 'pe943803693bd42d1a3105804ddaee525', + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxx8bf047454', 'Tag': 'Transcode', 'Operation': { - 'Output':{'Bucket':bucket_name, 'Region':region, 'Object':'117374C_output.mp4'}, - 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5' + "Transcode": { + "Container": { + "Format": "mp4" + }, + "Video": { + "Codec": "H.264", + "Profile": "high", + "Bitrate": "1000", + "Width": "1280", + "Fps": "30", + "Preset": "medium", + "Bufsize": "1000", + "Maxrate": "10" + }, + "Audio": { + "Codec": "aac", + "Samplerate": "44100", + "Bitrate": "128", + "Channels": "4" + }, + "TransConfig": { + "AdjDarMethod": "scale", + "IsCheckReso": "false", + "ResoAdjMethod": "1" + }, + "TimeInterval": { + "Start": "0", + "Duration": "60" + } + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'transcode_output.mp4' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5' } } response = client.ci_create_media_jobs( @@ -137,16 +327,583 @@ def ci_create_media_transcode_jobs(): ContentType='application/xml' ) print(response) - return response + return response + + +def ci_create_media_snapshot_jobs(): + # 创建截图任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'Snapshot', + 'Operation': { + 'Snapshot': { + 'Mode': 'Interval', + 'Width': '1280', + 'Height': '1280', + 'Start': '0', + 'TimeInterval': '', + 'Count': '1', + 'SnapshotOutMode': 'SnapshotAndSprite', + 'SpriteSnapshotConfig': { + "CellHeight": "128", + "CellWidth": "128", + "Color": "White", + "Columns": "10", + "Lines": "10", + "Margin": "0", + "Padding": "0" + } + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'snapshot-${Number}.jpg', + 'SpriteObject': 'sprite-snapshot-${Number}.jpg' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5' + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_animation_jobs(): + # 创建转动图任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'Animation', + 'Operation': { + "Animation": { + "Container": { + "Format": "gif" + }, + "Video": { + "Codec": "gif", + "Width": "1280", + "Fps": "15", + "AnimateOnlyKeepKeyFrame": "true" + }, + "TimeInterval": { + "Start": "0", + "Duration": "60" + } + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'snapshot.gif' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5' + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_concat_jobs(): + # 创建拼接任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'Concat', + 'Operation': { + "ConcatTemplate": { + "ConcatFragment": [ + { + "Url": "http://demo-1xxxxxxxxx.cos.ap-chongqing.myqcloud.com/1.mp4" + }, + { + "Url": "http://demo-1xxxxxxxxx.cos.ap-chongqing.myqcloud.com/2.mp4" + } + ], + "Audio": { + "Codec": "mp3" + }, + "Video": { + "Codec": "H.264", + "Bitrate": "1000", + "Width": "1280", + "Fps": "30" + }, + "Container": { + "Format": "mp4" + } + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'concat-result.mp4' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5' + } + } + lst = ['', ''] + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst=lst, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_smart_cover_jobs(): + # 创建智能封面任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'SmartCover', + 'Operation': { + 'SmartCover': { + 'Format': 'jpg', + 'Width': '128', + 'Height': '128', + 'Count': '3', + 'DeleteDuplicates': 'true' + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'smart-cover-${Number}.jpg' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5' + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_video_process_jobs(): + # 创建视频增强任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'VideoProcess', + 'Operation': { + "VideoProcess": { + "ColorEnhance": { + "Enable": "true", + "Contrast": "10", + "Correction": "10", + "Saturation": "10" + }, + "MsSharpen": { + "Enable": "true", + "SharpenLevel": "1" + } + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'video-process.mp4' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5', + 'TranscodeTemplateId': 't04e1ab86554984f1aa17c062fbf6c007c' + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_video_montage_jobs(): + # 创建截图任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'VideoMontage', + 'Operation': { + "VideoMontage": { + "Container": { + "Format": "mp4" + }, + "Video": { + "Codec": "H.264", + "Bitrate": "1000", + "Width": "1280", + "Height": "1280" + }, + "Audio": { + "Codec": "aac", + "Samplerate": "44100", + "Bitrate": "128", + "Channels": "4" + }, + "AudioMix": { + "AudioSource": "https://demo-xxxxxxxxxxxx.cos.ap-chongqing.myqcloud.com/1.mp4", + "MixMode": "Once", + "Replace": "true" + }, + "Duration": "1" + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'video-montage.mp4' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5', + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_voice_separate_jobs(): + # 创建人声分离任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'VoiceSeparate', + 'Operation': { + "VoiceSeparate": { + "AudioMode": "IsAudio", + "AudioConfig": { + "Codec": "mp3", + "Samplerate": "44100", + "Bitrate": "12", + "Channels": "2" + } + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'voice-separate.mp3', + 'AuObject': 'voice-separate-audio.mp3' + }, + # 'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5', + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_sdr2hdr_jobs(): + # 创建sdr2hdr任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'SDRtoHDR', + 'Operation': { + "SDRtoHDR": { + "HdrMode": "HLG", + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'sdr2hdr.mp4' + }, + 'TranscodeTemplateId': 't04e1ab86554984f1aa17c062fbf6c007c' + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_digital_watermark_jobs(): + # 创建嵌入数字水印任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'DigitalWatermark', + 'Operation': { + "DigitalWatermark": { + "Type": "Text", + "Message": "123456789ab", + "Version": "V1" + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'digital.mp4' + }, + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_extract_digital_watermark_jobs(): + # 创建提取数字水印任务 + body = { + 'Input':{ + 'Object': 'digital.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'ExtractDigitalWatermark', + 'Operation': { + "ExtractDigitalWatermark": { + "Type": "Text", + "Version": "V1" + }, + } + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_super_resolution_jobs(): + # 创建超分任务 + body = { + 'Input':{ + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'SuperResolution', + 'Operation': { + "SuperResolution": { + "Resolution": "sdtohd", + "EnableScaleUp": "true" + }, + 'TranscodeTemplateId': 't04e1ab86554984f1aa17c062fbf6c007c', + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'super.mp4' + }, + }, + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_video_tag_jobs(): + # 创建视频标签任务 + body = { + 'Input':{ + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'VideoTag', + 'Operation': { + "VideoTag": { + "Scenario": "Stream" + }, + }, + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_segment_jobs(): + # 创建转封装任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'Segment', + 'Operation': { + "Segment": { + "Format": "mp4", + "Duration": "5", + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'segment-${Number}.mp4' + }, + }, + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_multi_jobs(): + # 创建截图任务 + body = { + 'Input': { + 'Object': '117374C.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Operation': [ + { + 'Tag': 'Segment', + "Segment": { + "Format": "mp4", + "Duration": "50", + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'multi-segment-${Number}.mp4' + }, + }, + { + 'Tag': 'SDRtoHDR', + "SDRtoHDR": { + "HdrMode": "HLG", + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'multi-sdr2hdr.mp4' + }, + 'TranscodeTemplateId': 't04e1ab86554984f1aa17c062fbf6c007c' + } + ], + } + lst = ['', ''] + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst=lst, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_get_media_info_jobs(): + # 创建转封装任务 + body = { + 'Input': { + 'Object': 'demo.mp4' + }, + 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + 'Tag': 'MediaInfo', + } + response = client.ci_create_media_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response + + +def ci_create_media_pic_jobs(): + # 创建图片处理任务 + body = { + 'Input': { + 'Object': '1.png' + }, + 'QueueId': 'peb83bdbxxxxxxxxxxxxxxxxxxxa21c7d68', + 'Tag': 'PicProcess', + 'Operation': { + "PicProcess": { + "IsPicInfo": "true", + "ProcessRule": "imageMogr2/rotate/90", + }, + 'Output': { + 'Bucket': bucket_name, + 'Region': region, + 'Object': 'pic-process-result.png' + }, + } + } + response = client.ci_create_media_pic_jobs( + Bucket=bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + return response def ci_list_media_transcode_jobs(): # 转码任务 response = client.ci_list_media_jobs( Bucket=bucket_name, - QueueId='pe943803693bd42d1a3105804ddaee525', - Tag='Transcode', - ContentType='application/xml' + QueueId='p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', + Tag='DigitalWatermark', + ContentType='application/xml', + StartCreationTime='2022-05-27T00:00:00+0800', + EndCreationTime='2022-05-31T00:00:00+0800', + States='Success' ) print(response) return response @@ -156,11 +913,37 @@ def ci_get_media_transcode_jobs(): # 转码任务 response = client.ci_get_media_jobs( Bucket=bucket_name, - JobIDs='j3feb7ccc28fc11eca50b6f68c211dc6c,jb83bcc5a28fb11ecae48a1f29371c5f8', + JobIDs='j318302b8e0bc11ec97444b29c7b914d9', ContentType='application/xml' ) print(response) - return response + return response + + +def ci_list_media_pic_jobs(): + # 转码任务 + response = client.ci_list_media_pic_jobs( + Bucket=bucket_name, + QueueId='peb83bdbxxxxxxxxxxxxxxxxxxxa21c7d68', + Tag='PicProcess', + ContentType='application/xml', + StartCreationTime='2022-05-30T23:30:00+0800', + EndCreationTime='2022-05-31T01:00:00+0800', + States='Success' + ) + print(response) + return response + + +def ci_get_media_pic_jobs(): + # 转码任务 + response = client.ci_get_media_jobs( + Bucket=bucket_name, + JobIDs='c01742xxxxxxxxxxxxxxxxxx7438e39', + ContentType='application/xml' + ) + print(response) + return response def get_media_info(): @@ -200,8 +983,8 @@ def ci_trigger_workflow(): # 触发工作流接口 response = client.ci_trigger_workflow( Bucket=bucket_name, - WorkflowId='w1b4ffd6900a343c3a2fe5b92b1fb7ff6', - Key='117374C.mp4' + WorkflowId='w7ab318b29dfd46e2865b8d3420997a8a', + Key='1.png' ) print(response) return response @@ -211,7 +994,7 @@ def ci_get_workflowexecution(): # 查询工作流实例接口 response = client.ci_get_workflowexecution( Bucket=bucket_name, - RunId='id1f94868688111eca793525400ca1839' + RunId='i542ecaace02411ec9506525400c540df' ) print(response) return response @@ -221,20 +1004,46 @@ def ci_list_workflowexecution(): # 查询工作流实例接口 response = client.ci_list_workflowexecution( Bucket=bucket_name, - WorkflowId='w1b4ffd6900a343c3a2fe5b92b1fb7ff6' + WorkflowId='w7ab318b29dfd46e2865b8d3420997a8a', + ) print(response) return response if __name__ == "__main__": - #ci_get_media_queue() - #ci_get_media_transcode_jobs() - #ci_create_media_transcode_jobs() + # ci_get_media_queue() + # ci_get_media_transcode_jobs() + # ci_create_media_transcode_jobs() # get_media_info() # get_snapshot() - #ci_trigger_workflow() - #ci_list_workflowexecution() + # ci_trigger_workflow() + # ci_list_workflowexecution() # ci_get_workflowexecution() # ci_get_media_bucket() - get_pm3u8() + # get_pm3u8() + # ci_create_media_snapshot_jobs() + # ci_create_media_animation_jobs() + # ci_create_media_smart_cover_jobs() + # ci_create_media_video_process_jobs() + # ci_create_media_video_montage_jobs() + # ci_create_media_voice_separate_jobs() + # ci_create_media_sdr2hdr_jobs() + # ci_create_media_super_resolution_jobs() + # ci_create_media_concat_jobs() + # ci_create_media_digital_watermark_jobs() + # ci_create_media_extract_digital_watermark_jobs() + # ci_create_media_video_tag_jobs() + # ci_create_media_segment_jobs() + # ci_create_multi_jobs() + # ci_create_media_pic_jobs() + # ci_get_media_pic_jobs() + # ci_create_get_media_info_jobs() + # ci_put_media_queue() + # ci_create_media_transcode_with_watermark_jobs() + # ci_create_media_transcode_with_digital_watermark_jobs() + # ci_create_media_hls_transcode_jobs() + # ci_list_media_transcode_jobs() + ci_list_media_pic_jobs() + # ci_get_media_pic_queue() + # ci_put_media_pic_queue() diff --git a/qcloud_cos/cos_client.py b/qcloud_cos/cos_client.py index 0212cac9..b0e056cf 100644 --- a/qcloud_cos/cos_client.py +++ b/qcloud_cos/cos_client.py @@ -5596,10 +5596,14 @@ def ci_get_media_bucket(self, Regions='', BucketName='', BucketNames='', PageNum format_dict(data, ['MediaBucketList']) return data - def ci_get_media_queue(self, Bucket, **kwargs): + def ci_get_media_queue(self, Bucket, state, queueIds='', pageNumber='', pageSize='', path='/queue', **kwargs): """查询媒体处理队列接口 https://cloud.tencent.com/document/product/436/54045 :param Bucket(string): 存储桶名称. + :param queueIds(string): 队列 ID,以“,”符号分割字符串. + :param state(string): 队列状态 + :param pageNumber(string): 第几页 + :param pageSize(string): 每页个数 :param kwargs(dict): 设置请求的headers. :return(dict): 查询成功返回的结果,dict类型. @@ -5625,8 +5629,15 @@ def ci_get_media_queue(self, Bucket, **kwargs): params = format_values(params) - path = "/queue" + path = path url = self._conf.uri(bucket=Bucket, path=path, endpoint=self._conf._endpoint_ci) + url = u"{url}?{queueIds}&{state}&{pageNumber}&{pageSize}".format( + url=to_unicode(url), + queueIds=to_unicode('queueIds='+queueIds), + state=to_unicode('state='+state), + pageNumber=to_unicode('pageNumber='+pageNumber), + pageSize=to_unicode('pageSize='+pageSize), + ) logger.info("get_media_queue result, url=:{url} ,headers=:{headers}, params=:{params}".format( url=url, headers=headers, @@ -5644,6 +5655,109 @@ def ci_get_media_queue(self, Bucket, **kwargs): format_dict(data, ['QueueList']) return data + def ci_update_media_queue(self, Bucket, QueueId, Request={}, Path="/queue/", **kwargs): + """ 更新媒体处理队列接口 https://cloud.tencent.com/document/product/436/54046 + + :param Bucket(string): 存储桶名称. + :param QueueId(string): 队列ID. + :param Request(dict): 更新队列配置请求体. + :param kwargs(dict): 设置请求的headers. + :return(dict): 查询成功返回的结果,dict类型. + + .. code-block:: python + + config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象 + client = CosS3Client(config) + # 创建任务接口 + response = client.ci_update_media_queue( + Bucket='bucket', + QueueId='', + Request={}, + ) + print response + """ + headers = mapped(kwargs) + final_headers = {} + params = {} + for key in headers: + if key.startswith("response"): + params[key] = headers[key] + else: + final_headers[key] = headers[key] + headers = final_headers + + params = format_values(params) + xml_config = format_xml(data=Request, root='Request') + path = Path + QueueId + url = self._conf.uri(bucket=Bucket, path=path, endpoint=self._conf._endpoint_ci) + logger.info("update_media_queue result, url=:{url} ,headers=:{headers}, params=:{params}, xml_config=:{xml_config}".format( + url=url, + headers=headers, + params=params, + xml_config=xml_config)) + rt = self.send_request( + method='PUT', + url=url, + bucket=Bucket, + data=xml_config, + auth=CosS3Auth(self._conf, path, params=params), + params=params, + headers=headers) + + data = xml_to_dict(rt.content) + # 单个元素时将dict转为list + format_dict(data, ['Queue']) + return data + + def ci_update_media_pic_queue(self, Bucket, QueueId, Request={}, **kwargs): + """ 更新图片处理队列接口 + + :param Bucket(string): 存储桶名称. + :param QueueId(string): 队列ID. + :param Request(dict): 更新队列配置请求体. + :param kwargs(dict): 设置请求的headers. + :return(dict): 查询成功返回的结果,dict类型. + + .. code-block:: python + + config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象 + client = CosS3Client(config) + # 创建任务接口 + response = client.ci_update_media_pic_queue( + Bucket='bucket', + QueueId='', + Request={}, + ) + print response + """ + return self.ci_update_media_queue(Bucket=Bucket, QueueId=QueueId, + Request=Request, Path="/picqueue/", **kwargs) + + def ci_get_media_pic_queue(self, Bucket, state, queueIds='', pageNumber='', pageSize='', **kwargs): + """查询图片处理队列接口 + + :param Bucket(string): 存储桶名称. + :param queueIds(string): 队列 ID,以“,”符号分割字符串. + :param state(string): 队列状态 + :param pageNumber(string): 第几页 + :param pageSize(string): 每页个数 + :param kwargs(dict): 设置请求的headers. + :return(dict): 查询成功返回的结果,dict类型. + + .. code-block:: python + + config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象 + client = CosS3Client(config) + # 查询媒体处理队列接口 + response = client.ci_get_media_pic_queue( + Bucket='bucket' + ) + print response + """ + return self.ci_get_media_queue(Bucket=Bucket, state=state, queueIds=queueIds, + pageNumber=pageNumber, pageSize=pageSize, + path="/picqueue", **kwargs) + def ci_create_media_jobs(self, Bucket, Jobs={}, Lst={}, **kwargs): """ 创建任务接口 https://cloud.tencent.com/document/product/436/54013 @@ -5698,6 +5812,60 @@ def ci_create_media_jobs(self, Bucket, Jobs={}, Lst={}, **kwargs): format_dict(data, ['JobsDetail']) return data + def ci_create_media_pic_jobs(self, Bucket, Jobs={}, Lst={}, **kwargs): + """ 创建图片处理任务接口 https://cloud.tencent.com/document/product/436/67194 + + :param Bucket(string): 存储桶名称. + :param Jobs(dict): 创建任务的配置. + :param Lst(dict): 创建任务dict转xml时去除Key数组. + :param kwargs(dict): 设置请求的headers. + :return(dict): 查询成功返回的结果,dict类型. + + .. code-block:: python + + config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象 + client = CosS3Client(config) + # 创建任务接口 + response = client.ci_create_media_pic_jobs( + Bucket='bucket' + Jobs={}, + Lst={} + ) + print response + """ + headers = mapped(kwargs) + final_headers = {} + params = {} + for key in headers: + if key.startswith("response"): + params[key] = headers[key] + else: + final_headers[key] = headers[key] + headers = final_headers + + params = format_values(params) + xml_config = format_xml(data=Jobs, root='Request', lst=Lst) + path = "/pic_jobs" + url = self._conf.uri(bucket=Bucket, path=path, endpoint=self._conf._endpoint_ci) + logger.info("create_media_pic_jobs result, url=:{url} ,headers=:{headers}, params=:{params}, xml_config=:{xml_config}".format( + url=url, + headers=headers, + params=params, + xml_config=xml_config)) + rt = self.send_request( + method='POST', + url=url, + bucket=Bucket, + data=xml_config, + auth=CosS3Auth(self._conf, path, params=params), + params=params, + headers=headers) + + data = xml_to_dict(rt.content) + # 单个元素时将dict转为list + format_dict(data, ['JobsDetail']) + return data + def ci_get_media_jobs(self, Bucket, JobIDs, **kwargs): """ 查询任务接口 https://cloud.tencent.com/document/product/436/54010 @@ -5750,7 +5918,92 @@ def ci_get_media_jobs(self, Bucket, JobIDs, **kwargs): format_dict(data, ['JobsDetail']) return data - def ci_list_media_jobs(self, Bucket, QueueId, Tag, StartCreationTime=None, EndCreationTime=None, OrderByTime='Desc', States='All', Size=10, NextToken='', **kwargs): + def ci_get_media_pic_jobs(self, Bucket, JobIDs, **kwargs): + """ 查询图片处理任务接口 https://cloud.tencent.com/document/product/436/67197 + + :param Bucket(string): 存储桶名称. + :param JobIDs(string): 任务ID,以,分割多个任务ID. + :param kwargs(dict): 设置请求的headers. + :return(dict): 查询成功返回的结果,dict类型. + + .. code-block:: python + + config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象 + client = CosS3Client(config) + # 创建任务接口 + response = client.ci_get_media_pic_jobs( + Bucket='bucket' + JobIDs={} + ) + print response + """ + headers = mapped(kwargs) + final_headers = {} + params = {} + for key in headers: + if key.startswith("response"): + params[key] = headers[key] + else: + final_headers[key] = headers[key] + headers = final_headers + + params = format_values(params) + path = "/pic_jobs/" + JobIDs + url = self._conf.uri(bucket=Bucket, path=path, endpoint=self._conf._endpoint_ci) + logger.info("get_media_jobs result, url=:{url} ,headers=:{headers}, params=:{params}".format( + url=url, + headers=headers, + params=params)) + rt = self.send_request( + method='GET', + url=url, + bucket=Bucket, + auth=CosS3Auth(self._conf, path, params=params), + params=params, + headers=headers) + logger.debug("ci_get_media_pic_jobs result, url=:{url} ,content=:{content}".format( + url=url, + content=rt.content)) + + data = xml_to_dict(rt.content) + # 单个元素时将dict转为list + format_dict(data, ['JobsDetail']) + return data + + def ci_list_media_pic_jobs(self, Bucket, QueueId, Tag, StartCreationTime=None, EndCreationTime=None, OrderByTime='Desc', States='All', Size=10, NextToken='', **kwargs): + """ 查询图片处理任务列表接口 https://cloud.tencent.com/document/product/436/67198 + + :param Bucket(string): 存储桶名称. + :param QueueId(string): 队列ID. + :param Tag(string): 任务类型. + :param StartCreationTime(string): 开始时间. + :param EndCreationTime(string): 结束时间. + :param OrderByTime(string): 排序方式. + :param States(string): 任务状态. + :param Size(string): 任务个数. + :param NextToken(string): 请求的上下文,用于翻页. + :param kwargs(dict): 设置请求的headers. + :return(dict): 查询成功返回的结果,dict类型. + + .. code-block:: python + + config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象 + client = CosS3Client(config) + # 创建任务接口 + response = client.ci_get_media_pic_jobs( + Bucket='bucket' + QueueId='', + Tag='PicProcess' + ) + print response + """ + return self.ci_list_media_jobs(Bucket=Bucket, QueueId=QueueId, Tag=Tag, + StartCreationTime=StartCreationTime, + EndCreationTime=EndCreationTime, + OrderByTime=OrderByTime, States=States, + Size=Size, NextToken=NextToken, Path='/pic_jobs', **kwargs) + + def ci_list_media_jobs(self, Bucket, QueueId, Tag, StartCreationTime=None, EndCreationTime=None, OrderByTime='Desc', States='All', Size=10, NextToken='', Path='/jobs', **kwargs): """ 查询任务接口 https://cloud.tencent.com/document/product/436/54011 :param Bucket(string): 存储桶名称. @@ -5788,7 +6041,7 @@ def ci_list_media_jobs(self, Bucket, QueueId, Tag, StartCreationTime=None, EndCr headers = final_headers params = format_values(params) - path = "/jobs" + path = Path url = self._conf.uri(bucket=Bucket, path=path, endpoint=self._conf._endpoint_ci) url = u"{url}?{QueueId}&{Tag}&{OrderByTime}&{States}&{Size}&{NextToken}".format( url=to_unicode(url), @@ -5800,9 +6053,11 @@ def ci_list_media_jobs(self, Bucket, QueueId, Tag, StartCreationTime=None, EndCr NextToken=to_unicode('nextToken='+NextToken) ) if StartCreationTime is not None: - url = u"{url}&{StartCreationTime}".format(StartCreationTime=to_unicode('startCreationTime='+StartCreationTime)) + url = u"{url}&{StartCreationTime}".format(url=url, + StartCreationTime=quote(to_bytes(to_unicode('startCreationTime='+StartCreationTime)), b'/-_.~=')) if EndCreationTime is not None: - url = u"{url}&{EndCreationTime}".format(EndCreationTime=to_unicode('endCreationTime='+EndCreationTime)) + url = u"{url}&{EndCreationTime}".format(url=url, + EndCreationTime=quote(to_bytes(to_unicode('endCreationTime='+EndCreationTime)), b'/-_.~=')) logger.info("list_media_jobs result, url=:{url} ,headers=:{headers}, params=:{params}".format( url=url, headers=headers, diff --git a/ut/test.py b/ut/test.py index c85b2a2c..7743a27e 100644 --- a/ut/test.py +++ b/ut/test.py @@ -1631,6 +1631,18 @@ def test_ci_get_media_queue(): assert (response['QueueList']) +def test_ci_get_media_pic_queue(): + if TEST_CI != 'true': + return + + # 查询图片处理队列信息 + response = client.ci_get_media_pic_queue( + Bucket=ci_bucket_name, + ) + print(response) + assert (response['QueueList']) + + def test_ci_create_media_transcode_watermark_jobs(): if TEST_CI != 'true': return @@ -1742,6 +1754,64 @@ def test_ci_create_media_transcode_jobs(): assert (response['JobsDetail']) +def test_ci_create_media_pic_jobs(): + if TEST_CI != 'true': + return + + response = client.ci_get_media_pic_queue( + Bucket=ci_bucket_name + ) + QueueId = response['QueueList'][0]['QueueId'] + # 创建图片处理任务 + body = { + 'Input': { + 'Object': '1.png' + }, + 'QueueId': QueueId, + 'Tag': 'PicProcess', + 'Operation': { + "PicProcess": { + "IsPicInfo": "true", + "ProcessRule": "imageMogr2/rotate/90", + }, + 'Output': { + 'Bucket': ci_bucket_name, + 'Region': ci_region, + 'Object': 'pic-process-result.png' + }, + } + } + response = client.ci_create_media_pic_jobs( + Bucket=ci_bucket_name, + Jobs=body, + Lst={}, + ContentType='application/xml' + ) + print(response) + assert (response['JobsDetail']) + + +def test_ci_list_media_pic_jobs(): + if TEST_CI != 'true': + return + + # 图片处理任务列表 + response = client.ci_get_media_pic_queue( + Bucket=ci_bucket_name + ) + QueueId = response['QueueList'][0]['QueueId'] + + response = client.ci_list_media_pic_jobs( + Bucket=ci_bucket_name, + QueueId=QueueId, + Tag='PicProcess', + ContentType='application/xml', + States='Success' + ) + print(response) + assert (response['JobsDetail']) + + def test_ci_list_media_transcode_jobs(): if TEST_CI != 'true': return @@ -1996,5 +2066,8 @@ def test_sse_c_file(): test_get_pm3u8() test_ci_get_media_bucket() test_sse_c_file() + test_ci_list_media_pic_jobs() + test_ci_create_media_pic_jobs() + test_ci_get_media_pic_queue() """ tearDown() From 433a31a15c734283da5b3ded012e50f59c5c546d Mon Sep 17 00:00:00 2001 From: flynnzzhang Date: Tue, 31 May 2022 22:11:47 +0800 Subject: [PATCH 2/6] =?UTF-8?q?ut=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ut/test.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ut/test.py b/ut/test.py index 7743a27e..40ea335e 100644 --- a/ut/test.py +++ b/ut/test.py @@ -1625,7 +1625,8 @@ def test_ci_get_media_queue(): # 查询媒体队列信息 response = client.ci_get_media_queue( - Bucket=ci_bucket_name + Bucket=ci_bucket_name, + state="Active", ) print(response) assert (response['QueueList']) @@ -1638,6 +1639,7 @@ def test_ci_get_media_pic_queue(): # 查询图片处理队列信息 response = client.ci_get_media_pic_queue( Bucket=ci_bucket_name, + state="Active", ) print(response) assert (response['QueueList']) @@ -1649,8 +1651,9 @@ def test_ci_create_media_transcode_watermark_jobs(): # 创建转码任务 response = client.ci_get_media_queue( - Bucket=ci_bucket_name - ) + Bucket=ci_bucket_name, + state="Active", + ) QueueId = response['QueueList'][0]['QueueId'] body = { @@ -1726,8 +1729,9 @@ def test_ci_create_media_transcode_jobs(): # 创建转码任务 response = client.ci_get_media_queue( - Bucket=ci_bucket_name - ) + Bucket=ci_bucket_name, + state="Active", + ) QueueId = response['QueueList'][0]['QueueId'] body = { 'Input': { @@ -1759,7 +1763,8 @@ def test_ci_create_media_pic_jobs(): return response = client.ci_get_media_pic_queue( - Bucket=ci_bucket_name + Bucket=ci_bucket_name, + state="Active", ) QueueId = response['QueueList'][0]['QueueId'] # 创建图片处理任务 @@ -1797,7 +1802,8 @@ def test_ci_list_media_pic_jobs(): # 图片处理任务列表 response = client.ci_get_media_pic_queue( - Bucket=ci_bucket_name + Bucket=ci_bucket_name, + state="Active", ) QueueId = response['QueueList'][0]['QueueId'] @@ -1818,8 +1824,9 @@ def test_ci_list_media_transcode_jobs(): # 转码任务 response = client.ci_get_media_queue( - Bucket=ci_bucket_name - ) + Bucket=ci_bucket_name, + state="Active", + ) QueueId = response['QueueList'][0]['QueueId'] response = client.ci_list_media_jobs( Bucket=ci_bucket_name, From 796f30bbe35d5cf21d5bd4424a5e642b8a3ec62f Mon Sep 17 00:00:00 2001 From: flynnzzhang Date: Tue, 31 May 2022 22:28:45 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/ci_media.py | 12 ++---------- qcloud_cos/cos_client.py | 4 ++-- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/demo/ci_media.py b/demo/ci_media.py index 4463f886..4ba7f2ba 100644 --- a/demo/ci_media.py +++ b/demo/ci_media.py @@ -47,10 +47,6 @@ def ci_get_media_queue(): # 查询媒体队列信息 response = client.ci_get_media_queue( Bucket=bucket_name, - state='Active', - queueIds='p5135bcxxxxxxxxxxxxxbf047454', - pageNumber='1', - pageSize='1' ) print(response) return response @@ -60,10 +56,6 @@ def ci_get_media_pic_queue(): # 查询媒体队列信息 response = client.ci_get_media_pic_queue( Bucket=bucket_name, - state='Active', - queueIds='peb83bxxxxxxxxxxxxxxx21c7d68', - pageNumber='1', - pageSize='1' ) print(response) return response @@ -1012,7 +1004,7 @@ def ci_list_workflowexecution(): if __name__ == "__main__": - # ci_get_media_queue() + ci_get_media_queue() # ci_get_media_transcode_jobs() # ci_create_media_transcode_jobs() # get_media_info() @@ -1044,6 +1036,6 @@ def ci_list_workflowexecution(): # ci_create_media_transcode_with_digital_watermark_jobs() # ci_create_media_hls_transcode_jobs() # ci_list_media_transcode_jobs() - ci_list_media_pic_jobs() + # ci_list_media_pic_jobs() # ci_get_media_pic_queue() # ci_put_media_pic_queue() diff --git a/qcloud_cos/cos_client.py b/qcloud_cos/cos_client.py index b0e056cf..ca985d21 100644 --- a/qcloud_cos/cos_client.py +++ b/qcloud_cos/cos_client.py @@ -5596,7 +5596,7 @@ def ci_get_media_bucket(self, Regions='', BucketName='', BucketNames='', PageNum format_dict(data, ['MediaBucketList']) return data - def ci_get_media_queue(self, Bucket, state, queueIds='', pageNumber='', pageSize='', path='/queue', **kwargs): + def ci_get_media_queue(self, Bucket, state='All', queueIds='', pageNumber='', pageSize='', path='/queue', **kwargs): """查询媒体处理队列接口 https://cloud.tencent.com/document/product/436/54045 :param Bucket(string): 存储桶名称. @@ -5733,7 +5733,7 @@ def ci_update_media_pic_queue(self, Bucket, QueueId, Request={}, **kwargs): return self.ci_update_media_queue(Bucket=Bucket, QueueId=QueueId, Request=Request, Path="/picqueue/", **kwargs) - def ci_get_media_pic_queue(self, Bucket, state, queueIds='', pageNumber='', pageSize='', **kwargs): + def ci_get_media_pic_queue(self, Bucket, state='All', queueIds='', pageNumber='', pageSize='', **kwargs): """查询图片处理队列接口 :param Bucket(string): 存储桶名称. From b1f1f530ef7d9be84fa9fae7d665defd6f28827e Mon Sep 17 00:00:00 2001 From: flynnzzhang Date: Wed, 1 Jun 2022 10:50:18 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/ci_media.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/demo/ci_media.py b/demo/ci_media.py index 4ba7f2ba..8b7d0e74 100644 --- a/demo/ci_media.py +++ b/demo/ci_media.py @@ -53,7 +53,7 @@ def ci_get_media_queue(): def ci_get_media_pic_queue(): - # 查询媒体队列信息 + # 查询图片处理队列信息 response = client.ci_get_media_pic_queue( Bucket=bucket_name, ) @@ -62,7 +62,7 @@ def ci_get_media_pic_queue(): def ci_put_media_queue(): - # 查询媒体队列信息 + # 更新媒体队列信息 body = { 'Name': 'media-queue', 'QueueID': 'p5135bc6xxxxxxxxxxxxxxxxf047454', @@ -86,7 +86,7 @@ def ci_put_media_queue(): def ci_put_media_pic_queue(): - # 查询媒体队列信息 + # 更新图片处理队列信息 body = { 'Name': 'media-pic-queue', 'QueueID': 'peb83bdxxxxxxxxxxxxxxxxa21c7d68', @@ -110,7 +110,7 @@ def ci_put_media_pic_queue(): def ci_create_media_transcode_with_digital_watermark_jobs(): - # 创建转码任务 + # 创建带数字水印的转码任务 body = { 'Input': { 'Object': 'demo.mp4' @@ -143,7 +143,7 @@ def ci_create_media_transcode_with_digital_watermark_jobs(): def ci_create_media_transcode_with_watermark_jobs(): - # 创建转码任务 + # 创建带水印的转码任务 body = { 'Input': { 'Object': 'demo.mp4' @@ -535,7 +535,7 @@ def ci_create_media_video_process_jobs(): def ci_create_media_video_montage_jobs(): - # 创建截图任务 + # 创建精彩集锦任务 body = { 'Input': { 'Object': 'demo.mp4' @@ -685,7 +685,7 @@ def ci_create_media_digital_watermark_jobs(): def ci_create_media_extract_digital_watermark_jobs(): # 创建提取数字水印任务 body = { - 'Input':{ + 'Input': { 'Object': 'digital.mp4' }, 'QueueId': 'p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', @@ -793,7 +793,7 @@ def ci_create_media_segment_jobs(): def ci_create_multi_jobs(): - # 创建截图任务 + # 创建多任务 body = { 'Input': { 'Object': '117374C.mp4' @@ -838,7 +838,7 @@ def ci_create_multi_jobs(): def ci_create_get_media_info_jobs(): - # 创建转封装任务 + # 创建获取媒体信息任务 body = { 'Input': { 'Object': 'demo.mp4' @@ -887,7 +887,7 @@ def ci_create_media_pic_jobs(): def ci_list_media_transcode_jobs(): - # 转码任务 + # 转码任务列表 response = client.ci_list_media_jobs( Bucket=bucket_name, QueueId='p5135bxxxxxxxxxxxxxxxxxxxc8bf047454', @@ -902,7 +902,7 @@ def ci_list_media_transcode_jobs(): def ci_get_media_transcode_jobs(): - # 转码任务 + # 转码任务详情 response = client.ci_get_media_jobs( Bucket=bucket_name, JobIDs='j318302b8e0bc11ec97444b29c7b914d9', @@ -913,7 +913,7 @@ def ci_get_media_transcode_jobs(): def ci_list_media_pic_jobs(): - # 转码任务 + # 图片处理任务列表 response = client.ci_list_media_pic_jobs( Bucket=bucket_name, QueueId='peb83bdbxxxxxxxxxxxxxxxxxxxa21c7d68', @@ -928,7 +928,7 @@ def ci_list_media_pic_jobs(): def ci_get_media_pic_jobs(): - # 转码任务 + # 图片处理任务详情 response = client.ci_get_media_jobs( Bucket=bucket_name, JobIDs='c01742xxxxxxxxxxxxxxxxxx7438e39', From d0ac61b90a663d5cd873f4b3e76414932da61cf1 Mon Sep 17 00:00:00 2001 From: flynnzzhang Date: Wed, 15 Jun 2022 11:28:32 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qcloud_cos/cos_client.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/qcloud_cos/cos_client.py b/qcloud_cos/cos_client.py index fd3c96dd..ba1668f4 100644 --- a/qcloud_cos/cos_client.py +++ b/qcloud_cos/cos_client.py @@ -5641,14 +5641,15 @@ def ci_get_media_bucket(self, Regions='', BucketName='', BucketNames='', PageNum format_dict(data, ['MediaBucketList']) return data - def ci_get_media_queue(self, Bucket, state='All', queueIds='', pageNumber='', pageSize='', path='/queue', **kwargs): + def ci_get_media_queue(self, Bucket, State='All', QueueIds='', PageNumber='', PageSize='', UrlPath='/queue', **kwargs): """查询媒体处理队列接口 https://cloud.tencent.com/document/product/436/54045 :param Bucket(string): 存储桶名称. - :param queueIds(string): 队列 ID,以“,”符号分割字符串. - :param state(string): 队列状态 - :param pageNumber(string): 第几页 - :param pageSize(string): 每页个数 + :param QueueIds(string): 队列 ID,以“,”符号分割字符串. + :param State(string): 队列状态 + :param PageNumber(string): 第几页 + :param PageSize(string): 每页个数 + :param UrlPath(string): 请求URL路径,无需主动设置 :param kwargs(dict): 设置请求的headers. :return(dict): 查询成功返回的结果,dict类型. @@ -5674,14 +5675,14 @@ def ci_get_media_queue(self, Bucket, state='All', queueIds='', pageNumber='', pa params = format_values(params) - path = path + path = UrlPath url = self._conf.uri(bucket=Bucket, path=path, endpoint=self._conf._endpoint_ci) url = u"{url}?{queueIds}&{state}&{pageNumber}&{pageSize}".format( url=to_unicode(url), - queueIds=to_unicode('queueIds='+queueIds), - state=to_unicode('state='+state), - pageNumber=to_unicode('pageNumber='+pageNumber), - pageSize=to_unicode('pageSize='+pageSize), + queueIds=to_unicode('queueIds='+QueueIds), + state=to_unicode('state='+State), + pageNumber=to_unicode('pageNumber='+PageNumber), + pageSize=to_unicode('pageSize='+PageSize), ) logger.info("get_media_queue result, url=:{url} ,headers=:{headers}, params=:{params}".format( url=url, @@ -5700,12 +5701,13 @@ def ci_get_media_queue(self, Bucket, state='All', queueIds='', pageNumber='', pa format_dict(data, ['QueueList']) return data - def ci_update_media_queue(self, Bucket, QueueId, Request={}, Path="/queue/", **kwargs): + def ci_update_media_queue(self, Bucket, QueueId, Request={}, UrlPath="/queue/", **kwargs): """ 更新媒体处理队列接口 https://cloud.tencent.com/document/product/436/54046 :param Bucket(string): 存储桶名称. :param QueueId(string): 队列ID. :param Request(dict): 更新队列配置请求体. + :param UrlPath(string): 请求URL路径,无需主动设置 :param kwargs(dict): 设置请求的headers. :return(dict): 查询成功返回的结果,dict类型. @@ -5733,7 +5735,7 @@ def ci_update_media_queue(self, Bucket, QueueId, Request={}, Path="/queue/", **k params = format_values(params) xml_config = format_xml(data=Request, root='Request') - path = Path + QueueId + path = UrlPath + QueueId url = self._conf.uri(bucket=Bucket, path=path, endpoint=self._conf._endpoint_ci) logger.info("update_media_queue result, url=:{url} ,headers=:{headers}, params=:{params}, xml_config=:{xml_config}".format( url=url, From 879d16fc1a16c00e66d5be3e5a2d26be1c23756e Mon Sep 17 00:00:00 2001 From: flynnzzhang Date: Wed, 15 Jun 2022 14:17:10 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qcloud_cos/cos_client.py | 18 +++++++++--------- ut/test.py | 14 +++++++------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/qcloud_cos/cos_client.py b/qcloud_cos/cos_client.py index ba1668f4..1d2ddc9b 100644 --- a/qcloud_cos/cos_client.py +++ b/qcloud_cos/cos_client.py @@ -5778,16 +5778,16 @@ def ci_update_media_pic_queue(self, Bucket, QueueId, Request={}, **kwargs): print response """ return self.ci_update_media_queue(Bucket=Bucket, QueueId=QueueId, - Request=Request, Path="/picqueue/", **kwargs) + Request=Request, UrlPath="/picqueue/", **kwargs) - def ci_get_media_pic_queue(self, Bucket, state='All', queueIds='', pageNumber='', pageSize='', **kwargs): + def ci_get_media_pic_queue(self, Bucket, State='All', QueueIds='', PageNumber='', PageSize='', **kwargs): """查询图片处理队列接口 :param Bucket(string): 存储桶名称. - :param queueIds(string): 队列 ID,以“,”符号分割字符串. - :param state(string): 队列状态 - :param pageNumber(string): 第几页 - :param pageSize(string): 每页个数 + :param QueueIds(string): 队列 ID,以“,”符号分割字符串. + :param State(string): 队列状态 + :param PageNumber(string): 第几页 + :param PageSize(string): 每页个数 :param kwargs(dict): 设置请求的headers. :return(dict): 查询成功返回的结果,dict类型. @@ -5801,9 +5801,9 @@ def ci_get_media_pic_queue(self, Bucket, state='All', queueIds='', pageNumber='' ) print response """ - return self.ci_get_media_queue(Bucket=Bucket, state=state, queueIds=queueIds, - pageNumber=pageNumber, pageSize=pageSize, - path="/picqueue", **kwargs) + return self.ci_get_media_queue(Bucket=Bucket, State=State, QueueIds=QueueIds, + PageNumber=PageNumber, PageSize=PageSize, + UrlPath="/picqueue", **kwargs) def ci_create_media_jobs(self, Bucket, Jobs={}, Lst={}, **kwargs): """ 创建任务接口 https://cloud.tencent.com/document/product/436/54013 diff --git a/ut/test.py b/ut/test.py index bc0b0959..5513ab61 100644 --- a/ut/test.py +++ b/ut/test.py @@ -1629,7 +1629,7 @@ def test_ci_get_media_queue(): # 查询媒体队列信息 response = client.ci_get_media_queue( Bucket=ci_bucket_name, - state="Active", + State="Active", ) print(response) assert (response['QueueList']) @@ -1642,7 +1642,7 @@ def test_ci_get_media_pic_queue(): # 查询图片处理队列信息 response = client.ci_get_media_pic_queue( Bucket=ci_bucket_name, - state="Active", + State="Active", ) print(response) assert (response['QueueList']) @@ -1655,7 +1655,7 @@ def test_ci_create_media_transcode_watermark_jobs(): # 创建转码任务 response = client.ci_get_media_queue( Bucket=ci_bucket_name, - state="Active", + State="Active", ) QueueId = response['QueueList'][0]['QueueId'] @@ -1733,7 +1733,7 @@ def test_ci_create_media_transcode_jobs(): # 创建转码任务 response = client.ci_get_media_queue( Bucket=ci_bucket_name, - state="Active", + State="Active", ) QueueId = response['QueueList'][0]['QueueId'] body = { @@ -1767,7 +1767,7 @@ def test_ci_create_media_pic_jobs(): response = client.ci_get_media_pic_queue( Bucket=ci_bucket_name, - state="Active", + State="Active", ) QueueId = response['QueueList'][0]['QueueId'] # 创建图片处理任务 @@ -1806,7 +1806,7 @@ def test_ci_list_media_pic_jobs(): # 图片处理任务列表 response = client.ci_get_media_pic_queue( Bucket=ci_bucket_name, - state="Active", + State="Active", ) QueueId = response['QueueList'][0]['QueueId'] @@ -1828,7 +1828,7 @@ def test_ci_list_media_transcode_jobs(): # 转码任务 response = client.ci_get_media_queue( Bucket=ci_bucket_name, - state="Active", + State="Active", ) QueueId = response['QueueList'][0]['QueueId'] response = client.ci_list_media_jobs(