Skip to content

Commit d6e5807

Browse files
authored
Merge pull request #247 from bug-is-zhang/master
Update ci sdk
2 parents 422d287 + efdd036 commit d6e5807

File tree

3 files changed

+740
-33
lines changed

3 files changed

+740
-33
lines changed

demo/ci_file_process.py

Lines changed: 131 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# -*- coding=utf-8
2+
import base64
23

34
from qcloud_cos import CosConfig
45
from qcloud_cos import CosS3Client
@@ -13,10 +14,6 @@
1314

1415
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
1516

16-
# 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在CosConfig中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
17-
# secret_id = os.environ["SECRETID"] # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
18-
# secret_key = os.environ["SECRETKEY"] # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
19-
2017
secret_id = os.environ["SECRETID"] # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
2118
secret_key = os.environ["SECRETKEY"] # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
2219
region = 'ap-chongqing' # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
@@ -31,69 +28,176 @@
3128

3229

3330
def ci_get_file_hash():
34-
response = client.file_hash(Bucket=bucket_name, Key="mytest.mp4", Type='md5')
31+
# 同步获取文件哈希值
32+
response = client.file_hash(
33+
Bucket=bucket_name, # 文件所在的桶名称
34+
Key="mytest.mp4", # 需要获取哈希值的文件名
35+
Type='md5', # 哈希算法类型,有效值:md5、sha1、sha256.
36+
AddToHeader=True # 是否将计算得到的哈希值,自动添加至文件的自定义header. 格式为:x-cos-meta-md5/sha1/sha256; 有效值: True、False,不填则默认为False.
37+
)
3538
print(response)
3639
return response
3740

3841

3942
def ci_create_file_hash_job():
43+
# 创建获取文件哈希值异步任务
4044
body = {
45+
# 获取文件哈希值配置详情
46+
47+
# 哈希值的算法类型
48+
# 必选,有效值:MD5、SHA1、SHA256。
4149
'Type': 'MD5',
50+
# 是否将计算得到的哈希值添加至文件自定义header,自定义header根据Type的值变化,例如Type值为MD5时,自定义header为 x-cos-meta-md5。
51+
# 非必选,有效值:true、false,默认值为 false。
52+
'AddToHeader': 'true'
53+
}
54+
mq_config = {
55+
# 消息队列所属园区
56+
# 必选。目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港)
57+
'MqRegion': 'bj',
58+
# 消息队列使用模式
59+
# 必选。主题订阅:Topic 队列服务: Queue
60+
'MqMode': 'Queue',
61+
# TDMQ 主题名称 必选。
62+
'MqName': 'queueName'
4263
}
4364
response = client.ci_create_file_hash_job(
44-
Bucket=bucket_name,
45-
InputObject="mytest.mp4",
46-
FileHashCodeConfig=body
65+
Bucket=bucket_name, # 文件所在的桶名称
66+
InputObject="mytest.mp4", # 需要获取哈希值的文件名
67+
FileHashCodeConfig=body, # 获取文件哈希值配置详情
68+
CallBack="http://www.callback.com", # 回调url地址,当 CallBackType 参数值为 Url 时有效
69+
CallBackFormat="JSON", # 回调信息格式 JSON 或 XML,默认 XML
70+
CallBackType="Url", # 回调类型,Url 或 TDMQ,默认 Url
71+
CallBackMqConfig=mq_config, # 任务回调TDMQ配置,当 CallBackType 为 TDMQ 时必填
72+
UserData="this is my user data" # 透传用户信息, 可打印的 ASCII 码, 长度不超过1024
4773
)
4874
print(response)
4975
return response
5076

5177

