Как погоду настроить
Модератор: immortal
-
- Сообщения: 1
- Зарегистрирован: Пн апр 25, 2016 12:58 pm
- Откуда: Саратов
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Как погоду настроить
Зарегистрировался на weather. API бесплатный для Developer на 500 запросов в день и 10 в минуту. В отличии от Яндекса разбирать надо несколько xml(json). Я взял astronomy для восходов и заходов, conditions - для текущей погоды, forecast10day - для прогноза на 10 дней и hourly 36-часовой прогноз использую для ближайшего прогноза на сутки.
Для "особых" любителей погоды есть почасовой прогноз на 10 дней.
Для "особых" любителей погоды есть почасовой прогноз на 10 дней.
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Как погоду настроить
Необязательно. Можно параметры astronomy, conditions, forecast10day и др. указать в одном запросе, и тогда в ответ прилетит одна большая портянка json или xml.andgeorg писал(а):В отличии от Яндекса разбирать надо несколько xml(json)
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Как погоду настроить
Как скрипт? Работает? Я так понял - там только 4 раза в сутки погоду цеплять можно?Amarok писал(а):В общем у меня такой сценарий:Значение $url я получил после регистрации на сайте Gismeteo. Для этого надо написать письмо на data@gismeteo.ru и попросить предоставить доступ к прогнозу погоды в xml-формате. Мне ответила любезная девушка, задала пару вопросов, выслала анкету (её надо заполнить) и - через некоторое время - у меня появился свой прогноз.СпойлерПоказатьКод: Выделить всё
$url = ""; $xml = simplexml_load_file($url); $city = "NTuraGismeteo"; $name = $xml->location['name']; if(gg($city.".name")!=$name){sg($city.".name",$name);} $name_r = $xml->location['name_r']; if(gg($city.".name_r")!=$name_r){sg($city.".name_r",$name_r);} $durm = $xml->location->day[0]['durm']; if(gg($city.".durm")!=$durm){sg($city.".durm",$durm);} $tmin = $xml->location->day[0]['tmin']; if(gg($city.".tmin")!=$tmin){sg($city.".tmin",$tmin);} $tmax = $xml->location->day[0]['tmax']; if(gg($city.".tmax")!=$tmax){sg($city.".tmax",$tmax);} if($tmin>0){$tmin="+".$tmin;} if($tmax>0){$tmax="+".$tmax;} $pmin = $xml->location->day[0]['pmin']; if(gg($city.".pmin")!=$pmin){sg($city.".pmin",$pmin);} $pmax = $xml->location->day[0]['pmax']; if(gg($city.".pmax")!=$pmax){sg($city.".pmax",$pmax);} $wsmin = $xml->location->day[0]['wsmin']; if(gg($city.".wsmin")!=$wsmin){sg($city.".wsmin",$wsmin);} $wsmax = $xml->location->day[0]['wsmax']; if(gg($city.".wsmax")!=$wsmax){sg($city.".wsmax",$wsmax);} $hummin = $xml->location->day[0]['hummin']; if(gg($city.".hummin")!=$hummin){sg($city.".hummin",$hummin);} $hummax = $xml->location->day[0]['hummax']; if(gg($city.".hummax")!=$hummax){sg($city.".hummax",$hummax);} $cl = $xml->location->day[0]['cl']; if(gg($city.".cl")!=$cl){sg($city.".cl",$cl);} $pt = $xml->location->day[0]['pt']; if(gg($city.".pt")!=$pt){sg($city.".pt",$pt);} $pr = $xml->location->day[0]['pr']; if(gg($city.".pr")!=$pr){sg($city.".pr",$pr);} $ts = $xml->location->day[0]['ts']; if(gg($city.".ts")!=$ts){sg($city.".ts",$ts);} $descr = $xml->location->day[0]['descr']; if(gg($city.".descr")!=$descr){sg($city.".descr",$descr);} $grademax = $xml->location->day[0]['grademax']; if(gg($city.".grademax")!=$grademax){sg($city.".grademax",$grademax);} $today = "Сегодня ".$name_r." ".$tmin."° — ".$tmax."°. ".$descr.". "; //Сегодня утром if ($xml->location->day[0]->forecast['tod'] == 1){ $t = $xml->location->day[0]->forecast->values['t']; if($t>0){$t="+".$t;} $descr = $xml->location->day[0]->forecast->values['descr']; $today_morning = "Утром до ".$t."°. ".$descr.". "; } //Сегодня днем if ($xml->location->day[0]->forecast['tod'] == 2){ $t = $xml->location->day[0]->forecast->values['t']; if($t>0){$t="+".$t;} $descr = $xml->location->day[0]->forecast->values['descr']; $today_day = "Днём до ".$t."°. ".$descr.". "; } //Сегодня вечером if ($xml->location->day[0]->forecast['tod'] == 3){ $t = $xml->location->day[0]->forecast->values['t']; if($t>0){$t="+".$t;} $descr = $xml->location->day[0]->forecast->values['descr']; $today_evening = "Вечером до ".$t."°. ".$descr.". "; } //Сегодня ночью if ($xml->location->day[1]->forecast['tod'] == 0){ $t = $xml->location->day[1]->forecast->values['t']; if($t>0){$t="+".$t;} $descr = $xml->location->day[1]->forecast->values['descr']; $today_night = "Ночью до ".$t."°. ".$descr."."; } $forecast = $today.$today_morning.$today_day.$today_evening.$today_night; if(gg($city.".forecast")!=$forecast){sg($city.".forecast",$forecast);} //Завтра $tmin = $xml->location->day[1]['tmin']; $tmax = $xml->location->day[1]['tmax']; $descr = $xml->location->day[1]['descr']; if($tmin>0){$tmin="+".$tmin;} if($tmax>0){$tmax="+".$tmax;} $tomorrow = "Завтра "." ".$tmin."° — ".$tmax."°. ".$descr.". "; //Завтра ночью if ($xml->location->day[2]->forecast['tod'] == 0){ $t = $xml->location->day[2]->forecast->values['t']; if($t>0){$t="+".$t;} $descr = $xml->location->day[2]->forecast->values['descr']; $tomorrow_night = "Завтра ночью до ".$t."°. ".$descr."."; } $forecastTomorrow = $tomorrow.$tomorrow_night; if(gg($city.".forecastTomorrow")!=$forecastTomorrow){sg($city.".forecastTomorrow",$forecastTomorrow);}
Приношу благодарности:
[*] сайту Gismeteo за предоставленный доступ к погодным данным на мой город
[*] менеджеру Gismeteo Валерии Сердюк за её терпение
[*] пользователю нашего форума m-malva за его код из которого я надёргал некоторые кусочки/идеи
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 230
- Зарегистрирован: Чт фев 12, 2015 2:34 pm
- Благодарил (а): 36 раз
- Поблагодарили: 6 раз
Re: Как погоду настроить
После непонятного глюка в системе
перестала корректно работать погода
в веб переменных стоит ссылка http://pogoda.tut.by/city/sankt-peterburg?pda=1
заходим туда
Завтра:
днем: +18°, переменная облачность, ночью: +11°, ясно, ветер: З — 3 м/с, давление: 759 мм.рт.ст, влажность: 62%
ставим строку поиска
Завтра.+?днем\:(.+?)<br \/>
в логах видим
2016-09-02 02:54:56 new value: +16°, пасмурно, дождь, ночью: +16°, облачно с прояснениями, дождь, ветер: С-С-В — 3 м/с, давление: 756 мм.рт.ст, влажность: 98%
2016-09-02 02:50:54 new value: +16°, пасмурно, дождь, ночью: +16°, облачно с прояснениями, дождь, ветер: С-С-В — 3 м/с, давление: 756 мм.рт.ст, влажность: 98%
откуда он берет данные?
перестала корректно работать погода
в веб переменных стоит ссылка http://pogoda.tut.by/city/sankt-peterburg?pda=1
заходим туда
Завтра:
днем: +18°, переменная облачность, ночью: +11°, ясно, ветер: З — 3 м/с, давление: 759 мм.рт.ст, влажность: 62%
ставим строку поиска
Завтра.+?днем\:(.+?)<br \/>
в логах видим
2016-09-02 02:54:56 new value: +16°, пасмурно, дождь, ночью: +16°, облачно с прояснениями, дождь, ветер: С-С-В — 3 м/с, давление: 756 мм.рт.ст, влажность: 98%
2016-09-02 02:50:54 new value: +16°, пасмурно, дождь, ночью: +16°, облачно с прояснениями, дождь, ветер: С-С-В — 3 м/с, давление: 756 мм.рт.ст, влажность: 98%
откуда он берет данные?
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
php 7, AMS,broadlink rm2,rm3 mini.
-
- Сообщения: 160
- Зарегистрирован: Ср окт 07, 2015 9:36 am
- Благодарил (а): 51 раз
- Поблагодарили: 27 раз
Re: Как погоду настроить
Так вроде всё согласно Вашему запросу "Завтра.+?днем\:(.+?)<br \/>":
На сайте сейчас:
Вот и выделяются от слова "днём:" до спецсимвола "<br />", т.е.
На сайте сейчас:
В исходном коде страницы:Завтра:
днем: +18°, переменная облачность, ночью: +11°, ясно, ветер: З — 3 м/с, давление: 759 мм.рт.ст, влажность: 62%
Код: Выделить всё
<b>Завтра:</b><br />
днем: +18°, переменная облачность, ночью: +11°, ясно, ветер: З — 3 м/с, давление: 759 мм.рт.ст, влажность: 62%<br />
Код: Выделить всё
+18°, переменная облачность, ночью: +11°, ясно, ветер: З — 3 м/с, давление: 759 мм.рт.ст, влажность: 62%
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
-
- Сообщения: 230
- Зарегистрирован: Чт фев 12, 2015 2:34 pm
- Благодарил (а): 36 раз
- Поблагодарили: 6 раз
Re: Как погоду настроить
Это-то все верно, но только результат выделения строки по шаблону отличается у МД
сегодня тоже проверил результат один и тот же
прогноз совпадает со вчерашним
почистил таблицу в базе данных
и ничего не изменилось
видимо чего то с системой, придется переустанавливать.
сегодня тоже проверил результат один и тот же
прогноз совпадает со вчерашним
почистил таблицу в базе данных
и ничего не изменилось
+16°, пасмурно, дождь, ночью: +16°, облачно с прояснениями, дождь, ветер: С-С-В — 3 м/с, давление: 756 мм.рт.ст, влажность: 98%
видимо чего то с системой, придется переустанавливать.
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
php 7, AMS,broadlink rm2,rm3 mini.
Re: Как погоду настроить
Всем привет! Нужна помощь новичку в настройка погоды с http://rp5.ru/Погода_в_Рязани,_Рязанская_область. Искал на форуме нашел тут как делали другие, но у меня не получается вытащить данные. Шаблон для поиска делал вот такой \<div id="ArchTemp"\>\<span class="t_0" style="display: none;"\>(.+?)\<\/span\> но данных нету (incorrect value). Заранее спасибо!
-
- Сообщения: 23
- Зарегистрирован: Чт дек 29, 2016 11:32 pm
- Благодарил (а): 15 раз
- Поблагодарили: 0
Re: Как погоду настроить
Добрый день ! Подскажите , что поправить перестал работать сценарий
$city_id=27612;
$data_file="http://export.yandex.ru/weather-ng/fore ... xml?".rand(); // адрес xml файла
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
$temp=$xml->fact->temperature;
// Если значение температуры положительно, для наглядности добавляем "+"
if ($temp>0) {$temp='+'.$temp;}
sg("Moscow.Temp",$temp);
sg("Moscow.City",Москва);
sg("Moscow.Type",$xml->fact->weather_type);
sg("Moscow.Pressure",$xml->fact->pressure);
sg("Moscow.Humidity",$xml->fact->humidity);
sg("Moscow.WindSpeed",$xml->fact->wind_speed);
sg("Moscow.Image",$xml->fact->image);
sg("Moscow.UpTime",$xml->fact->uptime);
$dir = $xml->fact->wind_direction;
switch ($dir){
case 's':
$dir="южное";
break;
case 'n':
$dir="северное";
break;
case 'w':
$dir="западное";
break;
case 'e':
$dir="восточное";
break;
case 'sw':
$dir="юго-западное";
break;
case 'nw':
$dir="северо-западное";
break;
case 'calm':
$dir="штиль";
break;
}
sg("Moscow.WindDir",$dir);
sg("Moscow.SunRise",$xml->day[0]->sunrise);
sg("Moscow.SunSet",$xml->day[0]->sunset);
$city_id=27612;
$data_file="http://export.yandex.ru/weather-ng/fore ... xml?".rand(); // адрес xml файла
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
$temp=$xml->fact->temperature;
// Если значение температуры положительно, для наглядности добавляем "+"
if ($temp>0) {$temp='+'.$temp;}
sg("Moscow.Temp",$temp);
sg("Moscow.City",Москва);
sg("Moscow.Type",$xml->fact->weather_type);
sg("Moscow.Pressure",$xml->fact->pressure);
sg("Moscow.Humidity",$xml->fact->humidity);
sg("Moscow.WindSpeed",$xml->fact->wind_speed);
sg("Moscow.Image",$xml->fact->image);
sg("Moscow.UpTime",$xml->fact->uptime);
$dir = $xml->fact->wind_direction;
switch ($dir){
case 's':
$dir="южное";
break;
case 'n':
$dir="северное";
break;
case 'w':
$dir="западное";
break;
case 'e':
$dir="восточное";
break;
case 'sw':
$dir="юго-западное";
break;
case 'nw':
$dir="северо-западное";
break;
case 'calm':
$dir="штиль";
break;
}
sg("Moscow.WindDir",$dir);
sg("Moscow.SunRise",$xml->day[0]->sunrise);
sg("Moscow.SunSet",$xml->day[0]->sunset);
- Vovix
- Сообщения: 1155
- Зарегистрирован: Пн янв 27, 2014 1:43 am
- Откуда: г.Ижевск
- Благодарил (а): 60 раз
- Поблагодарили: 532 раза
- Контактная информация:
Re: Как погоду настроить
гляньте вот сюда: viewtopic.php?f=5&t=1914&start=160#p45597wukd писал(а):Добрый день ! Подскажите , что поправить перестал работать сценарий
$city_id=27612;
$data_file="http://export.yandex.ru/weather-ng/fore ... xml?".rand(); // адрес xml файла
...................
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
- Keen Lizard
- Сообщения: 7
- Зарегистрирован: Пн окт 01, 2018 2:25 pm
- Благодарил (а): 20 раз
- Поблагодарили: 0
Re: Как погоду настроить
День добрый!
Пытаюсь вытащить с помощью регулярных выражений данные температуры с яндекс погоды. https://yandex.ru/pogoda/surgut
Хочу получить температуру минимума/максимума на 7 дней.
"dayIndex":3.+day"><span class="temp__value">(.?\d+).+i-font_face_yandex-sans-text-medium">(°)<.+<div class="temp forecast-briefly__temp(\s).+night"><span class="temp__value">(.?\d+).+"dayIndex":4}}'> - данным выражением получаю данные типа: +4° 0
Но со следующим днем такое уже не прокатывает:
"dayIndex":4.+day"><span class="temp__value">(.?\d+).+i-font_face_yandex-sans-text-medium">(°)<.+<div class="temp forecast-briefly__temp(\s).+night"><span class="temp__value">(.?\d+).+"dayIndex":5}}'> - incorrect value:
Хотя при проверке на сайте https://regex101.com/ регулярка работает.
Гуру регулярок, помогите разобраться
Пытаюсь вытащить с помощью регулярных выражений данные температуры с яндекс погоды. https://yandex.ru/pogoda/surgut
Хочу получить температуру минимума/максимума на 7 дней.
"dayIndex":3.+day"><span class="temp__value">(.?\d+).+i-font_face_yandex-sans-text-medium">(°)<.+<div class="temp forecast-briefly__temp(\s).+night"><span class="temp__value">(.?\d+).+"dayIndex":4}}'> - данным выражением получаю данные типа: +4° 0
Но со следующим днем такое уже не прокатывает:
"dayIndex":4.+day"><span class="temp__value">(.?\d+).+i-font_face_yandex-sans-text-medium">(°)<.+<div class="temp forecast-briefly__temp(\s).+night"><span class="temp__value">(.?\d+).+"dayIndex":5}}'> - incorrect value:
Хотя при проверке на сайте https://regex101.com/ регулярка работает.
Гуру регулярок, помогите разобраться