Парсер погоды Яндекс одной строкой

#1 27 декабря 2012 в 10:55
По просьбе некоторых участников выкладываю парсер погоды Яндекса одной строкой.
У меня весь код вставлен в своем шаблоне в файл template.php Цифровое значение своего города на Яндекс погоде вам нужно будет найти самому. Не знаю как сейчас но раньше я его искал в исходном коде в виджетах погоды Яндекса. Вот сам код:

  1. <style type="text/css">
  2. .pogoda {
  3. width:98%;
  4. background:#FFFFFF;
  5. }
  6.  
  7. </style>
  8.  
  9.  
  10. <div class="pogoda">
  11. <center>
  12. Сегодня:
  13. <?php
  14. function russian_date(){
  15. $date=explode(".", date("d.m.Y, данные на H:i:s"));
  16. switch ($date[1]){
  17. case 1: $m='января'; break;
  18. case 2: $m='февраля'; break;
  19. case 3: $m='марта'; break;
  20. case 4: $m='апреля'; break;
  21. case 5: $m='мая'; break;
  22. case 6: $m='июня'; break;
  23. case 7: $m='июля'; break;
  24. case 8: $m='августа'; break;
  25. case 9: $m='сентября'; break;
  26. case 10: $m='октября'; break;
  27. case 11: $m='ноября'; break;
  28. case 12: $m='декабря'; break;
  29. }
  30. echo $date[0].'&nbsp;'.$m.'&nbsp;'.$date[2];
  31. }
  32. russian_date();
  33. $pogoda = file_get_contents('http://export.yandex.ru/weather/?city=22215'); // ХХХХХ — id города
  34. preg_match('/<weather_type>(.*?)<\/weather_type>/i',$pogoda,$type);
  35. preg_match('/<dampness>(.*?)<\/dampness>/i',$pogoda,$vlaga);
  36. preg_match('/<temperature>(.*?)<\/temperature>/i',$pogoda,$temp);
  37. preg_match('/<image>(.*?)<\/image>/i',$pogoda,$img);
  38. preg_match('/<pressure>(.*?)<\/pressure>/i',$pogoda,$press);
  39.  
  40. $vivod = "$date Температура:&nbsp;$temp[1]°C&nbsp; Влажность: $vlaga[1] %&nbsp; Давление: $press[1] мм рт.ст. , $type[1] ";
  41.  
  42. echo $vivod;
  43.  
  44. ?>
  45. </center>
  46. </div>
  47.  
Если ненужна дата и время, думаю разберетесь как убрать. Лично по моему городу Яндекс самый точный.

В планах дальнейших или прописать вывод своих картинок к погоде, или в зависимости от переменной $type[1] менять мзображения шапки. То есть при ясной погоде шапка с солнышком при дожде с дождиком и так далее.

Этот парсер под 1.10 под 1.9 нужно прописывать iconv. Будут вопросы пишите, освобожусь отвечу.

Посмотреть как выглядит погода можно на сайте www.pzcity.ru в самом верху.
#2 27 декабря 2012 в 12:16
Для версии 1.9 вывод должен быть таким

  1. $vivod = " $date Температура:&nbsp;$temp[1]°C&nbsp; Влажность: $vlaga[1] %&nbsp; Давление: $press[1] мм рт.ст. ".iconv("UTF-8","CP1251//IGNORE",$type[1]);
Так как яндекс отдает инфу в utf
#3 27 декабря 2012 в 13:42
спасибо :)
добавлю себе в закладки, пригодится
#4 27 декабря 2012 в 14:32
Искус, а это просто код со страницы яндекса или ты что-то доработал?
#5 27 декабря 2012 в 14:47
нету на Яндексе такого кода. я же написал это парсер :)
#6 27 декабря 2012 в 14:51
Искус, а почему не в блоге выложено ?
нельзя это как плагин или модуль?
#7 27 декабря 2012 в 15:18
lezginka.ru, у меня нету кармы еще, чтобы в блог выложить. Как кармы доберу, так доделаю модулем, если получится.
#8 27 декабря 2012 в 15:28
народ, поднимите карму Искусу "до уровня блога" :)
#9 27 декабря 2012 в 15:34
lezginka.ru, Раньше середины января все равно не получится мне заняться, корпоративы у меня новогодние и рождественские, времени нет практически :)
#10 27 декабря 2012 в 15:44
чет Id не могу свой найти :(
#11 27 декабря 2012 в 15:57
Роман, какой у вас город?
#12 27 декабря 2012 в 16:03
Чтобы найти id своего города, зайдите на страницу pogoda.yandex.ru введите свой город и нажмите поиск. Потом откройте исходный код и найдите примерно следущее

Ya.Context.AdvManager.render({
blockId: "R-49688-1",
renderTo: "yandex_ad_R-49688-1",
async: true,
extParams: '&icon=n5&city=22215&country=1ed1c408a4ac822b728a2077a1d9935c&temp=-25&awaps_section=8939&'
}/*, callback function*/);

Выделенное жирным и курсивом и будет ваш id
#13 27 декабря 2012 в 16:05
lezginka.ru
поднял+1
#14 27 декабря 2012 в 18:37
Как я понял сайт начинает долго думать потому что инфо берет с внешнего сайта, это можно исправить?
#15 27 декабря 2012 в 19:09
GiD, Возможно, я не замечал, мой сайт грузится быстро, проблем с этим небыло. После НГ доработаю чтобы или в базу или в файл складывал. Если у всех притормаживает. Хотя строчка кода не должна тормозить, особенно сервисы Яндекса.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.