123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import ssl
- import sys
- import json
- import base64
- # 保证兼容python2以及python3
- IS_PY3 = sys.version_info.major == 3
- if IS_PY3:
- from urllib.request import urlopen
- from urllib.request import Request
- from urllib.error import URLError
- from urllib.parse import urlencode
- from urllib.parse import quote_plus
- else:
- import urllib2
- from urllib import quote_plus
- from urllib2 import urlopen
- from urllib2 import Request
- from urllib2 import URLError
- from urllib import urlencode
- # 防止https证书校验不正确
- ssl._create_default_https_context = ssl._create_unverified_context
- API_KEY = 'XuDpl9wYzpKAi1DqH5wv4zx4'
- SECRET_KEY = 'dqL2gDMgf6HsbMcxBgpTt0lUzOEldRZm'
- IMAGE_CENSOR = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined"
- TEXT_CENSOR = "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined"
- """ TOKEN start """
- TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'
- """
- 获取token
- """
- def fetch_token():
- params = {'grant_type': 'client_credentials',
- 'client_id': API_KEY,
- 'client_secret': SECRET_KEY}
- post_data = urlencode(params)
- if (IS_PY3):
- post_data = post_data.encode('utf-8')
- req = Request(TOKEN_URL, post_data)
- try:
- f = urlopen(req, timeout=5)
- result_str = f.read()
- except URLError as err:
- print(err)
- if (IS_PY3):
- result_str = result_str.decode()
- result = json.loads(result_str)
- if ('access_token' in result.keys() and 'scope' in result.keys()):
- if not 'brain_all_scope' in result['scope'].split(' '):
- print('please ensure has check the ability')
- exit()
- return result['access_token']
- else:
- print('please overwrite the correct API_KEY and SECRET_KEY')
- exit()
- """
- 读取文件
- """
- def read_file(image_path):
- f = None
- try:
- f = open(image_path, 'rb')
- return f.read()
- except:
- print('read image file fail')
- return None
- finally:
- if f:
- f.close()
- """
- 调用远程服务
- """
- def request(url, data):
- req = Request(url, data.encode('utf-8'))
- has_error = False
- try:
- f = urlopen(req)
- result_str = f.read()
- if (IS_PY3):
- result_str = result_str.decode()
- return result_str
- except URLError as err:
- print(err)
- if __name__ == '__main__':
- # 获取access token
- token = fetch_token()
- # 拼接图像审核url
- image_url = IMAGE_CENSOR + "?access_token=" + token
- # 拼接文本审核url
- text_url = TEXT_CENSOR + "?access_token=" + token
- file_content = read_file('image_normal.jpeg')
- result = request(image_url, urlencode(
- {'image': file_content}))
- print("----- 正常图调用结果 -----")
- print(result)
- file_content = read_file('image_advertise.jpeg')
- result = request(image_url, urlencode(
- {'image': base64.b64encode(file_content)}))
- print("----- 广告图调用结果 -----")
- print(result)
- text = "我们要热爱祖国热爱党"
- result = request(text_url, urlencode({'text': text}))
- print("----- 正常文本调用结果 -----")
- print(result)
- text = "我要爆粗口啦:百度AI真他妈好用"
- result = request(text_url, urlencode({'text': text}))
- print("----- 粗俗文本调用结果 -----")
- print(result)
|