Погодный модуль для РФ. Часть 2

Главные вкладки

Аватар пользователя Химический Али Химический Али 10 апреля 2008 в 17:02

Переделал первую версию модуля для отображения погоды.

Теперь счастье, сделанное на заказ для сайта Славянска-на-Кубани выглядит так: сервис "Погода в Славянске-на-Кубани"

Что делает?

  1. Создает страницу с алиасом /weather_forecast (можно изменить, если вы используете модуль Path)
  2. При обращении к этой странице зарашивает прогноз погоды в виде xml-файла с сервера rp5.ru, разбирает его и отображает

Настроек пока нет, только правка кода ручками (ничего сложного) ID своего населенного пункта можно найти на сайте rp5.ru.

Все по-прежнему работает в черновом варианте. Отличие состоит в следующем:

1) теперь погода выдирается не из rss, а из xml-файла
2) нарисовал пачку картинок для придания гламурности
3) перерихтовал оформление. вроде теперь лучше, правда, ни хрена в дизайн не вписывается, но это дело наживное Smile

Версия 2.1 от камрада Strelok

Дорогой друг Strelok основательно усовершенствовал модуль и выпустил собственную версию 2.1.
Демо
Скачать 2.1

ВложениеРазмер
Иконка пакета ruweather2.zip25.26 КБ

Комментарии

Аватар пользователя Marss Marss 10 апреля 2008 в 19:25

Отлично )
Скажи плиз, а кол-во дней показа можно настраивать?
А только текущий день отображать?
вообще менять дизайн реально будет?

Аватар пользователя Химический Али Химический Али 25 апреля 2008 в 15:25

Внимание!

Модуль не очень корректно определяет картинку для отображения облачности. Либо переделывайте сами, либо дождитесь пока я снизойду. В идеале следует сделать раздльный картинки для разных погодных явлений и накладывать их друг на друга в разных сочетаниях.

Аватар пользователя Strelok Strelok 9 октября 2008 в 15:00

Хочу предложить исправленную и дополненную мною версию модуля.
upd. 09.10.08 Ссылка приказала долго жить, смотрите новую версию ниже в этой теме.
Список изменений:

  • Исправлен баг с выводом абракадабры вроде: "завтра днем ночью днем ночью", вместо "завтра днем" в конце месяца. Теперь фразы отображаются правильно (в том числе и в конце года).
  • Заменены и добавлены иконки погоды, всего 36 иконок.
  • Теперь отображение иконки зависит от двух параметров: количества капель и облачности. Пока отсутствует влияние типа осадков (снега например нет), но это думаю исправить в следующих версиях.
  • Именены стили оформления. Делал я их под свою тему, поэтому в других темах выглядят они в целом неплохо, но доработка небольшая не помешала бы.

У меня на сайте он выглядит так.

Аватар пользователя Химический Али Химический Али 5 мая 2008 в 10:54

Ништяк.

Вот с абракадаброй вопрос - она тольько недавно появилась, причем я ничего не менял. Наверное, рп5 че-то перемутил.

Завтра поставлю себе вашу версию Smile

Аватар пользователя Strelok Strelok 6 мая 2008 в 10:39

Абракадабра появлялась изза некорректного вычитания дат. У вас дата преобразовывалась в число и затем эти числа вычитались. Что-то такое:
2 апреля 2008 года = 20080402
4 апреля 2008 года = 20080404
затем 20080404 - 20080402 = 2, а это уже послезавтра
но, вот ведь незадача:), начался месяц май:
30 апреля 2008 года = 20080501
1 мая 2008 года = 20080501
затем 20080501 - 20080501 = 71, а это уже... чертичто:)

Я применил вместо вышеуказанного способа функцию date, которая вычисляет порядковый номер дня с начала года, а затем эти номера вычитаются. Кроме того я добавил корректировочку на 31 декабря - 1 января, чтобы в конце года снова абракадабра не вылезла.

Аватар пользователя batbug batbug 5 октября 2008 в 16:56

Ничего не понимаю. Тот файл, ссылку на который вы даете, я скачивал еще давным давно. (8732 байта размер файла модуля). В архиве 10 иконок. У модуля косяк с выводом абракадабры вроде: "завтра днем ночью днем ночью", вместо "завтра днем" в конце месяца.

