Работаем с API, часть 2

Работаем с API, часть 2

Доброе время суток, уважаемые читатели!
Как и было обещано в предыдущей статье, рассмотрим работу с методом addTask

В данном примере мы будем добавлять задание, собирающее email'ы с помощью парсера HTML::EmailExtractor HTML::EmailExtractor.
Настройки задания в интерфейсе A-Parser выглядят так:
m1jau_190317211446.png

Как получить JSON с настройками для запроса API было рассмотрено в предыдущей статье.

Добавим в наш класс EngineWeb несколько методов, а именно :
  • GetEmailJson - метод формирующий json с настройками задания
  • addTaskEmail1 - метод отправляющий запрос API для добавления задания в очередь
  • CheckStatus - метод отправляющий запрос API для получения статуса задачи
Метод GetEmailJson принимает в качестве параметра ссылку на сайт, который будем парсить и подставляет его в формируемый json:
Код:
 /*метод формирующий JSON для сбора email с помощью AddTask*/
     function GetEmailJson($url,$preset = false){
      $json = json_encode([
        'action' => 'addTask',
        'password' => $this->pass,
         'data' => [
            'preset' => 'default',
            'configPreset' => 'default',
            'parsers' => [
              [
                'HTML::EmailExtractor',
                'default',
                [
                  'type' => 'options',
                  'id' => 'parseLevel',
                  'value' => 2,
                ],
                [
                  'type' => 'unique',
                  'result' => [
                    'mails',
                    'mail'
                  ],
                  'uniqueType' => 'string',
                  'uniqueGlobal' => true,
                ],
                [
                  'type' => 'override',
                  'id' => 'user-agent',
                  'value' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
                ]
              ]
            ],
             'resultsFormat' => '$p1.preset',
             'resultsSaveTo' => 'file',
             'resultsFileName' => '$datefile.format().txt',
             'additionalFormats' => [],
             'resultsUnique' => 'no',
             'queriesFrom' => 'text',
              'queries' => [ $url ],
              'uniqueQueries' => true,
              'saveFailedQueries' => false,
              'iteratorOptions' => [
                'onAllLevels' => false,
                'queryBuildersAfterIterator' => false,
                'queryBuildersOnAllLevels' => false,
              ],
              'resultsOptions' => [
                'overwrite' => false,
                'writeBOM' => false,
              ],
              'doLog' => 'no',

         ],
      ]);
      return $json;
    }

В методе addTaskEmail1 мы вызываем вышеописанный метод, получаем json с необходимыми настройками, и отправляем запрос для добавления задания в очередь.
Код:
function addTaskEmail1($url){
      $json = $this->GetEmailJson($url);
      $ch = curl_init($this->path);
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($json)));
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain; charset=UTF-8'));
      $response = curl_exec($ch);
       curl_close($ch);
       var_dump($response);
    }

Нажимаем на кнопку и получаем ответ:
lzx16_190317213632.png

Как видим, в результате приходит id добавленного в очередь задания. Теперь нужно в методе CheckStatus описать получение статуса задачи по его id:
Код:
function CheckStatus($idTask){
      $json = json_encode([
         'action' => 'getTaskState',
         'password' => $this->pass,
         'data' => [
            'taskUid' => $idTask
         ],
      ]);
      $ch = curl_init($this->path);
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($json)));
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain; charset=UTF-8'));
      $response = curl_exec($ch);
       curl_close($ch);
       var_dump($response);
    }

Проверяем:
v5ety_190317214121.png

Ответ со статусом задании получен получен.

Точно по такому же принципу можно получить ссылку на файл результата с помощью метода getTaskResultsFile и многое другое.

Документация по работе с А-Парсером через API доступна здесь.
Автор
Support Денис
Просмотры
24
Первый выпуск
Обновление

Рейтинги

0,00 звёзд Оценок: 0

Ещё ресурсы от Support Денис

Назад
Верх