5278
def ci_create_file_uncompress_job():
79+
# 创建获取文件解压异步任务
5380
body = {
54-
'Prefix': 'output/',
81+
# 文件解压配置详情
82+
83+
# 指定解压后输出文件的前缀,不填则默认保存在存储桶根路径,非必选
84+
'Prefix': 'zip/',
85+
# 解压密钥,传入时需先经过 base64 编码。非必选
86+
'UnCompressKey': base64.b64encode("123456".encode("utf-8")).decode('utf-8'),
87+
# 指定解压后的文件路径是否需要替换前缀,有效值:
88+
# - 0:不添加额外的前缀,解压缩将保存在Prefix指定的路径下(不会保留压缩包的名称,仅将压缩包内的文件保存至指定的路径)。
89+
# - 1:以压缩包本身的名称作为前缀,解压缩将保存在Prefix指定的路径下。
90+
# - 2:以压缩包完整路径作为前缀,此时如果不指定Prefix,就是解压到压缩包所在的当前路径(包含压缩包本身名称)。
91+
# - 非必选,默认值为0
92+
'PrefixReplaced': '0'
93+
}
94+
mq_config = {
95+
# 消息队列所属园区
96+
# 必选。目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港)
97+
'MqRegion': 'bj',
98+
# 消息队列使用模式
99+
# 必选。主题订阅:Topic 队列服务: Queue
100+
'MqMode': 'Queue',
101+
# TDMQ 主题名称 必选。
102+
'MqName': 'queueName'
55103
}
56104
response = client.ci_create_file_uncompress_job(
57-
Bucket=bucket_name,
58-
InputObject='test.zip',
59-
FileUncompressConfig=body
105+
Bucket=bucket_name, # 文件所在的桶名称
106+
InputObject='zip/testmi.zip', # 需要解压的文件名
107+
OutputBucket=bucket_name, # 指定输出文件所在的桶名称
108+
OutputRegion=region, # 指定输出文件所在的地域
109+
FileUncompressConfig=body, # 文件解压配置详情
110+
CallBack="http://www.callback.com", # 回调url地址,当 CallBackType 参数值为 Url 时有效
111+
CallBackFormat="JSON", # 回调信息格式 JSON 或 XML,默认 XML
112+
CallBackType="Url", # 回调类型,Url 或 TDMQ,默认 Url
113+
CallBackMqConfig=mq_config, # 任务回调TDMQ配置,当 CallBackType 为 TDMQ 时必填
114+
UserData="this is my user data" # 透传用户信息, 可打印的 ASCII 码, 长度不超过1024
60115
)
61116
print(response)
62117
return response
63118

64119

