×
Покер бот на Ruby on Rails (12 сен 2018)

Третья ипостась покера на ruby. Искреннее спасибо всем, кто прислал замечания по предыдущим релизам.

Вопрос Прогноз погоды на сайт через Яндекс API

Больше
3 года 11 мес. назад - 3 года 11 мес. назад #1 от ralf
Всем привет! Это в тему к погодному информеру с этого сайта, см. здесь и здесь . Нашел в нете описание более простого погодного информера, по ip определять город он не умеет, но по заданному идентификатору (взять ID своего города можно на этой страничке ) вытаскивает погоду c Яндекса на раз. Кому надо, пользуйтесь, там всего два файла, пашет из коробки прям:

index.php
<div class="pogpere"><h2>Погода в Москве</h2>
<?php require_once 'weather.php' ;
$w_city_id = 27612;
// Идентификатор города (в нашем случае Москва)  - можно узнать по адресу http://weather.yandex.ru/static/cities.xml
 
$col = 1 ;
// количество дней, на сколько нужен прогноз
 
$day_of_the_week_array = array(
1 => 'в понедельник',
2 => 'во вторник',
3 => 'в среду',
4 => 'в четверг',
5 => 'в пятницу',
6 => 'в субботу',
7 => 'в воскресенье'
); // Массив дней недели (для вывода)
 
$time_of_day = array(
0 => 'утро',
1 => 'день',
2 => 'вечер',
3 => 'ночь'
); // Массив времени суток (для вывода)

$out = get_weather($w_city_id, $col, $day_of_the_week_array, $time_of_day)  ;
/*
заполняем масcив при помощи функции, первый параметр обязательный - индентификатор города
другие параметры необязательны - в этом случае используется значения по умолчанию
*/
?>

<?php foreach ($out as $key => $value) { ?>
<?php echo $value['day']; ?>.<?php echo $value['month']; ?>.<?php echo $value['year']; ?>  <?php echo $value['day_of_week']; ?></div>
<?php foreach ($value['weather'] as $key1 => $value1) { ?>
<div class="pogpere"><?php echo $value1['time_of_day']; ?>
<img src="http://yandex.st/weather/1.1.78/i/icons/48x48/<?php echo $value1['image']; ?>.png" width="48" height="48" />
<?php echo $value1['temp_from'] ; ?> ... <?php echo $value1['temp_to'] ; ?></div>
<?php } ?>
<?php } ?>

weather.php
<?php
 
 function get_weather ($city, $col = 10, $day_of_the_week_array = array(1 => 'пн', 2 => 'вт', 3 => 'ср', 4 => 'чт', 5 => 'пт', 6 => 'сб', 7 => 'вс'), $time_of_day = array(0 => 'утро', 1 => 'день', 2 => 'вечер', 3 => 'ночь')) {
$data_file = 'http://export.yandex.ru/weather-ng/forecasts/'.$city.'.xml';   // Загружаем файл прогноза погоды для выбранного города
$xml = simplexml_load_file($data_file); // загружаем xml файл через simple_xml
 
$out = array(); // Массив вывода прогноза
$counter = 0 ; // Счетчик количества дней, для которых доступен прогноз

foreach ( $xml->day as $day )  {
    if ($counter == $col) {break;}
 
   $get_date = explode ("-" , $day['date']) ;
   $day_of_week = date("N", mktime(0, 0, 0, $get_date[1], $get_date[2], $get_date[0])) ;
 
   $out[$counter]['day'] = $get_date[2] ;
   $out[$counter]['month'] = $get_date[1] ;
   $out[$counter]['year'] = $get_date[0] ;
   $out[$counter]['day_of_week'] = $day_of_the_week_array[$day_of_week] ;
 
   for ($i=0;$i<=3;$i++) {
 
   if($day->day_part[$i]->temperature == '') {
 
   $get_temp_from =  $day->day_part[$i]->temperature_from;
   $get_temp_to =  $day->day_part[$i]->temperature_to;
 
    }  else {
 
    $get_temp_from = (integer)$get_temp-1 ;
    $get_temp_to = (integer)$get_temp+1 ;
    }
 
    if($get_temp_from>0 ) {$get_temp_from = '+'.$get_temp_from ; }
    if($get_temp_to>0 ) {$get_temp_to = '+'.$get_temp_to ; }
    $out[$counter]['weather'][$i]['temp_from'] = $get_temp_from;
    $out[$counter]['weather'][$i]['temp_to'] = $get_temp_to;
    $out[$counter]['weather'][$i]['image'] = $day->day_part[$i]->{'image-v3'};
    $out[$counter]['weather'][$i]['time_of_day'] = $time_of_day[$i] ;

} $counter++ ;
}
return $out ;
}?>

Использовать очень просто, закидываете на сервер в публичный каталог два этих файла и открываете в браузере index.php. Сахар и соль, стили css то есть - по вкусу. :D
Последнее редактирование: 3 года 11 мес. назад пользователем ralf.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 11 мес. назад - 2 года 1 мес. назад #2 от Aleksej
Сделал модуль на основе вышесказанного, аннотация и демка в блоге , скачать погодный модуль можно прямо здесь, ищите под спойлером.

11.09.2016 - примечание модератора. Внимание, информация устарела, модуль не поддерживается более. Попробуйте jWeather by ip, нативный модуль Joomla, умеющий показывать выбранные параметры актуального состояния погоды для геотаргетинга любого посетителя вашего сайта (ссылка в следующем сообщении). Модуль бесплатен и распространяется под свободной лицензией, на данный момент умеет работать с двумя API: World Weather Online и Weather Underground.

Последнее редактирование: 2 года 1 мес. назад пользователем p.rishard. Причина: Удалены ссылки на устаревшие версии модуля.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 года 6 мес. назад #3 от serge
Почему-то данный сервис работает на Яндексе не слишком стабильно, нередко отвечая в ответ на запрос:

Страница export.yandex.ru не работает. Сайт export.yandex.ru не отправил данных. ERR_EMPTY_RESPONSE.

Оптимально для отображения погоды на joomla-сайте использовать jWeather_by_ip .

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.