Як спарсити погоду з sinoptik та відправити через бота телеграм

Блог Фрилансера 2 хвилин 8 секунд 15 бер. 2018
 Як спарсити погоду з sinoptik та відправити через бота телеграм

Телеграми боти стали дуже популярними. Зараз можна зустріти їх у будь-яких сферах від замовлення таксі, до банкінка — оплати послуг, переказ грошей.

Ще популярність їх заслуговує на те, що api для написання ботів дуже просте .Ось сторінка API російською.

>

Я ж покажу тільки частину коду, що відповідає за прийом і виведення інформації в канал .

Дані зберігати в базі не будемо, просто хочу показати принцип роботи.


І так будемо використовувати phpQuery та Curl для парсера з siniptik.ua.

будемо обробляти такий рядок 

Функція curl_content() описана у статті про парсер з olx


 

Тепер перевірятимемо як це все працює в Телеграмі.

@PechenkiSiteBot

if (strpos($text, '/wea') !== false) {
  $option = explode(" ", $text); // Розбиває рядок за допомогою роздільника $option[1]-Київ,$option[2] = число 3
  require ('api/phpQuery.php'); // бібліотека
  $html=curl_content('https://sinoptik.ua/погода-'.$option[1].'/10-дней');// Парсі всі 10 днів
  phpQuery::newDocument($html);
  $xbodycontent = pq('#blockDays > .tabs')->find('.main');
  $ i = 0;
  foreach ($xbodycontent as $res) {
    $ pqres = pq ($ res);
    $day = $pqres->find('.day-link')->text();//день
    $date = $pqres->find('.date')->text();//дата
    $icon = $pqres->find('.weatherIco')->attr('title');//напис на малюнку
    $iconimg = $pqres->find('.weatherImg')->html();//напис на малюнку
    $temperature = $pqres->find('.temperature')->text();// Температура
    //перевіряємо що погода щоб визначити який смайлик відправити для візуалізації
  if ($icon == 'Хмарно, невеликий сніг') {
    $emoji = hex2bin('F09F8CA809'); //hex2bin('f09f9880') //подання смайлу https://apps.timwhitlock.info/emoji/tables/unicode
  }
  if ($icon == 'Хмарно, сильний сніг') {
    $emoji = hex2bin('F09F8CA809');
  }
   if ($icon == 'Хмарно, сніг') {
    $emoji = hex2bin('E29B84');
  }
  if ($icon == 'Хмарно') {
    $emoji = hex2bin('E29881');
  }
  if ($icon == 'Хмарно з проясненнями, мокрий сніг') {
    $emoji =hex2bin('F09F8CA609');
  }
  if ($icon == 'Хмарно з проясненнями') {
    $emoji =hex2bin('F09F8CA409');
  }
  if ($icon == 'Хмарно з проясненнями, невеликий сніг') {
    $emoji =hex2bin('E29D8409');
  }
 // Оправляємо в канал результат
    $content = ['chat_id' => $chat_id,
    'parse_mode'=>'Markdown',
    'text' => $day.$date.chr(10).$temperature.chr(10).$emoji.$icon
  ];
  requestToTelegram($content);


if(isset($option[2])? $num=$option[2] : $num=2);
  if(++$i == $num) break;//обмеження в $num висновків
  }
}
@PechenkiSiteBot
Назва

Експериментуйте і можливо саме ви зробите щось вартісне