Страница 1 из 1

[Сценарий] Парсер предсказание Яндекс Погоды

Добавлено: Пт окт 25, 2019 9:30 pm
S_Nick
Может кому-то будет полезно.
Умный дом говорит предсказания погоды, к примеру "В ближайшие два часа осадков не ожидается" или "В течении получаса начнется дождь".
А также, если выполнять в Cron, к примеру, каждые 15 минут (чаще не рекомендую), с параметром "change=1", будет сообщать изменения погоды, если оно произошло.
Данные получает с сайта yandex.by/pogoda/
Параметр $page_url = "https://yandex.by/pogoda/minsk"; задает вашу геолокацию.
Версия сырая, могут быть ошибки.
Если есть мысли как оптимизировать улучшить код, пишите в теме.

Код сценария yandexWeatherFact:

Код: Выделить всё

if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];

$page_url = "https://yandex.by/pogoda/minsk"; //ссылка на погоду

//делаем до 10 запросов, т.к. сайт иногда не отвечает с первого раза
for ($i = 0; $i <= 10; $i++) {
	if (!$page_cont) $page_cont = file_get_contents($page_url);
}

if ($page_cont) {
	//ищем <p class="maps-widget-fact__title">(.*?)</p>
	preg_match_all("/<p class=\"maps-widget-fact__title\">(.*?)<\/p>/ui", $page_cont, $match);
	$ret = $match[1][0];
	if ($ret) {
 		if ($change) {
     		echo "<br>Запрос: ";
 			if (gg("yw_mycity.osadki") !== $ret) { //если изменилась погода
				say($ret, $level);
     			echo "<br>Погода изменилась!";
				sg("yw_mycity.osadki", $ret);
        	} else {
         		echo "<br>Погода не изменилась!";
        	}
    	} else {
			say($ret, $level);
  			echo "<br>" . $ret;
 			sg("yw_mycity.osadki", $ret);
    	}
	}
} else {
	echo "<br>Погода. Данные не получены.";
}
Код для Cron (Рекомендую выполнять не чаще 15 минут):
Crontab: */15 * * * *

Код: Выделить всё

runScript("yandexWeatherFact", array("change"=>"1"));
Пример выполнения:
В ближайшие два часа осадков не ожидается
P/S. Модераторы. Если я опубликовал не в тот раздел тему, пожалуйста перенесите, поправьте.

Re: [Сценарий] Парсер предсказание Яндекс Погоды

Добавлено: Вс окт 27, 2019 12:47 pm
xor
Сделал довесок на основе скрипта выше. Вывожу как альтернативу основному прогнозу. Интересно будет оповещение об осадках добавить, если скоро начнется
2019-10-27_12-43-18.png
2019-10-27_12-43-18.png (8.37 КБ) 4523 просмотра

Re: [Сценарий] Парсер предсказание Яндекс Погоды

Добавлено: Сб ноя 30, 2019 10:26 pm
Sergey.Chek
Тут пишет, но Алиса ни чего не говорит.

Re: [Сценарий] Парсер предсказание Яндекс Погоды

Добавлено: Вс дек 01, 2019 2:27 am
xor
Sergey.Chek писал(а):
Сб ноя 30, 2019 10:26 pm
Тут пишет, но Алиса ни чего не говорит.
а минмессагелевел какой установлен? по умолчанию скрипт с уровнем 1 говорит, если нужно больше, параметром надо его передавать в скрипт

Re: [Сценарий] Парсер предсказание Яндекс Погоды

Добавлено: Вс дек 01, 2019 10:45 am
Sergey.Chek
Тут?

Re: [Сценарий] Парсер предсказание Яндекс Погоды

Добавлено: Вс дек 01, 2019 11:52 am
xor
Sergey.Chek писал(а):Тут?
Ну да, поставьте либо здесь 1, либо скрипт с параметром левел>1 запускайте

Отправлено с моего Redmi 4X через Tapatalk


Re: [Сценарий] Парсер предсказание Яндекс Погоды

Добавлено: Вс дек 01, 2019 2:55 pm
Sergey.Chek
Спасибо. Заговорила.