Меня же интересует модуль Стрелка, где 36 иконок и исправлена абракадабра. Вот...

Аватар пользователя Strelok Strelok 10 ноября 2015 в 11:45

В преддверии нового погодного сезона (у нас на Урале снега долго ждать не придется), я произвел некоторую доработку модуля погоды. Новая версия включает следующие изменения:
1) Перерисованы все иконки + добавлены новые. Теперь они отображают снег и снег с дождём, из-за чего общее количество иконок теперь составляет 88 штук, вместо 36 в старой версии.
2) Вывод списка прогноза переверстан в 2 колонки. Дизайн по прежнему требует доработки напильником под вашу тему.
3) Изменился принцип определения сегодня-завтра для ночи. Теперь сегодняшней ночью считается ночь, которая фактически является завтрашней. Сделано это по просьбе пользователей, ибо на обывательском уровне чаще всего сегодняшней ночью называют ночь грядущую, а не прошедшую.

Скачать новую версию модуля ruweather можно здесь

Посмотреть модуль в работе можно здесь

PS К сожалению, модуль все еще не имеет настроек в админке, все изменения вносятся, как и раньше, ручками. Надеюсь, в ближайшем будущем, у меня найдется время (и желание:)) доработать его до полностью юзабельного состояния.

Аватар пользователя Strelok Strelok 9 октября 2008 в 18:30

По ошибке залил недоработанную версию 2-1 (в ней слетают колонки в вечернее время), заменил на исправленную 2-2. Ищите ее в моем предыдущем сообщении.
Рекомендую всем кто скачал версию ruweather2-1 заменить на ruweather2-2.

Что там в 3 фаерфоксе случилось посмотрю завтра. Тестировал только на IE6, Opera 9.5, Firefox 2.0.

Аватар пользователя batbug batbug 10 октября 2008 в 10:23

Поставил потестил, понравилось! Осталось только прикрутить, чтобы погода обновлялась по крону, а то сейчас получается, что при каждом заходе на страницу, хмл-файл скачивается заново.

Аватар пользователя batbug batbug 10 октября 2008 в 16:59

Ну да, но на главную такое не выведешь, ибо будет задержка при загрузке. Помню, в первой версии (гисметео), там был код с кроном, надо ее мне посмотреть и скрестить (лень самому hook_cron почитать). Если сделаю, выложу сюда.

Аватар пользователя batbug batbug 10 ноября 2015 в 11:45

Как и обещал, выкладываю сюда доработанный мною модуль.

Что нового в версии 2.3?

* Погода теперь добывается по крону.
* Сделана страница админа для настроек: номер города, заголовок для страницы с погодой - /admin/settings/ruweather. Т.е. теперь не надо в файле модуля копаться и менять циферки и заголовок страницы. Без настроек погода добываться не будет и в watchdog будет сообщать об ошибке.

### В планах - блок с краткой погодой (сейчас и прогноз) со ссылкой на страницу погоды.

Аватар пользователя Химический Али Химический Али 13 октября 2008 в 12:02

Спасибо, что работаете в этом направлении. Предлагаю перед разработкой блока с краткой информацией разработать его дизайнерскую концепцию, чтобы было красиво и удобно. Какой-нибудь симпатишный виджет...

Аватар пользователя batbug batbug 13 октября 2008 в 13:47

"Химический Али" wrote:
Спасибо, что работаете в этом направлении.

Пожалуйста Smile
"Химический Али" wrote:
Предлагаю перед разработкой блока с краткой информацией разработать его дизайнерскую концепцию, чтобы было красиво и удобно. Какой-нибудь симпатишный виджет...

Не возражаю, разрабатывайте Wink

Кто-нибудь ставил у себя, тестировал?

Аватар пользователя Strelok Strelok 15 октября 2008 в 18:00

Наши ряды расширяются! Очень рад воплощению моих планов без моего участия Smile

batbug wrote:
Кто-нибудь ставил у себя, тестировал?

