Готовые функции PHP для апи Миратекст


Иногда приходится работать мне и с текстами. Точнее, заказчики дают ТЗ, в котором необходимо научить систему взаимодействовать с некоторым сервисами, работающими с текстами. Что-то я сам уже запутался. В общем, в этой заметке я покажу функции на PHP, с помощью которых можно получать данные по api с одного из популярных онлайн сервисов по работе с текстами – Миратекст.



Я не буду переписывать апи миратекста, поэтому, вполне возможно, что вам придется немного переделать функции, адаптировать к своим потребностям. Добавить или изменить некоторые передаваемые параметры, например.

Отправка текста на анализ в Миратекст

function send_text_mira($text){
    global $api_key_mira;

    $body = [
        'api_key' => $api_key_mira,
        'content' => [$text],
        'options' => ['paid_type' => 'paid'],
        'check_type' => 'content'
        
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://miratext.ru/api2/call/article/seoAnalizText');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($body)); 
    
    $rawResponse = curl_exec($ch);
 
    if (curl_errno($ch)) {
        throw new \Exception('Ошибка curl: ' . curl_error($ch));
    }
    
    curl_close($ch);
    
    $response = \json_decode($rawResponse, true);

    return $response;
}
Здесь сразу жестко вшиты параметры: отправляем на платную проверку и тип текст, а не ссылка. В ответе нам главное получить уникальный хэш. Достать его можно например, так

$response = send_text_mira($check_text);
$mira_hash = $response['hash'];
Получение результата анализа текста от Миратекст

function get_check_mira($mira_hash){
    global $api_key_mira;

    $body = [
        'userkey' => $api_key_mira,
        'hash' =>$mira_hash      
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://miratext.ru/api2/call/article/seoAnalizText');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($body)); 
    
    $rawResponse = curl_exec($ch);
 
    if (curl_errno($ch)) {
        throw new \Exception('Ошибка curl: ' . curl_error($ch));
    }
    
    curl_close($ch);
    
    $response = \json_decode($rawResponse, true);

    return $response;
}
С полученными результатами можно работать, если статус ответа assepted:

  $response = get_check_mira($singl['mira_hash']);
    if ($response["status"] == "accepted"){
///работаем дальше
    }
Выбираем все слова:

  $repeatWordsAll = $response["data"]["repeatWordsAll"];
    if ($repeatWordsAll){
        $mira = build_mira_html_origin($repeatWordsAll);
}
И формируем таблицу, сколько повторений

function build_mira_html_origin($repeatWordsAll){
	$table = "<table><thead><tr><th>Слово</th><th>Слова</th><th>Вхождений</th></tr></thead><tbody>";
	foreach ($repeatWordsAll as $key){
		$tr = "<tr>";
		
		$tr .= "<td>".$key["word"]."</td><td>";
	
		$chet = 0;
		foreach ($key['wordsAll'] as $sub_key){
			$chet++;
			if ($chet > 1){
				$tr .= ", ";
			}
			$tr .=  $sub_key;
		}		   
		$tr .= "</td>";	
		$tr .= "<td>".$key['words_count'][0]."</td></tr>";	
		$table .= $tr;
	}
	
	$table .= "</tbody></table>";
    return $table;
}
У вас есть вопросы по сплаву работы с текстами и программированием? Пишите, проконсультирую. Не бесплатно, но недорого.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, тексты, миратекст, апи, php




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Комментарии: три способа документировать Java код
Дежавю
Коды состояния и тексты ответов