Недавно я заинтересовался темой отображения информера от Яндекс.Погоды посетителю сайта в соответствии с его местоположением. Сам информер Яндекса показывает погоду только в том городе, который выбрал веб-мастер сайта. На практике смысла в таком информере мало (описано в предыдущей статье). Следовательно надо саому определять город, в котором находится посетитель, и выводить ему нужный информер. В процессе изучения темы, я пришел к выводу, что кроме GeoLite City от MaxMind и CNGeoIP нормальных world-wide баз IP->Город нет. Однако, для взаимодействия с сервисом Яндекса база GeoLite City не подходит.
Таким образом, пришлось остановиться на базе CNGeoIP. Была куплена версия базы и на ней был построен алгоритм получения кода города для информера по IP посетителя. Написанный скрипт работает тут: http://ru.commontools.net/geoip/ya.w.js. Определяется город по IP пользователя, проводится сравнение с базой Яндекса и выводится id города и страны для информера в виде: var yaCountry=20;var yaCity=26850; Скрипт естественно работает на стороне сервера и выводит только id для JS. А на странице с информером скрипт включается в HTML-код страницы через <script src=»…»>. Далее другой незамысловатый скриптик подставляет переменные в код вызова информера и на картинке отображается погода в городе, в котором находится посетитель сайта. Под ней ссылка на настройки информера, где посетитель сможет выбрать другой город, а информация сохранится в cookies.
Итак, результат трудов доступен в виде оттестированной stable-версии. Страничка получения кода находится здесь: http://ru.commontools.net/geoip/ya.weather.get.html. Это страница для получения кода информера. На ней описано, как код получить и прикрутить к сайту.
Уже сейчас можно получить код и разместить его на своем сайте. Сервис будет открытый и дальше, бесплатный и свободный для использования по назначению.
Посмотреть, как информер работает, можно уже сейчас в моем блоге.
P.S. Для любопытных. Домен commontools.net является исключительно вспомогательным, на нем никогда не были и не будут никакие сайты. Только сервисы для собственного и общественного потребления.
UPD. Стадия бета-тестирования завершена. Уже более 7 месяцев информер успешно работает на множестве сайтов, по этому заявляю о стабильности версии. Обновлений пока не планируется, потому что обновлять-то нечего. Если Яндекс поменяет свой алгоритм, тогда-то и будем обновлять.
Постоянно обновляется база IP. На декабрь 2008 работает ноябрьская версия.
UPD2. Сервис обновлен.
Здравствуйте,
Я пробовал вставлять код с Яндекс в форму для обработки, но после мажатия кнопки «Обработать код», внизу браузера появляется сообщение Error on the page, а в шаге4 так и не появляется никакого результата. Я что-то неправильно делаю или услуга более не доступна?
Благодарю
Сервис будет открытый и дальше, бесплатный и свободный для использования по назначению.
…Только вот не работает он, а так все круто!
Код заработал! Ура! Спасибо!
Чё-то когда я сайт свой открываю у меня вместо нужного города погоду в Амстердаме показывает!
Приношу свои извинения! Сам виноват, на самом деле хак пашет как танк т-34.
Сервис периодически падает что не очень гуд.
Можешь дать исходник?
Сегодня обновил сервис, тепиерь должен работать стабильно.
Исходники давать нет смысла, т.к. самое ценное здесь база GeoIp. БОльшая часть кода и так открыта (HTML и JS), а серверную часть определения IP, если уж базу купите, напишите сами быстро.
Всё равно продолжает падать с завидной переодичностью, слух ну если так сильно жаба душит просто дать, может продашь? Я гарантирую что не буду выкладывать его в качестве публичной раздачи, чисто в свой сайт буду вставлять.
Прочитай, что написано выше. Еще раз: кода там минимум, можешь и сам освоить, а базу я раздавать не собираюсь, потому что она покупается с обновлениями.
И еще, интересно, как ты замечаешь эти падения. Я, вот, что-то не замечаю.
Сколько эта база с обновлениями стоит?
Замечаю легко, просто пол сайта из за этого перестаёт открыватся так как зависает на попытке открыть скрипт
Про базу ина тут: http://www.cn-software.com/ru/cngeoip/
Я создал зеркало сервиса на другом сервере. Возможно проблема «падений» связана с тем, что commontools.net территориально находится в Беларуси. Сервер ru.commontools.net стоит в России, в Питере.
Делайте себе новый код: http://ru.commontools.net/geoip/ya.weather.get.html
можешь ответить мне в асю 9173719
Не вижу в этом смыла. На крайняк, почта feedbee@gmail.com. Но врядле я чем-то больше помогу, чем написано тут.
Отличная штука Валера. Пользую ее на своем сайте http://rtv-pvo-gsvg.narod.ru/
НО!!! Почему-то перестали отображаться Киев и Харьков!!!???