Поставил, изучаю. Пока есть пара замечаний:
1) В папке icons осталось несколько рудиментарных иконок, которые данная версия модуля не использует. Они все имеют числовое название (00.png, 00_oblaka.png, 01.png и т.п.). Надо бы их удалить из вашей версии.
2) Название в админке "Настройки погоды" выглядин несколько глобально:)). Вот сейчас например, в логах вывелось сообщение "Погода обновлена", а за окном как шел дождь, так и идет Lol
А в остальном все отлично, все работает.

Аватар пользователя batbug batbug 16 октября 2008 в 5:49

Ок, с иконками и текстами разберемся. "Погода обновлена" значит, что она была скачана с rp5.ru, но она могла там остаться еще старой.
Обнаружил недочет: на странице погоды он пишет "сегодня днем", "Завтра..." итд. Но эти слово высчитываются исходя из времени на сервере! И если раньше у меня время на сервере стояло местное (gmt+8), то сейчас время на сервере стоит канадское, перехал я, gmt-7. И значит теперь у меня прогнозы такие:

Завтра днём:
Завтра ночью:
Послезавтра днём:
Послезавтра ночью:

Надо как-то это под друпальское время перевести, или еще одну настройку для админа сделать, типа offset задавать.

Аватар пользователя Strelok Strelok 16 октября 2008 в 8:56

batbug wrote:
"Погода обновлена" значит, что она была скачана с rp5.ru, но она могла там остаться еще старой.

Вы видимо не обратили внимание на смайлики в пункте, касающемся сообщений "Погода обновлена" и т.п. Замечание было не совсем серьезным и касалось в первую очередь терминологии. Например, как вы думаете, между заголовками "Настройки прогноза погоды" и "Настройки погоды" есть принципиальная разница? Smile

Аватар пользователя Химический Али Химический Али 10 ноября 2015 в 11:45

Предлагаю набор погодных мини-информеров для ориентации в пространстве. Может склонимся к какому-то варианту?

Помимо прочего, предлагаю избавиться от фона на картинках

Аватар пользователя batbug batbug 16 октября 2008 в 10:00

Strelok, я на всякий случай уточнял Wink В версии 2.4 над строками поработаем Smile

Химический Али, мне нравится №1, минималистично, много воздуха, никаких лишних слов.

Аватар пользователя batbug batbug 16 октября 2008 в 17:00

Так-с... оба варианта в принципе легко реализуются через цсс. Значит, блок можно будет сделать унифицированным, а дальше уже темизируйте сами как надо, правильно?

Аватар пользователя Strelok Strelok 17 октября 2008 в 8:59

batbug wrote:
Так-с... оба варианта в принципе легко реализуются через цсс. Значит, блок можно будет сделать унифицированным, а дальше уже темизируйте сами как надо, правильно?

Вот соломоново решение! Smile
Только вот мой вариант базируется на готовых иконках(осталось только бэкграунд доделать), а ваш... ну если хотите - можете еще пару комплектов нарисовать.;)

Аватар пользователя batbug batbug 17 октября 2008 в 15:21

фон опять же можно задавать через цсс:

div style="background:url . $weather_picture

так что это будет оставать целиком на совести дизайнера

Аватар пользователя Strelok Strelok 18 октября 2008 в 12:20

Крайне сложно сделать картинку, которая бы хорошо смотрелась с любым бэкграундом.
А насчет оранжевого полностью согласен.

Аватар пользователя batbug batbug 19 декабря 2008 в 3:48

"afishi" wrote:
странно, включил, а его нигде не видно, открыл страницу.... и там пусто Sad
что-то не то или не там

На странице weather будет пусто до первого обновления крона.
В блоке тоже будет пусто.

Аватар пользователя afishi afishi 28 декабря 2008 в 20:25

а может здесь добавим несколько окошек? на несколько городов?
т.е. в настройках, можно будет делать несколько кодов и городов. а на самом модуле, при отрытии нужный город будет нажиматься и смотреться?
мне нужна погода на несколько городов!

+
картинки тут http://domen.ru/sites/all/modules/ruweather2/icons/night-overcast-light-...
а надо тут http://domen.ru/modules/ruweather2/icons/night-overcast-light-sr.png

или изначально не туда кладем?

Аватар пользователя Strelok Strelok 14 января 2009 в 17:09

afishi wrote:

картинки тут http://domen.ru/sites/all/modules/ruweather2/icons/night-overcast-light-...
а надо тут http://domen.ru/modules/ruweather2/icons/night-overcast-light-sr.png

или изначально не туда кладем?

не уверен, что правильно понял вопрос, но
картинки размещаются согласно первому указанному пути, т.к. все сторонние модули устанавливаются в папку /sites/all/modules/

Аватар пользователя t1mm1 t1mm1 10 марта 2009 в 15:45

респект автору модуля Smile
то что и надо .
но.. слил архив, закачал в папку..
включил модуль...
и...
как дальше настраивать?
в "Настройках" - ничего не появилось.
в "Блоках" - тоже...

может я чего не то сделал ?))
P.s. интересно его потом "напильником" обработать Smile

Аватар пользователя t1mm1 t1mm1 10 марта 2009 в 16:56

да не Smile
я уже разобрался...
только вот есть пару вопросов.
1. есть ли реализация вывода в блок? =)))
2. Не могу понять какой код у Харькова (Украина)?? (Кажется я сошел с ума =))ыы

Впрочем могу дописать в админку выбор скинов.. Если нет вывода в блок - это могу написать тоже с собственным набором стилей и прочей фигни... просто не колупал еще код модуля =)))

у меня сейчас версия 2.3 Smile

P.s. Спасибо Smile

Аватар пользователя t1mm1 t1mm1 10 марта 2009 в 17:24

ну, вывода в блок нема...
ча дописал...
там выводит на 4 дня сразу..
значит надо дописать вывод с выбором на сколько дней
+ я сделаю все же наверно еще выбор по стилистическим особенностям.. - ну там на выбор 2-6 наборов стилей и еще какую ниудь фигню, типа показать/скрыть блок... хотя надо ли...
в общем на днях выложу переработанный.

это.. а там отдельно парсер не подбросишь? на p1zz@ukr.net , ну тот который по курлу вытягивает данные Smile хотя я могу и сам его перерыть.
да, написанно прикольно. то что и надо было Smile

ыыы. читаю комменты, что год назад писал.. эх...

ооо. а может добавить сразу выбор для юзверей по страна/код города через выпадающие селекты... можно еще впендюрить вывод с гуглмапины город на миникарте в блок.. давно хотел акое сделать..
вот он, мой поток сознания Lol весна...

лан, сделаю - выложу. че уж...думаю разгребу...

Спасибо за модуль. Пошел доставать напильник...

Аватар пользователя afishi afishi 10 марта 2009 в 19:45

вот у меня сайт.. на несколько городов...

на главной выдавал бы только на тот с которого сморю... (по IP) и с кнопкой "погода других городов" и нажав "весь список" городов... на 3-4 дня...
очень надо!

Аватар пользователя t1mm1 t1mm1 11 марта 2009 в 12:34

эмпс...
есть одна запара. или просто я немного не понимаю сути.
я выбираю город, код которого 741. мне парсер возвращает данные по хз какому городу. Но не потому, который по сути нужен.
741 - это Харьков, Украина. Он есть в списке городов, откуда вытягиваются данные.
Но теспература - "-25" или "-20".
Может я что-то не так делаю?

Во поводу нескольких городов - дописал выборку для нескольких городов. То есть вбиваем несколько айди - по ним и вытягивает данные. Пока правда не занимался внешним видом.

Переписал функции более распределено - отдельно парсер, отдельно выводы и формирование внешнего вида.

Если можно - введите в курс дела - нужно сделать выборку в зависимости от IP клиента?
Тут есть загвоздка.. Дело в том, что надо будет дополнительно ваять выборку айди города для текущего айпишника и в реальном времени вытягивать данные.. нагрузочка еще та будет. Либо как вариант - делать в настройке профиля дополнительную опцию - погода - где пользователь будет сам выбирать город, и потом для него будет выводиться погода для его локализации. По сути геммор, так как прийдется в бд хранить не структруированные данные - массив с вытянутыми данными..
если я дето ошибаюсь - поправьте..
хотя... если есть уже эта реализация - реализация вывода погоды по IP клиента - то хотелось бы это увидеть Smile

но вопрос с температурой остался открытый...
и еще вопрос. оффтоп. в запросе curl в модуле стоит индефикатор 9ой оперы.. а че так?

Аватар пользователя Valeratal Valeratal 11 марта 2009 в 13:33

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

А как сделано в яндексе? там то ведь показывается автоматически для нужного города

Вообще, необязательно делать вообще для всех городов. Достаточно охватить большую часть.
То есть такой вариант предлагаю: Админ смотрит посещаемость по городам, и вбивает некое количество в модуль. А вот модуль таки должен определять по IP город. Пусть даже и нет у модуля погоды для этого города

Аватар пользователя afishi afishi 11 марта 2009 в 14:40

Кстате.. тут мысль пришла...
давайте 1 раз когда в БЛОКЕ появится погода, будет надпись "выбери свой город!"
И потом он запомнит именно этот комп с его IP и в слудщий раз будет выдавать именно на этот город!
Если надо будет сменить, просто жмут на подробности, выбирают другой город и другой запоминается!

И главное, что для всех компов и городов, будет своя погода!

А идеальный вариант, за счет запоминания IP компов и городов на них, можно было бы собрать свою базу для других, если бы они менялись с базой информацией!
Выстроилась бы база IP

Аватар пользователя t1mm1 t1mm1 11 марта 2009 в 15:20

хм... город по IP..
насколько я знаю у каждой региональной области есть свой идентификационный код.
я толком еще не разгребался в этой области. хз.. надо почитать что нибудь..

вообще пути такие
определить код города(или страны) по айпи клиента
по коду - тянуть погоду(с)

но сразу несколько моментов.
1. парсить выборку каждый раз в онлайне - это ппц. забанят.
2. делать кроном - тогда делать заранее крон на выборку по самым густонаселенным городам, а тех которых нет - заносить в базу и кроном потом делать парс. иди делать выборку сразу, при условии что такого id города в базе нет.
это я могу написать, но пока не доганяю как выхватить id города по айпишнику.

на яндехе, гугле, яху, рамблеге - это давно реализованно. и подобное когда-то писалось на одном проекте на работе.. но только вот исходников нема Smile
как вариант думаю попробовать использовать localisation модуль.. или как там его.
если RP5.RU использует общие стандарты для определения георасположения, то это все решаемо.. а дальше - будем колупать совместными усилиями Smile

Аватар пользователя t1mm1 t1mm1 12 марта 2009 в 12:44

это то сложнее.
дело в том что внешние ресурсы - это хорошо...
но... вот дилема вчера была. я делаю вывод погоды для харькова - это украина. и с дот ру уже не хавается. с дот юа - на ура.
и уже ограничения и внос перемен в код.. а это геммор...

вот.
кому интересно.
добавит вывод в блок,
в админке там тоже потрогал...
да. основное. переименовал переменные на более читабельный инглиш Lol
повыносил парсеры, формирование массивов, проверки, выводов в отдельные функции.. ибо не гламурно Smile

по гео айпи начал ваять. но не вікладываю, ибо пока оно не работает...

не по теме.
нужна помощь.
нужно два модуля.
1. это календарь событий. Выводятся даты в виде ссылок,по которым идет сортировка по той дате, на которую клацнули и попали на страничку с выводом в духе views. Все что нашел в инете - все либо сырое, либо корявописанное. Собствено могу написать и свой модуль с выбором типов и т.д., но тупо нет времени ((((( Может кто что подкинет, а? Нужно одиним независимым модулем. Одним.

2. Побуквенная сортировка (фильтрация) для определенного типа нод. Тоже не могу найти решение. Как одно из - это типизация (таксономия). Но это геммор. Должно быть проще решение...
Написать тоже могу, но нет времени ((((

Вот. Если еще кому интересно. Может появится скоро модуль для парса сайтов. Но там регулярки надо знать хорошо.

дополненно.
Если кто шарит по http://ip2city.ru/ и подобным ресурсам, то нужна помощь - нужна функция по вытягиванию айди города по айпи клиента. Больше ничего не надо... Тупо нет времени.
Может распределить просто...

хелп хелм ме Smile

Аватар пользователя t1mm1 t1mm1 12 марта 2009 в 13:42

короче
немного полазив по просторам, скачав на локальный апач модуль geoip и либу + базу geoip.dat получилось заюзать некоторые функции интересные... ыыы... дивные...
короче, страну удалось определить, по карйней мере дескриптор и название.. хоть и в инглише.
далее буду колупать..

есть идеи по городам?

Аватар пользователя t1mm1 t1mm1 12 марта 2009 в 13:50

в общем...
если ктото возьмется написать функцию сопоставления айпи и айди города по стандартизации, то я сделаю формирование бдхи + проверки + еще пару фич..

только вот терзают сомнения одни.
этот сайт погоды возможно использует собственную нумерацию регионов и городов. если так, то геоайпи и подобные сервисы в пролете. либо брать за основу тот сайт, который юзает стандарты... тут только с базой...

Аватар пользователя t1mm1 t1mm1 12 марта 2009 в 18:03

да мне просто нефиг чем заняться
напарнег написал класс для парса сайтов через курлу...
ыыыы

по теме.
сейчас пишу определение айди города..
правда не знаю когда закончу..
но больше склоняюсь к мысли о том, что таки да, надо будет набивать базу, постепенно и уверенно, с апишниками, айди страны/города и т.д...
и потом тестить и тестить...

а никто не пробовал писать парсер под более глобальные данные по погоде?
есть модуль weather , но он какой-то слишком-слишком..
не то...

пысы. чувствую что то что надо - прийдется ваять самому ...

Аватар пользователя t1mm1 t1mm1 15 марта 2009 в 21:24

хз Smile
могу сейчас выложить то что у меня есть
только там прийдется с настройками помучаться...
вообщет а разве там нет сабподдержи версий ? (я просто пишу под пятый)
по сути там стандартные функции определения переменных и парсер (спасибо за него) Smile
почитай про определение версий. там просто поменять пару цифр в инфо файле и все..

П.с.
написал модуль на основе calendar_block под 5й друпалл
суть его следующая
выводит календарь на текущий месяц (переключение между месяцами на аяксе, и не кеширует, а как сделать с кешем - я пока что хз), на даты календаря идет привязка - то есть если на определенную дату есть размещенная статья, то там меняется картинка и появляется на месте числа дня ссылка на страницу, где сделан вывод всех нод на выбранную дату. дата передается линкой, есть просомтр всех за год/месяц. Есть проверки от инъекций, и на корректность дат.
просто меня загемароило ставить календарь и кучу модулей, в том числе и ССК (чето я его не оч взлюбил).. В общем вот. Там осталось только дописать админку (определять какие типы нод включать в календарь) и сделать пагинацию ( припросмотре за месяц или год выводит все в один список и дохрена выводит, а хочется использовать апи, а не писать ее самому. хотя могу и написать). В общем, на днях выложу сайт один, там это заюзанно.

По поводу определения айди города по айпи - пока приостановил.. много работы.
там идея будет не через геоайпи, а под свою базу, которая будет набиваться со временем... бо там половина сервисов платные... ы..

Аватар пользователя batbug batbug 15 апреля 2009 в 18:25

Черт, я и забыл, что под шестерку не выкладывал ни разу этот модуль. У меня есть эта версия под шестерку, но блок с краткой погодой сделан конкретно под мой сайт (в профиле есть ссылка, блок на главной), если кому надо - могу выложить.

Аватар пользователя Strelok Strelok 24 февраля 2010 в 13:01

У меня таки дошли руки и до модуля погоды. Портировал его наконец на 6-ку.
В процессе портирования были внесены следующие изменения:

  • Были изьяты из кода русские фразы и заголовки (правда пока не все), соответственно был добавлен файл с переводом.
  • Почистил код от лишнего и привел его к стандартам 6 друпала (более-менее)
  • Подправил слегка стили
  • Изменил путь страницы погоды с "имя_сайта/weather" на "имя_сайта/ruweather" во избежание (возможных) конфликтов с модулем Weather
  • Теперь есть разграничение прав доступа пользователей к самой странице погоды и к настройкам в админке

Скачать модуль RuWeather-6x-beta

Демо

Осталась одна проблема, с которой у меня пока не получилось справиться: при изменении заголовка страницы погоды в админке, заголовок не меняется, пока вручную не почистишь кэш меню (например с помощью модуля admin_menu). Функция cache_clear_all, которая использовалась для этого в 5 версии модуля не дает результатов.