65120
def ci_create_file_compress_job():
121+
# 创建获取文件压缩异步任务
66122
body = {
123+
# 文件打包时,是否需要去除源文件已有的目录结构
124+
# 必选,有效值:
125+
# 0:不需要去除目录结构,打包后压缩包中的文件会保留原有的目录结构
126+
# 1:需要,打包后压缩包内的文件会去除原有的目录结构,所有文件都在同一层级
127+
# 例如:源文件 URL 为 https://domain/source/test.mp4, 则源文件路径为 source/test.mp4
128+
# 如果为 1,则 ZIP 包中该文件路径为 test.mp4
129+
# 如果为 0,ZIP 包中该文件路径为 source/test.mp4
67130
'Flatten': '0',
131+
# 打包压缩的类型
132+
# 必选,有效值:zip、tar、tar.gz。
68133
'Format': 'zip',
69-
'Prefix': '/',
134+
# 压缩类型,仅在Format为tar.gz或zip时有效。
135+
# faster:压缩速度较快
136+
# better:压缩质量较高,体积较小
137+
# default:适中的压缩方式
138+
# 非必选,默认值为default
139+
'Type': 'faster',
140+
# 压缩包密钥,传入时需先经过 base64 编码, 编码后长度不能超过128。当 Format 为 zip 时生效
141+
# 非必选
142+
'CompressKey': base64.b64encode("123456".encode("utf-8")).decode('utf-8'),
143+
144+
# 下列参数UrlList、Prefix、Key 三者仅能选择一个,不能都为空,也不会同时生效。如果填了多个,会按优先级 UrlList > Prefix > Key 取最高优先级执行。
145+
146+
# UrlList 支持将需要打包的文件整理成索引文件,后台将根据索引文件内提供的文件 url,打包为一个压缩包文件。
147+
# 索引文件需要保存在当前存储桶中,本字段需要提供索引文件的对象地址,例如:/test/index.csv。
148+
# 索引文件格式:仅支持 CSV 文件,一行一条 URL(仅支持本存储桶文件),如有多列字段,默认取第一列作为URL。最多不超过10000个文件,总大小不超过50G
149+
# 非必选
150+
'UrlList': '',
151+
# 支持对存储桶中的某个前缀进行打包,如果需要对某个目录进行打包,需要加/,
152+
# 例如test目录打包,则值为:test/。最多不超过10000个文件,总大小不超过50G,否则会导致任务失败。
153+
# 非必选
154+
'Prefix': 'zip/',
155+
# 支持对存储桶中的多个文件进行打包,个数不能超过 1000。
156+
# 非必选
157+
'Key': ['zip/1.png', 'zip/2.png', 'zip/3.png']
158+
}
159+
mq_config = {
160+
# 消息队列所属园区
161+
# 必选。目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港)
162+
'MqRegion': 'bj',
163+
# 消息队列使用模式
164+
# 必选。主题订阅:Topic 队列服务: Queue
165+
'MqMode': 'Queue',
166+
# TDMQ 主题名称 必选。
167+
'MqName': 'queueName'
70168
}
71169
response = client.ci_create_file_compress_job(
72-
Bucket=bucket_name,
73-
OutputBucket=bucket_name,
74-
OutputRegion='ap-guangzhou',
75-
OutputObject='result.zip',
76-
FileCompressConfig=body,
77-
CallBack="http://www.callback.com",
78-
CallBackType="Url",
79-
CallBackFormat="XML",
80-
UserData="my data"
170+
Bucket=bucket_name, # 文件所在的桶名称
171+
OutputBucket=bucket_name, # 指定输出文件所在的桶名称
172+
OutputRegion=region, # 指定输出文件所在的地域
173+
OutputObject='zip/result.zip', # 指定输出文件名
174+
FileCompressConfig=body, # 指定压缩配置
175+
CallBack="http://www.callback.com", # 回调url地址,当 CallBackType 参数值为 Url 时有效
176+
CallBackFormat="JSON", # 回调信息格式 JSON 或 XML,默认 XML
177+
CallBackType="Url", # 回调类型,Url 或 TDMQ,默认 Url
178+
CallBackMqConfig=mq_config, # 任务回调TDMQ配置,当 CallBackType 为 TDMQ 时必填
179+
UserData="this is my user data" # 透传用户信息, 可打印的 ASCII 码, 长度不超过1024
81180
)
82181
print(response)
83182
return response
84183

85184

86185
def ci_get_file_process_jobs():
186+
# 获取文件处理异步任务结果详情
87187
response = client.ci_get_file_process_jobs(
88-
Bucket=bucket_name,
89-
JobIDs='fcb9a9f90e57611ed9************',
188+
Bucket=bucket_name, # 任务所在桶名称
189+
JobIDs='f7325938a256611xxxxxxxxxxx', # 文件处理异步任务ID
90190
)
91191
print(response)
92192
return response
93193

94194

95195
def ci_get_zip_preview():
96-
response = client.ci_file_zip_preview(Bucket=bucket_name, Key="result.zip")
196+
# 压缩包预览同步请求
197+
response = client.ci_file_zip_preview(
198+
Bucket=bucket_name, # 压缩文件所在桶名称
199+
Key="zip/test.zip" # 需要预览的压缩文件名
200+
)
97201
print(response)
98202
return response
99203

@@ -103,5 +207,5 @@ def ci_get_zip_preview():
103207
# ci_create_file_hash_job()
104208
# ci_create_file_uncompress_job()
105209
# ci_create_file_compress_job()
106-
# ci_get_zip_preview()
107-
ci_get_file_process_jobs()
210+
ci_get_zip_preview()
211+
# ci_get_file_process_jobs()

0 commit comments

Comments
 (0)