Skip to content

Commit 43ae8f0

Browse files
authored
Merge pull request #116 from degangliu/master
万象内容识别接口的增加
2 parents 9581521 + fc04d04 commit 43ae8f0

File tree

5 files changed

+94
-3
lines changed

5 files changed

+94
-3
lines changed

qcloud_cos/cos_client.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,78 @@ def get_object(self, Bucket, Key, **kwargs):
383383

384384
return response
385385

386+
def get_object_sensitive_content_recognition(self, Bucket, Key, DetectType, **kwargs):
387+
"""文件内容识别接口 https://cloud.tencent.com/document/product/460/37318
388+
389+
:param Bucket(string): 存储桶名称.
390+
:param Key(string): COS路径.
391+
:param DetectType(int): 内容识别标志,位计算 1:porn, 2:terrorist, 4:politics, 8:ads
392+
:param kwargs(dict): 设置下载的headers.
393+
:return(dict): 下载成功返回的结果,dict类型.
394+
395+
.. code-block:: python
396+
397+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
398+
client = CosS3Client(config)
399+
# 下载cos上的文件到本地
400+
response = client.get_object_sensitive_content_recognition(
401+
Bucket='bucket',
402+
DetectType=CiDetectType.PORN | CiDetectType.POLITICS,
403+
Key='test.png'
404+
)
405+
print response
406+
"""
407+
headers = mapped(kwargs)
408+
final_headers = {}
409+
params = {}
410+
for key in headers:
411+
if key.startswith("response"):
412+
params[key] = headers[key]
413+
else:
414+
final_headers[key] = headers[key]
415+
headers = final_headers
416+
417+
if 'versionId' in headers:
418+
params['versionId'] = headers['versionId']
419+
del headers['versionId']
420+
params['ci-process'] = 'sensitive-content-recognition'
421+
detect_type = ''
422+
if DetectType & CiDetectType.PORN > 0 :
423+
detect_type += 'porn'
424+
if DetectType & CiDetectType.TERRORIST > 0 :
425+
if len(detect_type) > 0:
426+
detect_type += ','
427+
detect_type += 'terrorist'
428+
if DetectType & CiDetectType.POLITICS > 0 :
429+
if len(detect_type) > 0:
430+
detect_type += ','
431+
detect_type += 'politics'
432+
if DetectType & CiDetectType.ADS > 0 :
433+
if len(detect_type) > 0:
434+
detect_type += ','
435+
detect_type += 'ads'
436+
437+
params['detect-type'] = detect_type
438+
params = format_values(params)
439+
440+
url = self._conf.uri(bucket=Bucket, path=Key)
441+
logger.info("get object sensitive content recognition, url=:{url} ,headers=:{headers}, params=:{params}".format(
442+
url=url,
443+
headers=headers,
444+
params=params))
445+
rt = self.send_request(
446+
method='GET',
447+
url=url,
448+
bucket=Bucket,
449+
stream=True,
450+
auth=CosS3Auth(self._conf, Key, params=params),
451+
params=params,
452+
headers=headers)
453+
454+
data = xml_to_dict(rt.content)
455+
456+
return data
457+
386458
def get_presigned_url(self, Bucket, Key, Method, Expired=300, Params={}, Headers={}):
387459
"""生成预签名的url
388460

qcloud_cos/cos_comm.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,3 +405,9 @@ def get_date(yy, mm, dd):
405405
date_str = datetime(yy, mm, dd).isoformat()
406406
final_date_str = date_str+'+08:00'
407407
return final_date_str
408+
409+
class CiDetectType():
410+
PORN = 1
411+
TERRORIST = 2
412+
POLITICS = 4
413+
ADS = 8

qcloud_cos/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11

2-
__version__ = '5.1.7.9'
2+
__version__ = '5.1.8.0'

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def long_description():
1616

1717
setup(
1818
name='cos-python-sdk-v5',
19-
version='1.7.9',
19+
version='1.8.0',
2020
url='https://www.qcloud.com/',
2121
license='MIT',
2222
author='tiedu, lewzylu, channingliu',

ut/test.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from qcloud_cos import CosConfig
1111
from qcloud_cos import CosServiceError
1212
from qcloud_cos import get_date
13+
from qcloud_cos.cos_comm import CiDetectType
1314

1415
SECRET_ID = os.environ["SECRET_ID"]
1516
SECRET_KEY = os.environ["SECRET_KEY"]
@@ -1151,6 +1152,16 @@ def test_select_object():
11511152
for event in event_stream:
11521153
print(event)
11531154

1155+
def test_get_object_sensitive_content_recognition():
1156+
"""测试ci文件内容识别的接口"""
1157+
print(CiDetectType)
1158+
response = client.get_object_sensitive_content_recognition(
1159+
Bucket=test_bucket,
1160+
Key=test_object,
1161+
DetectType=(CiDetectType.PORN | CiDetectType.TERRORIST | CiDetectType.POLITICS | CiDetectType.ADS)
1162+
)
1163+
print(response)
1164+
assert response
11541165

11551166
if __name__ == "__main__":
11561167
setUp()
@@ -1175,6 +1186,8 @@ def test_select_object():
11751186
test_put_get_delete_bucket_inventory()
11761187
test_put_get_traffic_limit()
11771188
test_put_get_delete_bucket_domain()
1178-
"""
11791189
test_select_object()
1190+
"""
1191+
1192+
test_get_object_sensitive_content_recognition()
11801193
tearDown()

0 commit comments

Comments
 (0)