Как погоду настроить
Модератор: immortal
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Как погоду настроить
Честно, не разбирался. Работает и работает. Мне многое, что непонятно. Я вообще вон по Мажордому списка команд найти не могу, так что все на примерах, на примерах.
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Как погоду настроить
http://smartliving.ru/Main/ProgrammingFunctionsPAV писал(а):... по Мажордому списка команд найти не могу...
-
- Сообщения: 67
- Зарегистрирован: Пт дек 27, 2013 11:20 pm
- Благодарил (а): 5 раз
- Поблагодарили: 2 раза
Re: Как погоду настроить
Вариант для украинского Sinoptik.ua: сайт поддерживает создание информеров погоды - кнопка "настройте информер и получите код" в нижней части страницы прогноза для вашего города. Жмем на кнопку - в адресной строке получаем http://sinoptik.ua/информеры?id=303012647 , где 303012647 будет у Вас отличаться. В моем примере это id для Кривого Рога. Копируем значение Вашего id. С информера можем вытянуть следующие переменные: температура , влажность, а.давление, скорость ветра. Ссылка для парсинга веб-переменных http://informers.sinoptik.ua/js3.php?ti ... 47&lang=ru, где вместо 303012647 - ставим значение для своего города. Шаблоны поиска: температура - "temp":"(.+?)°" , влажность - "rh":"(.+?)%" , давление - "p":"(.+?) \\u , сила ветра - ws":"(.+?) \\u.
Можно вытянуть еще направление ветра и , теоретически, картинку осадков. Направление ветра - \\u0441, (.+?).","p , результат будет в виде примерно \u044e\u0433\u043e-\u0432\u043e\u0441\u0442\u043e\u0447, вывести на страницу можно таким образом
Из плюсов - загружаем из сети малый объем данных. Из минусов - все словесные данные в виде ескейп-последовательностей.
Можно вытянуть еще направление ветра и , теоретически, картинку осадков. Направление ветра - \\u0441, (.+?).","p , результат будет в виде примерно \u044e\u0433\u043e-\u0432\u043e\u0441\u0442\u043e\u0447, вывести на страницу можно таким образом
Код: Выделить всё
<!--
str1="<p>%ThisComputer.windDirection%</p>";
document.write(str1);
//-->
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Как погоду настроить
Дополнение для проговаривания погоды:
Код: Выделить всё
$status="";
$status.="Сегодня ".gg("Moscow.Type").".";
say($status,1);
$status="";
$w=round(gg("Moscow.Temp"));
$tempw=$w;
if($tempw >= 11 and $tempw <= 14){
$tempcels=" градусов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$tempcels= градусов ; }
if($tempw == 1){
$tempcels= градус ; }
if($tempw >= 2 and $tempw <= 4){
$tempcels= градуса ; }
}
//$tNew = abs((float)getGlobal('Moscow.Temp'));
$status.=' Температура '.getGlobal('Moscow.Temp')." ".$tempcels." цельсия";
say($status,1);
$tempw="";
$tempcels="";
$status="";
$h=round(gg("Moscow.Humidity"));
$tempw=$h;
if($tempw >= 11 and $tempw <= 14){
$tempcels=" процентов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$tempcels= процентов ; }
if($tempw == 1){
$tempcels= процент ; }
if($tempw >= 2 and $tempw <= 4){
$tempcels= процента ; }
}
$status.="Относительная влажность ".gg("Moscow.Humidity")." ".$tempcels. ".";
say($status,1);
$tempw="";
$tempcels="";
$status="";
$pressure=(float)gg("Moscow.Pressure");
if ($pressure<728) {
$status.=' Атмосферное давление пониженное';
} elseif ($pressure>768) {
$status.=' Атмосферное давление повышенное.';
} else {
$status.=' Атмосферное давление нормальное.';
}
say($status,1);
$status="";
// ветер
$WindSpeed=(float)gg("Moscow.WindSpeed");
if ($WindSpeed<1) {
$status.=' Ветра нет.';
} elseif ($WindSpeed<3) {
$status.=' Ветер слабый.';
} elseif ($WindSpeed<6) {
$status.=' Ветер сильный.';
} elseif ($WindSpeed<9) {
$status.=' Ветер очень сильный.';
} else {
$status.=' Ветер очень! Очень сильный.';
}
$status.=' Направление '.getGlobal('Moscow.WindDir').'.';
say($status,1);
- adzam
- Сообщения: 602
- Зарегистрирован: Сб дек 08, 2012 10:28 pm
- Откуда: Кишинев
- Благодарил (а): 20 раз
- Поблагодарили: 138 раз
Re: Как погоду настроить
Помогите пож вытянуть с синоптика картинку погоды, точнее описание?: ясно ,облачно и тд
Все вроде получилось но не могу избавиться от последней кавычки
Все вроде получилось но не могу избавиться от последней кавычки
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Как погоду настроить
а если в регулярном выражении
"(.+?)\/
заменить на
"(.+?)"
?
"(.+?)\/
заменить на
"(.+?)"
?
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- adzam
- Сообщения: 602
- Зарегистрирован: Сб дек 08, 2012 10:28 pm
- Откуда: Кишинев
- Благодарил (а): 20 раз
- Поблагодарили: 138 раз
Re: Как погоду настроить
Спасибо ,получилось.
Я присвоил это значение иконке с погодой, а как заставить иконку обновляться через 10 минут?
Вариант %Sinoptik.Img|600% не работает
Я присвоил это значение иконке с погодой, а как заставить иконку обновляться через 10 минут?
Вариант %Sinoptik.Img|600% не работает
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
-
- Сообщения: 59
- Зарегистрирован: Вт авг 26, 2014 1:59 pm
- Откуда: Новосибирск
- Благодарил (а): 8 раз
- Поблагодарили: 6 раз
Re: Как погоду настроить
Доброго
А есть ли возможность самостоятельного разбора веб страницы например в теле сценария с помощью preg_match?
Чтобы вытащить с gismeteo полный прогноз на три дня по параметрам например отсюда: http://www.gismeteo.ru/ajax/print/4690/short/
(с PHP практически не знаком) покурил интернет, все равно не получается
$url="http://www.gismeteo.ru/city/daily/4690/";
$fp = fopen($url, "r");
$patTemp = ' тут пишем шаблон';
preg_match($patTemp, $fp, $ZavtraTemp);
sg(ThisComputer.ForecastTemp,$ZavtraTemp);
чувствую что не верна концепция.. ткните
А есть ли возможность самостоятельного разбора веб страницы например в теле сценария с помощью preg_match?
Чтобы вытащить с gismeteo полный прогноз на три дня по параметрам например отсюда: http://www.gismeteo.ru/ajax/print/4690/short/
(с PHP практически не знаком) покурил интернет, все равно не получается
$url="http://www.gismeteo.ru/city/daily/4690/";
$fp = fopen($url, "r");
$patTemp = ' тут пишем шаблон';
preg_match($patTemp, $fp, $ZavtraTemp);
sg(ThisComputer.ForecastTemp,$ZavtraTemp);
чувствую что не верна концепция.. ткните
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Как погоду настроить
например у меня сделано так:Palko писал(а):А есть ли возможность самостоятельного разбора веб страницы например в теле сценария с помощью preg_match?
Чтобы вытащить с gismeteo полный прогноз на три дня по параметрам
Код: Выделить всё
//$city_id=28807;
$data_file="http://export.yandex.ru/weather-ng/forecasts/28807.xml";//$city_id.xml?".rand(); // адрес xml файла
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
$temp=$xml->fact->temperature;
// Если значение температуры положительно, для наглядности добавляем "+"
if ($temp>0) {$temp='+'.$temp;}
sg("YandexSamara.Temp",$temp);
sg("YandexSamara.City",$xml->city);
sg("YandexSamara.Type",$xml->fact->weather_type);
sg("YandexSamara.Pressure",$xml->fact->pressure);
sg("YandexSamara.Humidity",$xml->fact->humidity);
sg("YandexSamara.WindSpeed",$xml->fact->wind_speed);
sg("YandexSamara.Image",$xml->fact->image);
sg("YandexSamara.MorningTemp",$xml->{'day'}->{'day_part'}[0]->{'temperature-data'}->{'avg'});
sg("YandexSamara.MorningWeatherType",$xml->{'day'}->{'day_part'}[0]->{'weather_type'});
sg("YandexSamara.DayTemp",$xml->{'day'}->{'day_part'}[1]->{'temperature-data'}->{'avg'});
sg("YandexSamara.DayWeatherType",$xml->{'day'}->{'day_part'}[1]->{'weather_type'});
sg("YandexSamara.EveningTemp",$xml->{'day'}->{'day_part'}[2]->{'temperature-data'}->{'avg'});
sg("YandexSamara.EveningWeatherType",$xml->{'day'}->{'day_part'}[2]->{'weather_type'});
sg("YandexSamara.NightTemp",$xml->{'day'}->{'day_part'}[3]->{'temperature-data'}->{'avg'});
sg("YandexSamara.NightWeatherType",$xml->{'day'}->{'day_part'}[3]->{'weather_type'});
sg("YandexSamara.TomorrowDayTemp",$xml->{'day'}[1]->{'day_part'}[1]->{'temperature_to'});
sg("YandexSamara.TomorrowDayWeatherType",$xml->{'day'}[1]->{'day_part'}[1]->{'weather_type'});
$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("YandexSamara.WindDir",$dir);
sg("YandexSamara.SunRise",$xml->day[0]->sunrise);
sg("YandexSamara.SunSet",$xml->day[0]->sunset);
// Запишем температуру вчерашнего дня для этого часа
$SQLText = " SELECT ph.value as val";
$SQLText.= " FROM pvalues pv, objects o, properties p, phistory ph ";
$SQLText.= " WHERE pv.object_id = o.id ";
$SQLText.= " AND p.id = pv.property_id ";
$SQLText.= " AND o.title = 'YandexSamara' ";
$SQLText.= " AND p.title = 'Temp' ";
$SQLText.= " AND ph.value_id = pv.id ";
$SQLText.= " AND UNIX_TIMESTAMP( pv.updated ) - UNIX_TIMESTAMP( ph.added ) <24 *60 *60 +30 *60 ";
$SQLText.= " ORDER BY ph.added ";
$SQLText.= " LIMIT 1 ";
$tempYesterday = SQLSelectOne($SQLText);
sg("YandexSamara.tempYesterday",$tempYesterday['val'] );
- За это сообщение автора ErmolenkoM поблагодарил:
- mirsum (Вт дек 23, 2014 2:38 pm)
- Рейтинг: 1.16%