#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time : 2019/2/9 17:56
# @Author: Jtyoui@qq.com
import json
import time
import requests
[文档]class CodeRecognition:
def __init__(self, username, password, app_id, app_key):
"""初始化账号
:param username: 用户账号,不是开发者账号
:param password: 用户密码,不是开发者密码
:param app_id: 软件ID,开发者分成必要参数。
:param app_key: 软件密钥,开发者分成必要参数。
"""
self.api_url = 'http://api.yundama.com/api.php'
self.base = {
'username': username,
'password': password,
'appid': str(app_id),
'appkey': app_key,
}
[文档] def request(self, fields, files):
for key, value in files.items():
files[key] = open(file=value, mode='rb')
res = requests.post(self.api_url, files=files, data=fields)
response = res.text
response = json.loads(response)
return response
[文档] def upload(self, filename, code_type, timeout):
data = dict({'method': 'upload', 'codetype': str(code_type), 'timeout': str(timeout)}, **self.base)
file = dict(file=filename)
response = self.request(data, file)
if response:
return response['ret'] if response['ret'] and response['ret'] < 0 else response['cid']
else:
return -9001
[文档] def result(self, cid):
data = dict({'method': 'result', 'cid': str(cid)}, **self.base)
response = self.request(data, {})
return response and response['text'] or ''
[文档] def decode(self, filename, code_type, timeout=60):
"""识别验证码
:param filename: 图片文件
:param code_type: 验证码类型
:param timeout: 超时时间,秒
:return: 超时时间(秒),识别结果
"""
cid = self.upload(filename, code_type, timeout)
if cid > 0:
for i in range(timeout):
r = self.result(cid)
if r != '':
return r
else:
time.sleep(1)
return ''
return ''
cr = CodeRecognition('tyoui', 'zw13312324165', 6533, '1928b28e4ce11c541695bbb4510a4c41')
if __name__ == '__main__':
# 第一个参数是要识别图像的照片。第二参数是图片类型(看README.md文件中的code_type的说明)
cr = cr.decode('code.png', 3006)
print(cr)