Разработчик сделал бота для Маяка Минска с 400+ объектами. Код на гитхабе

Разработчик Илья Зверев всего за 3 недели сделал телеграм-бота для района Маяк Минска, включив в него информацию по 400+ объектам. Всю самую сложную работу по сбору данных Илья переложил на свой бот — и поделился результатом в блоге и комментариях для dev.by. Спойлер: проект опенсорсный, поэтому кто угодно может сделать похожего бота для своего района. 

9 комментариев
Разработчик сделал бота для Маяка Минска с 400+ объектами. Код на гитхабе

Разработчик Илья Зверев всего за 3 недели сделал телеграм-бота для района Маяк Минска, включив в него информацию по 400+ объектам. Всю самую сложную работу по сбору данных Илья переложил на свой бот — и поделился результатом в блоге и комментариях для dev.by. Спойлер: проект опенсорсный, поэтому кто угодно может сделать похожего бота для своего района. 

Разработчик рассказал, что в Маяке Минска три ТЦ, не считая Dana Mall, плюс магазины и заведения в подвалах почти каждого дома — «запомнить невозможно, хочется нарисовать карту».

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

— Во-первых, интерактивная карта с маркерами — признак ленивого интерфейса. Всегда можно придумать лучший интерфейс, который не будет заставлять человека таскать картинки по экрану. Во-вторых, веб не нужен. Жизнь уходит из страничек в браузере, они — для чтения лонгридов. А люди тыкают в экраны телефонов. Делать проекты нужно там, где живёт твоя целевая аудитория. Ларёк с мороженым лучше открывать на пляже, а не в музее. Указания, куда пройти, — с собой, а не дома на компьютере. Ну и просто интерфейс телеграма — отличный вызов для картографического приложения.

Что делает бот:

  • ищет заведения по ключевым словам;
  • выдаёт карту района, нарисованную поверх спутникового снимка;
  • подсказывает подъезд и этаж по номеру квартиры для всех домов.

Для каждого заведения в боте можно найти не только обычные данные вроде времени работы и адресов сайтов, но также мини-карту и две фотографии: с улицы и изнутри. Всё это Илья собрал за неделю для четырёхсот магазинов, заведений и организаций (осталось около сотни, которые собеседник dev.by планирует обойти в ближайшие выходные).

«Переложить всю сложную работу на бота»

Разработчик отмечает, что самое интересное — «делать не базовые штуки для людей, а организовать процесс сбора заведений, чтобы он не напрягал не разобранными фоточками и записями, был быстр и приятен, не требовал дня отдыха после дня работы». 

Этому предшествовала встреча: однажды Илья познакомился на улице с девушкой, которая занималась тем же — собирала данные о заведениях для своего бота. Она пошутила, что в отличие от неё у Зверева, похоже, куча свободного времени. Разработчик задумался над её словами, вспомнил свой десятилетний опыт рисования карты OpenStreetMap и решил, что сделал правильно, отказавшись от двухэтапного картирования. Потому что «гулять по району весело, а вносить потом часами данные — не очень». 

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

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

— Вводить «https://» муторно — пусть бот сам превращает «Ttn. By» в «https://ttn.by». Не ждём точек с запятой и дефисов, позволяем пробелы и запятые. Вместо ввода номера дома предлагаем выбор из ближайших адресов. Ну и так далее: не нужно заставлять человека делать работу, с которой справится машина, — отмечает он.

Так разработчик собирал по 60-100 заведений в день, около 15 в час. Причём не только переписывал данные, но и общался с сотрудниками заведений (многим он раздал визитки бота). «На районе около полутысячи заведений — знай я это заранее, дважды бы подумал, запуская проект».

Базовые операции в вебе и редактор точек в GeoJSON

В процессе работы возникли ещё трудности: так Илья «разочаровался в сложности базовых операций в вебе». 

— Получить числа координат для прямоугольника просто, это можно сделать на нескольких сайтах (например, здесь), а скопировать координаты одной точки — нет. Специальные сайты писались 7-8 лет назад и все сломались. А использовать для этого osm.org, где нужно открывать панель, ставить галочку, нажимать Ctrl+C… Линукс-версия телеграма не позволяет прикреплять координаты, поэтому пришлось писать свой сайт на замену. Очень простой: двигаешь карту, нажимаешь кнопку, вставляешь куда нужно.

Чем разработчик по-настоящему гордится — редактором точек в GeoJSON, которым пользуется для «причёсывания» базы заведений бота. 

— Классические редакторы типа geojson.io, uMap, QGIS не катят: чтобы отредактировать точку, нужно ползать по таблицам, двигать мышкой, нажимать «сохранить». Здесь же всё супер-просто: двойной клик для создания точки, все свойства — простым текстом типа «name Название», по примеру Level0. Поэтому копипаст пачки атрибутов вообще не проблема. Есть фильтр а-ля поиск в JOSM, всё сохраняется автоматически и можно восстановить, если закроешь вкладку. Никаких меню и не больше шести кнопок на экране, — отмечает Илья.

