python3-anticaptcha/python3_anticaptcha/AntiCaptchaControl.py

153 lines
5.7 KiB
Python
Raw Normal View History

import requests
import aiohttp
2019-03-15 17:09:12 +00:00
from python3_anticaptcha import get_balance_url, incorrect_captcha_url, get_queue_status_url
class AntiCaptchaControl:
def __init__(self, anticaptcha_key: str):
"""
Синхронный метод работы с балансом и жалобами
:param anticaptcha_key: Ключ антикапчи
"""
self.ANTICAPTCHA_KEY = anticaptcha_key
2019-02-14 10:33:16 +00:00
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
if exc_type:
return False
return True
def get_balance(self):
2019-03-15 17:09:12 +00:00
"""
Получение баланса аккаунта
:return: Возвращает актуальный баланс
2019-03-15 17:09:12 +00:00
"""
answer = requests.post(get_balance_url, json={'clientKey': self.ANTICAPTCHA_KEY})
return answer.json()
def complaint_on_result(self, reported_id: int):
2019-03-15 17:09:12 +00:00
"""
Позволяет отправить жалобу на неправильно решённую капчу.
:param reported_id: Отправляете ID капчи на которую нужно пожаловаться
:return: Возвращает True/False, в зависимости от результата
2019-03-15 17:09:12 +00:00
"""
payload = {'clientKey': self.ANTICAPTCHA_KEY,
'taskId': reported_id,
}
2019-03-15 17:09:12 +00:00
answer = requests.post(incorrect_captcha_url, json=payload)
return answer.json()
def get_queue_status(self, queue_id: int):
"""
Получение информации о загрузке очереди, в зависимости от ID очереди
Метод позволяет определить, нсколько в данный момент целесообразно загружать новое задание в очередь
Данные в выдаче кешируются на 10 секунд
Список ID очередей:
1 - стандартная ImageToText, язык английский
2 - стандартная ImageToText, язык русский
5 - Recaptcha NoCaptcha
6 - Recaptcha Proxyless
7 - Funcaptcha
10 - Funcaptcha Proxyless
Пример выдачи ответа:
{
"waiting":242,
"load":60.33,
"bid":"0.0008600982",
"speed":10.77,
"total": 610
}
:param queue_id: Номер очереди
:return: JSON-объект
"""
payload = {
"queueId": queue_id
}
answer = requests.post(get_queue_status_url, json=payload)
return answer.json()
class aioAntiCaptchaControl:
def __init__(self, anticaptcha_key: str):
"""
Асинхронный метод работы с балансом и жалобами
:param anticaptcha_key: Ключ антикапчи
"""
self.ANTICAPTCHA_KEY = anticaptcha_key
2019-02-14 10:33:16 +00:00
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
if exc_type:
return False
return True
async def get_balance(self):
2019-03-15 17:09:12 +00:00
"""
Получение баланса аккаунта
:return: Возвращает актуальный баланс
2019-03-15 17:09:12 +00:00
"""
async with aiohttp.ClientSession() as session:
async with session.post(get_balance_url, json={'clientKey': self.ANTICAPTCHA_KEY}) as resp:
return await resp.json()
async def complaint_on_result(self, reported_id: int):
2019-03-15 17:09:12 +00:00
"""
Позволяет отправить жалобу на неправильно решённую капчу.
:param reported_id: Отправляете ID капчи на которую нужно пожаловаться
:return: Возвращает True/False, в зависимости от результата
2019-03-15 17:09:12 +00:00
"""
payload = {'clientKey': self.ANTICAPTCHA_KEY,
'taskId': reported_id,
}
async with aiohttp.ClientSession() as session:
async with session.post(incorrect_captcha_url, json=payload) as resp:
2019-02-14 10:33:16 +00:00
return await resp.json()
2019-03-15 17:09:12 +00:00
async def get_queue_status(self, queue_id: int):
"""
Получение информации о загрузке очереди, в зависимости от ID очереди
Метод позволяет определить, нсколько в данный момент целесообразно загружать новое задание в очередь
Данные в выдаче кешируются на 10 секунд
Список ID очередей:
1 - стандартная ImageToText, язык английский
2 - стандартная ImageToText, язык русский
5 - Recaptcha NoCaptcha
6 - Recaptcha Proxyless
7 - Funcaptcha
10 - Funcaptcha Proxyless
Пример выдачи ответа:
{
"waiting":242,
"load":60.33,
"bid":"0.0008600982",
"speed":10.77,
"total": 610
}
:param queue_id: Номер очереди
:return: JSON-объект
"""
payload = {
"queueId": queue_id
}
async with aiohttp.ClientSession() as session:
async with session.post(get_queue_status_url, json=payload) as resp:
return await resp.json()