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

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Ответить
Аватара пользователя
S_Nick
Сообщения: 67
Зарегистрирован: Сб сен 30, 2017 7:44 pm
Откуда: Минск
Благодарил (а): 9 раз
Поблагодарили: 54 раза
Контактная информация:

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

Сообщение S_Nick » Пт окт 25, 2019 9:30 pm

Может кому-то будет полезно.
Умный дом говорит предсказания погоды, к примеру "В ближайшие два часа осадков не ожидается" или "В течении получаса начнется дождь".
А также, если выполнять в 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. Модераторы. Если я опубликовал не в тот раздел тему, пожалуйста перенесите, поправьте.
Последний раз редактировалось S_Nick Пн окт 28, 2019 3:07 pm, всего редактировалось 3 раза.
За это сообщение автора S_Nick поблагодарили (всего 6):
C_3AXAPOB (Пт окт 25, 2019 10:01 pm) • xor (Вс окт 27, 2019 12:35 am) • Sergey.Chek (Вс окт 27, 2019 1:19 pm) • webms (Ср ноя 13, 2019 4:42 pm) • Samir77 (Вс янв 10, 2021 12:03 am) • newz20 (Вт янв 12, 2021 2:05 pm)
Рейтинг: 6.98%
Аватара пользователя
xor
Сообщения: 2036
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 283 раза
Поблагодарили: 628 раз

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

Сообщение xor » Вс окт 27, 2019 12:47 pm

Сделал довесок на основе скрипта выше. Вывожу как альтернативу основному прогнозу. Интересно будет оповещение об осадках добавить, если скоро начнется
2019-10-27_12-43-18.png
2019-10-27_12-43-18.png (8.37 КБ) 4501 просмотр
За это сообщение автора xor поблагодарили (всего 2):
S_Nick (Вс окт 27, 2019 2:48 pm) • Samir77 (Вс май 03, 2020 2:34 pm)
Рейтинг: 2.33%
Sergey.Chek
Сообщения: 107
Зарегистрирован: Ср фев 13, 2019 9:50 pm
Благодарил (а): 219 раз
Поблагодарили: 19 раз

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

Сообщение Sergey.Chek » Сб ноя 30, 2019 10:26 pm

Тут пишет, но Алиса ни чего не говорит.
Вложения
IMG_20191130_222201.jpg
IMG_20191130_222201.jpg (45.17 КБ) 4285 просмотров
Raspberry pi 4
Аватара пользователя
xor
Сообщения: 2036
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 283 раза
Поблагодарили: 628 раз

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

Сообщение xor » Вс дек 01, 2019 2:27 am

Sergey.Chek писал(а):
Сб ноя 30, 2019 10:26 pm
Тут пишет, но Алиса ни чего не говорит.
а минмессагелевел какой установлен? по умолчанию скрипт с уровнем 1 говорит, если нужно больше, параметром надо его передавать в скрипт
Sergey.Chek
Сообщения: 107
Зарегистрирован: Ср фев 13, 2019 9:50 pm
Благодарил (а): 219 раз
Поблагодарили: 19 раз

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

Сообщение Sergey.Chek » Вс дек 01, 2019 10:45 am

Тут?
Вложения
IMG_20191201_104244.jpg
IMG_20191201_104244.jpg (25.7 КБ) 4226 просмотров
Raspberry pi 4
Аватара пользователя
xor
Сообщения: 2036
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 283 раза
Поблагодарили: 628 раз

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

Сообщение xor » Вс дек 01, 2019 11:52 am

Sergey.Chek писал(а):Тут?
Ну да, поставьте либо здесь 1, либо скрипт с параметром левел>1 запускайте

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

За это сообщение автора xor поблагодарили (всего 2):
Sergey.Chek (Вс дек 01, 2019 12:35 pm) • Samir77 (Вс янв 10, 2021 12:10 am)
Рейтинг: 2.33%
Sergey.Chek
Сообщения: 107
Зарегистрирован: Ср фев 13, 2019 9:50 pm
Благодарил (а): 219 раз
Поблагодарили: 19 раз

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

Сообщение Sergey.Chek » Вс дек 01, 2019 2:55 pm

Спасибо. Заговорила.
Raspberry pi 4
Ответить