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

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

Оставить комментарий
Разработчик сделал бота для Маяка Минска с 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, всё сохраняется автоматически и можно восстановить, если закроешь вкладку. Никаких меню и не больше шести кнопок на экране, — отмечает Илья.

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

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

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

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

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

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

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

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

Четверых студентов БНТУ задержали за 4 дня. Что происходит?
Четверых студентов БНТУ задержали за 4 дня. Что происходит?
Четверых студентов БНТУ задержали за 4 дня. Что происходит?
Основатели MAPS.ME выпустили новый сервис карт — в ответ на «сломанный» старый
Основатели MAPS.ME выпустили новый сервис карт — в ответ на «сломанный» старый
Основатели MAPS.ME выпустили новый сервис карт — в ответ на «сломанный» старый
Минск — 230-й в рейтинге городов для стартапов от StartupBlink. Был 181-м
Минск — 230-й в рейтинге городов для стартапов от StartupBlink. Был 181-м
Минск — 230-й в рейтинге городов для стартапов от StartupBlink. Был 181-м
7 комментариев
Решение Oxagile открывает двери в офисе с помощью системы распознавания
Решение Oxagile открывает двери в офисе с помощью системы распознавания
Решение Oxagile открывает двери в офисе с помощью системы распознавания
1 комментарий

Обсуждение

Комментариев пока нет.
Спасибо! 

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

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