def image_content_batch_aksk(_ak, _sk, urls, categories=None, threshold=None): endpoint = utils.get_endpoint(ais.AisService.MODERATION_SERVICE) _url = 'https://%s/v1.0/moderation/image/batch' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk _data = { "urls": urls, "categories": categories, "threshold": threshold, } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/moderation/image/batch" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp else: return resp.decode('utf-8')
def dark_enhance_aksk(_ak, _sk, image, brightness=0.9): endpoint = utils.get_endpoint(ais.AisService.IMAGE_SERVICE) _url = 'https://%s/v1.0/vision/dark-enhance' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if sys.version_info.major >= 3: if image != '': image = image.decode("utf-8") _data = {"image": image, "brightness": brightness} kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/vision/dark-enhance" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp else: return resp.decode('utf-8')
def asr_sentence_aksk(_ak, _sk, data, url, encode_type='wav', sample_rate='8k'): _url = "https://%s/v1.0/voice/asr/sentence" % ais.AisEndpoint.ENDPOINT sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if data != '': data = data.decode("utf-8") _data = { "url": url, "data": data, "encode_type": encode_type, "sample_rate": sample_rate } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.ENDPOINT kreq.uri = "/v1.0/voice/asr/sentence" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=bytes(kreq.body), headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib2 can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return resp.decode('unicode_escape')
def _moderation_video_aksk(endpoint, sig, url, frame_interval=5, categories=['politics', 'terrorism']): _url = 'https://%s/v1.0/moderation/video' % endpoint _data = { "url": url, "frame_interval": frame_interval, "categories": categories } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/moderation/video" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return status, resp else: return status, resp.decode('utf-8')
def distortion_correct_aksk(_ak, _sk, image, url, correction=True): endpoint = utils.get_endpoint(ais.AisService.MODERATION_SERVICE) _url = 'https://%s/v1.0/moderation/image/distortion-correct' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if sys.version_info.major >= 3: if image != '': image = image.decode("utf-8") _data = {"image": image, "url": url, "correction": correction} kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/moderation/image/distortion-correct" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp else: return resp.decode('utf-8')
def recapture_detect_aksk(_ak, _sk, image, url, threshold=0.95, scene=None): endpoint = utils.get_endpoint(ais.AisService.IMAGE_SERVICE) _url = 'https://%s/v1.0/image/recapture-detect' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if sys.version_info.major >= 3: if image != '': image = image.decode("utf-8") _data = { "image": image, "url": url, "threshold": threshold, "scene": scene, } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/image/recapture-detect" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp else: return resp.decode('utf-8')
def super_resolution_aksk(_ak, _sk, image, scale=3, model="ESPCN"): endpoint = utils.get_endpoint(ais.AisService.IMAGE_SERVICE) _url = 'https://%s/v1.0/vision/super-resolution' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if sys.version_info.major >= 3: if image != '': image = image.decode("utf-8") _data = {"image": image, "scale": scale, "model": model} kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/vision/super-resolution" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp else: return resp.decode('utf-8')
def celebrity_recognition_aksk(_ak, _sk, image, url, threshold=4.8): endpoint = utils.get_endpoint(ais.AisService.IMAGE_SERVICE) _url = 'https://%s/v1.0/image/celebrity-recognition' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if sys.version_info.major >= 3: if image != '': image = image.decode("utf-8") _data = { "image": image, "url": url, "threshold": threshold, } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/image/celebrity-recognition" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp.decode('unicode-escape').encode('utf-8') else: return resp.decode('unicode_escape')
def asr_sentence_aksk(_ak, _sk, data, url, encode_type='wav', sample_rate='8k'): _url = "https://%s/v1.0/voice/asr/sentence" % ais.AisEndpoint.ASR_ENDPOINT sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if sys.version_info.major >= 3: if data != '': data = data.decode("utf-8") _data = { "url": url, "data": data, "encode_type": encode_type, "sample_rate": sample_rate } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.ASR_ENDPOINT kreq.uri = "/v1.0/voice/asr/sentence" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp.decode('unicode-escape').encode('utf-8') else: return resp.decode('unicode_escape')
def moderation_image_aksk(_ak, _sk, image, url, categories=None, threshold=None): _url = 'https://%s/v1.0/moderation/image' % ais.AisEndpoint.MODERATION_ENDPOINT sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if image != '': image = image.decode('utf-8') _data = { "image": image, "url": url, "categories": categories, "threshold": threshold, } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.MODERATION_ENDPOINT kreq.uri = "/v1.0/moderation/image" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return resp.decode('utf-8')
def recapture_detect_aksk(_ak, _sk, image, url, threshold=0.95, scene=None): endpoint = utils.get_endpoint(ais.AisService.IMAGE_SERVICE) _url = 'https://%s/v1.0/image/recapture-detect' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk if image != '': image = image.decode('utf-8') _data = { "image": image, "url": url, "threshold": threshold, "scene": scene, } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/image/recapture-detect" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib2 can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return resp.decode('utf-8')
def moderation_text_aksk(_ak, _sk, text, type='content', categories=[ "ad", "politics", "politics", "politics", "contraband", "contraband" ]): _url = 'https://%s/v1.0/moderation/text' % ais.AisEndpoint.ENDPOINT sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk _data = {"categories": categories, "items": [{"text": text, "type": type}]} kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = "ais.cn-north-1.myhuaweicloud.com" kreq.uri = "/v1.0/moderation/text" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib2 can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return resp.decode('unicode_escape')
def tts_aksk(_ak, _sk, text, voice_name='xiaoyan', volume='0', sample_rate='16k', speech_speed='0', pitch_rate='0'): _url = 'https://%s' % (ais.AisEndpoint.TTS_ENDPOINT + ais.TtsURI.TTS) sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk _data = { "text": text, "voice_name": voice_name, "volume": volume, "sample_rate": sample_rate, "speech_speed": speech_speed, "pitch_rate": pitch_rate } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.TTS_ENDPOINT kreq.uri = ais.TtsURI.TTS kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib2 can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return resp.decode('utf-8')
def _video_tagging_aksk(endpoint, sig, url, frame_interval=5, language='zh', threshold=60.0): _url = 'https://%s/v1.0/video/tagging' % endpoint _data = { "url": url, "frame_interval": frame_interval, "language": language, "threshold": threshold } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/video/tagging" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return status_code, resp.decode('utf-8')
def _get_result_aksk(sig, job_id): _url_tmpl = 'https://%s/v1.0/voice/asr/long-sentence?job_id=%s' _url = _url_tmpl % (ais.AisEndpoint.ASR_ENDPOINT, job_id) kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.ASR_ENDPOINT kreq.uri = "/v1.0/voice/asr/long-sentence" kreq.method = "GET" kreq.headers = {"Content-Type": "application/json"} kreq.query = {'job_id': job_id} return utils.request_job_result_aksk(sig, kreq, _url)
def _get_result_aksk(endpoint, sig, job_id): _url_tmpl = 'https://%s/v1.0/moderation/image/batch?job_id=%s' _url = _url_tmpl % (endpoint, job_id) kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/moderation/image/batch" kreq.method = "GET" kreq.headers = {"Content-Type": "application/json"} kreq.query = {'job_id': job_id} return utils.request_job_result_aksk(sig, kreq, _url)
def _moderation_video_aksk(sig, url, frame_interval=5, categories=['politics', 'terrorism']): _url = 'https://%s/v1.0/moderation/video' % ais.AisEndpoint.MODERATION_ENDPOINT _data = { "url": url, "frame_interval": frame_interval, "categories": categories } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.MODERATION_ENDPOINT kreq.uri = "/v1.0/moderation/video" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return status_code, resp.decode('utf-8')
def request_moderation_url_aksk(sig, inner_path, image_str=None, url=None): endpoint = utils.get_endpoint(ais.AisService.MODERATION_SERVICE) _url = 'https://%s' % (endpoint + inner_path) if image_str != '': image_str = image_str.decode('utf-8') _data = {"image": image_str, "url": url} kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = inner_path kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return resp.decode('utf-8')
def asr_bgm_aksk(_ak, _sk, url): _url = 'https://%s/v1.0/bgm/recognition' % ais.AisEndpoint.IMAGE_ENDPOINT sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk _data = { "url": url, } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.IMAGE_ENDPOINT kreq.uri = "/v1.0/bgm/recognition" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return resp.decode('unicode_escape')
def _long_sentence_aksk(sig, data, url): _url = 'https://%s/v1.0/voice/asr/long-sentence'%ais.AisEndpoint.ENDPOINT if data != '': data = data.decode("utf-8") _data = { "url": url, "data": data } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.ENDPOINT kreq.uri = "/v1.0/voice/asr/long-sentence" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, data=kreq.body, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return status_code, resp.decode('utf-8')
def _get_result_aksk(endpoint, sig, job_id): _url_tmpl = 'https://%s/v1.0/moderation/video?job_id=%s' _url = _url_tmpl % (endpoint, job_id) kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/moderation/video" kreq.method = "GET" kreq.headers = {"Content-Type": "application/json"} kreq.query = {'job_id': job_id} resp = None status_code = None try: sig.Sign(kreq) # # Here we use the unvertified-ssl-context, Because in FunctionStage # the client CA-validation have some problem, so we must do this. # _context = ssl._create_unverified_context() req = urllib.request.Request(url=_url, headers=kreq.headers) r = urllib.request.urlopen(req, context=_context) # # We use HTTPError and URLError,because urllib can't process the 4XX & # 500 error in the single urlopen function. # # If you use a modern, high-level designed HTTP client lib, Yeah, I mean requests, # there is no this problem. # except HTTPError as e: resp = e.read() status_code = e.code except URLError as e: resp = e.read() status_code = e.code else: status_code = r.code resp = r.read() return status_code, resp.decode('utf-8')
def _long_sentence_aksk(sig, data, url): _url = 'https://%s/v1.0/voice/asr/long-sentence' % ais.AisEndpoint.ASR_ENDPOINT if sys.version_info.major >= 3: if data != '': data = data.decode("utf-8") _data = {"url": url, "data": data} kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = ais.AisEndpoint.ASR_ENDPOINT kreq.uri = "/v1.0/voice/asr/long-sentence" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return status, resp else: return status, resp.decode('utf-8')
def request_moderation_url_aksk(sig, inner_path, image_str=None, url=None): endpoint = utils.get_endpoint(ais.AisService.MODERATION_SERVICE) _url = 'https://' + endpoint + inner_path if sys.version_info.major >= 3: if image_str != '': image_str = image_str.decode("utf-8") _data = {"image": image_str, "url": url} kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = inner_path kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp else: return resp.decode('utf-8')
def moderation_text_aksk( _ak, _sk, text, type='content', categories=["ad", "politics", "p**n", "abuse", "contraband", "flood"]): endpoint = utils.get_endpoint(ais.AisService.MODERATION_SERVICE) _url = 'https://%s/v1.0/moderation/text' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk _data = { "categories": categories, # 检测场景 Array politics:涉政 p**n:涉黄 ad:广告 abuse:辱骂 contraband:违禁品 flood:灌水 "items": [{ "text": text, "type": type } # items: 待检测的文本列表 text 待检测文本 type 文本类型 ] } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/moderation/text" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp.decode('unicode-escape').encode('utf-8') else: return resp.decode('unicode_escape')
def asr_bgm_aksk(_ak, _sk, url): endpoint = utils.get_endpoint(ais.AisService.IMAGE_SERVICE) _url = 'https://%s/v1.0/bgm/recognition' % endpoint sig = signer.Signer() sig.AppKey = _ak sig.AppSecret = _sk _data = { "url": url, } kreq = signer.HttpRequest() kreq.scheme = "https" kreq.host = endpoint kreq.uri = "/v1.0/bgm/recognition" kreq.method = "POST" kreq.headers = {"Content-Type": "application/json"} kreq.body = json.dumps(_data) status_code, resp = utils.request_aksk(sig, kreq, _url) if sys.version_info.major < 3: return resp.decode('unicode-escape').encode('utf-8') else: return resp.decode('unicode_escape')