API проверки текстов на уникальность сервиса text.ru |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
API проверки текстов на уникальность сервиса text.ruПеред использованием
Если для взаимодействия с Протокол
ОшибкиВ случае, если на стороне сервера
Ошибки условно можно разделить на три категории:
В возвращаемом коде ошибки значащими являются только последние две цифры,
т.е. коды вида Коды ошибок, их типы и описания:
ЗапросыВсе запросы всегда должны содержать в себе опцию Формат описания запросов:
Проверка баланса пакетовТочка входа:
Внимание! В целях безопасности, чтобы ваш IP-адрес не заблокировался, не рекомендуется обращаться к данному методу чаще 2 раз в минуту. Отправка текста на проверкуТочка входа:
Получение результата проверкиТочка входа:
Получение результата проверки
Поля Информация об уникальностиПредставляет собой массив/объект со следующими полями:
Каждый элемент массива ссылок
Поля Пример: {
"date_check": "29.03.2017 14:46:49",
"unique": 0,
"clear_text": "Wikipedia was launched оn January 15 2001 by Jimmy Wаles and Larry Sanger 11 Sanger coined its name 12",
"mixed_words": "4 10 29",
"urls": [
{
"url": "https://en.wikipedia.org/wiki/Wikipedia",
"plagiat": 100,
"words": "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36"
}
]
} Информация о правописанииПредставляет собой массив, каждый элемент которого имеет следующие поля:
Пример: [
{
"error_type": "Spelling",
"replacements": [
"milk",
"mild",
],
"reason": "Spelling error found",
"error_text": "mildd",
"start": 255,
"end": 272
},
{
"error_type": "Capital letters",
"replacements": [
"Hello"
],
"reason": "This sentence doesn't start with a capital letter",
"error_text": "hello",
"start": 276,
"end": 287
}
] Информация по SEO-анализуПредставляет собой массив/объект со следующими полями:
Каждый элемент списка
Каждый элемент списка
Пример: {
"count_chars_with_space": 620,
"count_chars_without_space": 545,
"count_words": 77,
"water_percent": 11,
"spam_percent": 38,
"mixed_words": [8, 11, 47],
"list_keys": [
{
"key_title": "check",
"count": 6
},
{
"key_title": "text",
"count": 5
},
{
"key_title": "antiplagiat",
"count": 3
}
],
"list_keys_group": [
{
"key_title": "check text",
"count": 3,
"sub_keys": [
{
"key_title": "check",
"count": 6
},
{
"key_title": "text",
"count": 5
}
]
}
]
} CallbackПроверка текста на уникальность занимает определенное (заранее неизвестное) время.
Если вы хотите получить уведомление о факте завершения (вместе с результатами) проверки вашего текста,
то вы можете при добавлении текста на Поля запроса аналогичны тем, которые получаются запросом получения результата проверки, но имеются следующие отличия:
Максимальное число попыток отправки результатов проверки - 3.
Если проверка на правописание закончится позже проверки на уникальность,
то будет отправлено 2 запроса по мере окончания проверок
(во время первого запроса поле Чтобы убедиться, что вы успешно получили и обработали результат, на вашей странице должно отобразиться ok и ничего более. PHPВ $request = http_build_query([
'userkey' => 'my-api-key',
'method' => 'get_packages_info',
]);
$opts = ['http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => $request
]];
$context = stream_context_create($opts);
$response = file_get_contents('https://api.text.ru/account', false, $context); или расширения curl: $request = http_build_query([
'userkey' => 'my-api-key',
'method' => 'get_packages_info',
]);
$options = [
CURLOPT_URL => 'https://api.text.ru/account',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $request,
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = (string) curl_exec($ch);
curl_close($ch); или библиотеки guzzlehttp/guzzle: $request = [
'userkey' => 'my-api-key',
'method' => 'get_packages_info',
];
$client = new GuzzleHttp\Client();
$response = $client->request(
'POST',
'https://api.text.ru/account',
[GuzzleHttp\RequestOptions::FORM_PARAMS => $request]
); В всех случаях результатом должна быть $result = @json_decode($response, true);
if (JSON_ERROR_NONE !== json_last_error()) {
// Ошибка разбора JSON.
} elseif (empty($result) || !is_array($result)) {
// Неправильный формат ответа.
} else {
var_export($result);
// Будет выведено:
// array (
// 'size' => 24698146,
// )
} JSДля отправки запросов var request = {
userkey: 'my-api-key',
method: 'get_packages_info'
};
$.ajax({
url: 'https://api.text.ru/account',
type: 'post',
dataType: 'json',
data: request
error: (jqXHR, textStatus, errorThrown) => {
console.error(jqXHR, textStatus, errorThrown);
}
success: (response, textStatus, jqXHR) => {
console.info(response);
// Будет выведено:
// {"size":24698146}
}
}); Pythonimport requests
try:
request = {
'userkey': 'my-api-key',
'method': 'get_packages_info'
}
response = requests.post('https://api.text.ru/account', data = request).json()
print(response)
# Будет выведено:
# {u'size': 24698146}
except requests.exceptions.RequestException as ex:
print('ERROR: %s' % ex) Rubyrequire 'net/http'
require 'uri'
require 'json'
begin
uri = URI.parse("https://api.text.ru/account")
request = {
"userkey" => "my-api-key",
"method" => "get_packages_info"
}
response = Net::HTTP.post_form(uri, request)
result = JSON.parse(response.body)
puts result
# Будет выведено:
# {"size"=>24698146}
rescue => ex
puts ex
end 1СПример использования Проверка документовДля проверки файлов можно использовать пакет text-media/file-parser,
поддерживающий возможность поиска текста в файлах следующих типов: Организация очередейДля организации очередей проверки текстов можно использовать RabbitMQ,
примеры использования которого в Создание демоновПростейшим способом автоматической проверки нуждающихся в этом текстов является настройка планировщика задач,
однако оптимальней будет "слушать" очередь (см. предыдущий раздел) постоянно работающим скриптом-"демоном".
Это можно сделать при помощи Supervisor, который может "демонизировать" скрипт на любом языке,
а также включает в себя [program:plagiarism-api]
user=my-user-name
command=/my-daemon-folder/my-plagiarism-api-daemon.php
autostart=true
process_name=%(program_name)s-%(process_num)02d
numprocs=1
redirect_stderr=true
stdout_logfile=/my-daemon-folder/log/%(program_name)s-%(process_num)02d.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=3 Сам же скрипт "демона" должен иметь в простейшем случае примерно следующий вид: declare(ticks=1);
$isRunned = true;
pcntl_signal(SIGTERM, function() {
global $isRunned;
$isRunned = false;
});
while ($isRunned) {
// "Слушаем" очередь и отправляем текст из нее на проверку.
} Использование
|