@@ -6052,6 +6052,308 @@ def get_snapshot(self, Bucket, Key, Time, Width=None, Height=None, Format='jpg',
60526052
60536053 return response
60546054
6055+ def ci_get_doc_queue (self , Bucket , ** kwargs ):
6056+ """查询文档转码处理队列接口 https://cloud.tencent.com/document/product/460/46946
6057+
6058+ :param Bucket(string): 存储桶名称.
6059+ :param kwargs(dict): 设置请求的headers.
6060+ :return(dict): 查询成功返回的结果,dict类型.
6061+
6062+ .. code-block:: python
6063+
6064+ config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
6065+ client = CosS3Client(config)
6066+ # 查询文档转码处理队列接口
6067+ response = client.ci_get_doc_queue(
6068+ Bucket='bucket'
6069+ )
6070+ print response
6071+ """
6072+ headers = mapped (kwargs )
6073+ final_headers = {}
6074+ params = {}
6075+ for key in headers :
6076+ if key .startswith ("response" ):
6077+ params [key ] = headers [key ]
6078+ else :
6079+ final_headers [key ] = headers [key ]
6080+ headers = final_headers
6081+
6082+ params = format_values (params )
6083+
6084+ path = "/docqueue"
6085+ url = self ._conf .uri (bucket = Bucket , path = path , endpoint = self ._conf ._endpoint_ci )
6086+ logger .info ("get_doc_queue result, url=:{url} ,headers=:{headers}, params=:{params}" .format (
6087+ url = url ,
6088+ headers = headers ,
6089+ params = params ))
6090+ rt = self .send_request (
6091+ method = 'GET' ,
6092+ url = url ,
6093+ bucket = Bucket ,
6094+ auth = CosS3Auth (self ._conf , path , params = params ),
6095+ params = params ,
6096+ headers = headers )
6097+
6098+ data = xml_to_dict (rt .content )
6099+ # 单个元素时将dict转为list
6100+ format_dict (data , ['QueueList' ])
6101+ return data
6102+
6103+ def ci_create_doc_job (self , Bucket , QueueId , InputObject , OutputBucket , OutputRegion , OutputObject , SrcType = None , TgtType = None ,
6104+ StartPage = None , EndPage = None , SheetId = None , PaperDirection = None , PaperSize = None , DocPassword = None , Comments = None , PageRanges = None ,
6105+ ImageParams = None , Quality = None , Zoom = None , ImageDpi = None , PicPagination = None , ** kwargs ):
6106+ """ 创建任务接口 https://cloud.tencent.com/document/product/460/46942
6107+
6108+ :param Bucket(string): 存储桶名称.
6109+ :param QueueId(string): 任务所在的队列 ID.
6110+ :param InputObject(string): 文件在 COS 上的文件路径,Bucket 由 Host 指定.
6111+ :param OutputBucket(string): 存储结果的存储桶.
6112+ :param OutputRegion(string): 存储结果的存储桶的地域.
6113+ :param OutputObject(string): 输出文件路径。
6114+ 非表格文件输出文件名需包含 ${Number} 或 ${Page} 参数。多个输出文件,${Number} 表示序号从1开始,${Page} 表示序号与预览页码一致。
6115+ ${Number} 表示多个输出文件,序号从1开始,例如输入 abc_${Number}.jpg,预览某文件5 - 6页,则输出文件名为 abc_1.jpg,abc_2.jpg
6116+ ${Page} 表示多个输出文件,序号与预览页码一致,例如输入 abc_${Page}.jpg,预览某文件5-6页,则输出文件名为 abc_5.jpg,abc_6.jpg
6117+ 表格文件输出路径需包含 ${SheetID} 占位符,输出文件名必须包含 ${Number} 参数。
6118+ 例如 /${SheetID}/abc_${Number}.jpg,先根据 excel 转换的表格数,生成对应数量的文件夹,再在对应的文件夹下,生成对应数量的图片文件.
6119+ :param SrcType(string): 源数据的后缀类型,当前文档转换根据 cos 对象的后缀名来确定源数据类型,当 cos 对象没有后缀名时,可以设置该值.
6120+ :param TgtType(string): 转换输出目标文件类型:
6121+ jpg,转成 jpg 格式的图片文件;如果传入的格式未能识别,默认使用 jpg 格式
6122+ png,转成 png 格式的图片文件
6123+ pdf,转成 pdf 格式文件(暂不支持指定页数).
6124+ :param StartPage(int): 从第 X 页开始转换;在表格文件中,一张表可能分割为多页转换,生成多张图片。StartPage 表示从指定 SheetId 的第 X 页开始转换。默认为1.
6125+ :param EndPage(int): 转换至第 X 页;在表格文件中,一张表可能分割为多页转换,生成多张图片。EndPage 表示转换至指定 SheetId 的第 X 页。默认为-1,即转换全部页
6126+ :param SheetId(int): 表格文件参数,转换第 X 个表,默认为0;设置 SheetId 为0,即转换文档中全部表
6127+ :param PaperDirection(int): 表格文件转换纸张方向,0代表垂直方向,非0代表水平方向,默认为0
6128+ :param PaperSize(int): 设置纸张(画布)大小,对应信息为: 0 → A4 、 1 → A2 、 2 → A0 ,默认 A4 纸张
6129+ :param DocPassword(string): Office 文档的打开密码,如果需要转换有密码的文档,请设置该字段
6130+ :param Comments(int): 是否隐藏批注和应用修订,默认为 0;0:隐藏批注,应用修订;1:显示批注和修订
6131+ :param ImageParams(string): 转换后的图片处理参数,支持 基础图片处理 所有处理参数,多个处理参数可通过 管道操作符 分隔,从而实现在一次访问中按顺序对图片进行不同处理
6132+ :param Quality(int): 生成预览图的图片质量,取值范围 [1-100],默认值100。 例:值为100,代表生成图片质量为100%
6133+ :param Zoom(int): 预览图片的缩放参数,取值范围[10-200], 默认值100。 例:值为200,代表图片缩放比例为200% 即放大两倍
6134+ :param ImageDpi(int): 按指定 dpi 渲染图片,该参数与 Zoom 共同作用,取值范围 96-600 ,默认值为 96 。转码后的图片单边宽度需小于65500像素
6135+ :param PicPagination(int): 是否转换成单张长图,设置为 1 时,最多仅支持将 20 标准页面合成单张长图,超过可能会报错,分页范围可以通过 StartPage、EndPage 控制。默认值为 0 ,按页导出图片,TgtType="png"/"jpg" 时生效
6136+ :param PageRanges(string): 自定义需要转换的分页范围,例如: "1,2-4,7" ,则表示转换文档的 1、2、3、4、7 页面
6137+ :param kwargs(dict): 设置请求的headers.
6138+ :return(dict): 查询成功返回的结果,dict类型.
6139+
6140+ .. code-block:: python
6141+
6142+ config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
6143+ client = CosS3Client(config)
6144+ # 创建任务接口
6145+ response = client.ci_create_doc_job(
6146+ Bucket='bucket'
6147+ QueueId='p532fdead78444e649e1a4467c1cd19d3',
6148+ InputObject='test.doc',
6149+ OutputBucket='outputbucket',
6150+ OutputRegion='outputregion',
6151+ OutputObject='/${SheetID}/abc_${Number}.jpg',
6152+ )
6153+ print response
6154+ """
6155+ headers = mapped (kwargs )
6156+ final_headers = {}
6157+ params = {}
6158+ for key in headers :
6159+ if key .startswith ("response" ):
6160+ params [key ] = headers [key ]
6161+ else :
6162+ final_headers [key ] = headers [key ]
6163+ headers = final_headers
6164+ if 'Content-Type' not in headers :
6165+ headers ['Content-Type' ] = 'application/xml'
6166+
6167+ params = format_values (params )
6168+ body = {
6169+ 'Input' : {
6170+ 'Object' : InputObject ,
6171+ },
6172+ 'QueueId' : QueueId ,
6173+ 'Tag' : 'DocProcess' ,
6174+ 'Operation' : {
6175+ 'Output' : {'Bucket' : OutputBucket , 'Region' : OutputRegion , 'Object' : OutputObject },
6176+ 'DocProcess' : {
6177+ }
6178+ }
6179+ }
6180+ if SrcType :
6181+ body ['Operation' ]['DocProcess' ]['SrcType' ] = SrcType
6182+ if TgtType :
6183+ body ['Operation' ]['DocProcess' ]['TgtType' ] = TgtType
6184+ if ImageParams :
6185+ body ['Operation' ]['DocProcess' ]['ImageParams' ] = ImageParams
6186+ if DocPassword :
6187+ body ['Operation' ]['DocProcess' ]['DocPassword' ] = DocPassword
6188+ if PageRanges :
6189+ body ['Operation' ]['DocProcess' ]['PageRanges' ] = PageRanges
6190+ if StartPage :
6191+ body ['Operation' ]['DocProcess' ]['StartPage' ] = StartPage
6192+ if EndPage :
6193+ body ['Operation' ]['DocProcess' ]['EndPage' ] = EndPage
6194+ if SheetId :
6195+ body ['Operation' ]['DocProcess' ]['SheetId' ] = SheetId
6196+ if PaperDirection :
6197+ body ['Operation' ]['DocProcess' ]['PaperDirection' ] = PaperDirection
6198+ if PaperSize :
6199+ body ['Operation' ]['DocProcess' ]['PaperSize' ] = PaperSize
6200+ if Quality :
6201+ body ['Operation' ]['DocProcess' ]['Quality' ] = Quality
6202+ if Zoom :
6203+ body ['Operation' ]['DocProcess' ]['Zoom' ] = Zoom
6204+ if PicPagination :
6205+ body ['Operation' ]['DocProcess' ]['PicPagination' ] = PicPagination
6206+ if ImageDpi :
6207+ body ['Operation' ]['DocProcess' ]['ImageDpi' ] = ImageDpi
6208+ if Comments :
6209+ body ['Operation' ]['DocProcess' ]['Comments' ] = Comments
6210+
6211+ xml_config = format_xml (data = body , root = 'Request' )
6212+ path = "/doc_jobs"
6213+ url = self ._conf .uri (bucket = Bucket , path = path , endpoint = self ._conf ._endpoint_ci )
6214+ logger .info ("create_doc_jobs result, url=:{url} ,headers=:{headers}, params=:{params}, xml_config=:{xml_config}" .format (
6215+ url = url ,
6216+ headers = headers ,
6217+ params = params ,
6218+ xml_config = xml_config ))
6219+ rt = self .send_request (
6220+ method = 'POST' ,
6221+ url = url ,
6222+ bucket = Bucket ,
6223+ data = xml_config ,
6224+ auth = CosS3Auth (self ._conf , path , params = params ),
6225+ params = params ,
6226+ headers = headers )
6227+
6228+ data = xml_to_dict (rt .content )
6229+ return data
6230+
6231+ def ci_get_doc_job (self , Bucket , JobID , ** kwargs ):
6232+ """ 查询任务接口 https://cloud.tencent.com/document/product/460/46943
6233+
6234+ :param Bucket(string): 存储桶名称.
6235+ :param JobID(string): 任务ID.
6236+ :param kwargs(dict): 设置请求的headers.
6237+ :return(dict): 查询成功返回的结果,dict类型.
6238+
6239+ .. code-block:: python
6240+
6241+ config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
6242+ client = CosS3Client(config)
6243+ # 查询任务接口
6244+ response = client.ci_get_doc_job(
6245+ Bucket='bucket'
6246+ JobID='jobid'
6247+ )
6248+ print response
6249+ """
6250+ headers = mapped (kwargs )
6251+ final_headers = {}
6252+ params = {}
6253+ for key in headers :
6254+ if key .startswith ("response" ):
6255+ params [key ] = headers [key ]
6256+ else :
6257+ final_headers [key ] = headers [key ]
6258+ headers = final_headers
6259+ if 'Content-Type' not in headers :
6260+ headers ['Content-Type' ] = 'application/xml'
6261+
6262+ params = format_values (params )
6263+ path = "/doc_jobs/" + JobID
6264+ url = self ._conf .uri (bucket = Bucket , path = path , endpoint = self ._conf ._endpoint_ci )
6265+ logger .info ("get_doc_jobs result, url=:{url} ,headers=:{headers}, params=:{params}" .format (
6266+ url = url ,
6267+ headers = headers ,
6268+ params = params ))
6269+ rt = self .send_request (
6270+ method = 'GET' ,
6271+ url = url ,
6272+ bucket = Bucket ,
6273+ auth = CosS3Auth (self ._conf , path , params = params ),
6274+ params = params ,
6275+ headers = headers )
6276+ logger .debug ("ci_get_doc_jobs result, url=:{url} ,content=:{content}" .format (
6277+ url = url ,
6278+ content = rt .content ))
6279+
6280+ data = xml_to_dict (rt .content )
6281+ # 单个元素时将dict转为list
6282+ format_dict (data , ['JobsDetail' ])
6283+ return data
6284+
6285+ def ci_list_doc_jobs (self , Bucket , QueueId , StartCreationTime = None , EndCreationTime = None , OrderByTime = 'Desc' , States = 'All' , Size = 10 , NextToken = '' , ** kwargs ):
6286+ """ 拉取文档预览任务列表接口 https://cloud.tencent.com/document/product/460/46944
6287+
6288+ :param Bucket(string): 存储桶名称.
6289+ :param QueueId(string): 队列ID.
6290+ :param StartCreationTime(string): 开始时间.
6291+ :param EndCreationTime(string): 结束时间.
6292+ :param OrderByTime(string): 排序方式.Desc 或者 Asc。默认为 Desc
6293+ :param States(string): 拉取该状态的任务,以,分割,支持多状态:All、Submitted、Running、Success、Failed、Pause、Cancel。默认为 All
6294+ :param Size(string): 拉取的最大任务数。默认为10。最大为100.
6295+ :param NextToken(string): 请求的上下文,用于翻页.
6296+ :param kwargs(dict): 设置请求的headers.
6297+ :return(dict): 查询成功返回的结果,dict类型.
6298+
6299+ .. code-block:: python
6300+
6301+ config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
6302+ client = CosS3Client(config)
6303+ # 创建任务接口
6304+ response = client.ci_list_doc_jobs(
6305+ Bucket='bucket'
6306+ QueueId='',
6307+ )
6308+ print response
6309+ """
6310+ headers = mapped (kwargs )
6311+ final_headers = {}
6312+ params = {}
6313+ for key in headers :
6314+ if key .startswith ("response" ):
6315+ params [key ] = headers [key ]
6316+ else :
6317+ final_headers [key ] = headers [key ]
6318+ headers = final_headers
6319+ if 'Content-Type' not in headers :
6320+ headers ['Content-Type' ] = 'application/xml'
6321+
6322+ params = format_values (params )
6323+ path = "/doc_jobs"
6324+ url = self ._conf .uri (bucket = Bucket , path = path , endpoint = self ._conf ._endpoint_ci )
6325+ url = u"{url}?{QueueId}&{Tag}&{OrderByTime}&{States}&{Size}&{NextToken}" .format (
6326+ url = to_unicode (url ),
6327+ QueueId = to_unicode ('queueId=' + QueueId ),
6328+ Tag = to_unicode ('tag=DocProcess' ),
6329+ OrderByTime = to_unicode ('orderByTime=' + OrderByTime ),
6330+ States = to_unicode ('states=' + States ),
6331+ Size = to_unicode ('size=' + str (Size )),
6332+ NextToken = to_unicode ('nextToken=' + NextToken )
6333+ )
6334+ if StartCreationTime is not None :
6335+ url = u"{url}&{StartCreationTime}" .format (StartCreationTime = to_unicode ('startCreationTime=' + StartCreationTime ))
6336+ if EndCreationTime is not None :
6337+ url = u"{url}&{EndCreationTime}" .format (EndCreationTime = to_unicode ('endCreationTime=' + EndCreationTime ))
6338+ logger .info ("list_doc_jobs result, url=:{url} ,headers=:{headers}, params=:{params}" .format (
6339+ url = url ,
6340+ headers = headers ,
6341+ params = params ))
6342+ rt = self .send_request (
6343+ method = 'GET' ,
6344+ url = url ,
6345+ bucket = Bucket ,
6346+ auth = CosS3Auth (self ._conf , path , params = params ),
6347+ params = params ,
6348+ headers = headers )
6349+ logger .debug ("list_doc_jobs result, url=:{url} ,content=:{content}" .format (
6350+ url = url ,
6351+ content = rt .content ))
6352+ data = xml_to_dict (rt .content )
6353+ # 单个元素时将dict转为list
6354+ format_dict (data , ['JobsDetail' ])
6355+ return data
6356+
60556357
60566358if __name__ == "__main__" :
60576359 pass
0 commit comments