Что будет с ботом, если разработчик съедет?

Бот опубликован на гитхабе, к нему прилагается документация в пяти частях на русском языке. В ней разработчик описал весь процесс: от обхода подъездов и установки бота до сбора заведений и администрирования. «Если не считать русского языка, сообщения на котором разбросаны по коду, бот не привязан ни к каким атрибутам моего района», — отмечает Илья. 

Что будет с ботом, если разработчик решит вдруг съехать с Маяка Минска, — кто будет обновлять данные. Илья честно отвечает: «Не знаю». Под любым заведением в боте есть кнопка «Поправить», можно также добавить новое. Но автор резонно полагает, что никто этим заниматься не будет.

— Людям, даже владельцам, проще написать админу в личку или забить. Нужны такие же энтузиасты, как я. И нужен интерфейс, который позволит на повторный обход полутысячи заведений угрохать не неделю, а один-два дня. Его зачатки уже есть (и способ описан в документации), но можно сделать удобнее, особенно для торговых центров. Я пока думаю как.

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

Хотите сообщить важную новость? Пишите в Телеграм-бот.

А также подписывайтесь на наш Телеграм-канал.

Читайте также

Игра белорусского паблишера — в топ-5 самых крупных проектов подразделения Mail.ru Group
Игра белорусского паблишера — в топ-5 самых крупных проектов подразделения Mail.ru Group
Игра белорусского паблишера — в топ-5 самых крупных проектов подразделения Mail.ru Group
Разработчику, у которого забрали авто за флаг, дали 15 суток по новому КоАП
Разработчику, у которого забрали авто за флаг, дали 15 суток по новому КоАП
Разработчику, у которого забрали авто за флаг, дали 15 суток по новому КоАП
5 комментариев
У Exadel новый офис — в два раза меньше, чем на Купревича (здание купил EPAM)
У Exadel новый офис — в два раза меньше, чем на Купревича (здание купил EPAM)
У Exadel новый офис — в два раза меньше, чем на Купревича (здание купил EPAM)
13 комментариев

Обсуждение

glavnyy-po-veslu
glavnyy-po-veslu Гребец в Отражаю свою точку зрения
1

Автору приложения теперь по логике жанра пора открыть свой канал на Ютубе.

2

«запомнить невозможно, хочется нарисовать карту».

Разработчик в курсе , что есть гугл карты и яндекс карты ?
Когда он отправляется в отпуск - пишет свой сервис по поиску дешевых авиабилетов ?

bers666
bers666 ceo в localhost
1

Ничего, что Гугл и Яндекс - владеют данными, которые вносят пользователи? При том что хотят денежку за api. И экспортировать оттуда нельзя. Спасибо, корпоративного шита не надо.

quazi
quazi Орк в Все равны
6

OSM же есть. Если уж интерактив, то нужна карта которая в динамике покажет где хапун и автожраки. А то ни в будни, ни в выходные не безопасно из дома выходить. А уж бар то народ как-нибудь да найдёт и без ботов, даже если настолько пьяный, что пробелы в урлы загоняет

0

@quazi Ну была же приложуха Марш, полезность у нее средняя оказалась. Автожаки быстро довольно двигаются, по сравнению со временем обновления карты.

3

Вы были в Маяке? Там лабиринт в ТЦ. И Яндекс.Карты никак не помогают найти нужное заведение. Только дом в котором оно есть

-4

Во-вторых, веб не нужен.

Лучше не заявлять что нечто не нужно если не сильно понимаешь.

2

Автор конечно молодец, что рассказывает о своей разработке, только он умалчивает, что изначально идея и первоначальная реализация каталога Маяка Минска второго бота mayak_minska_bot принадлежит как раз той девушке, которую он встретил на маяке. Именно она продвигает инстаграм аккаунт @mayak_minska который рассказывает о всем что происходит в районе Маяка Минска) и именно она реализовала бота и анонсировала в месных информ-каналах, после чего автор решил повторить) Конечно он привнес в свою реализацию что-то свое, например новый механизм реализации карт и удобный редактор точек для сбора данных геометок. Вообще сбор данных, это достаточно сильная сторона этой реализации.

Илья Зверев
Илья Зверев Специалист по всё нормально в Lyft
1

Боты на непосвящённый взгляд похожи, но не исключают, а дополняют друг друга. Например, «навигатор» не ответит, что происходит на районе, в нём нельзя просто так покопаться в каталоге или продвигать (всех, кто мне стучится насчёт рекламы, перенаправляю к вам). «Каталог» же никогда не выдаст со 100% точностью список, скажем, школ рисования или ногтевых салонов, и не скажет, на какой этаж ехать. Поэтому я попросил добавить в статью ссылку на второй бот и вывожу её же в стартовой странице и справке своего бота.

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже