Дапамажыце dev.by 🤍
Падтрымаць

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

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

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

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

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

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

Чытайце таксама
«Будуць шукаць». Каму яшчэ хочуць адкатаць пальцы
«Будуць шукаць». Каму яшчэ хочуць адкатаць пальцы
«Будуць шукаць». Каму яшчэ хочуць адкатаць пальцы
Сабралі свежыя выпадкі выкліку на дактыласкапію ў Беларусі.
Сям'я пераехала ў Польшчу з-за генетычнай хваробы дзіцяці. Ім патрэбна ваша дапамога
Сям'я пераехала ў Польшчу з-за генетычнай хваробы дзіцяці. Ім патрэбна ваша дапамога
Сям'я пераехала ў Польшчу з-за генетычнай хваробы дзіцяці. Ім патрэбна ваша дапамога
Пераходзьце па спасылцы, каб дапамагчы Максіму.
Праграмістам — да 12000 рублёў. Прабілі па базе, каго шукаюць дзяржструктуры і прыватнікі
Праграмістам — да 12000 рублёў. Прабілі па базе, каго шукаюць дзяржструктуры і прыватнікі
Праграмістам — да 12000 рублёў. Прабілі па базе, каго шукаюць дзяржструктуры і прыватнікі
У агульнарэспубліканскай базе вакансій стала крыху менш айцішных вакансій — 1200 (у ліпені было каля 1300).
14 каментарыяў
Патрэбныя джуны, шмат стажыровак. Каго шукае буйны аўтсорс у Беларусі восенню
Патрэбныя джуны, шмат стажыровак. Каго шукае буйны аўтсорс у Беларусі восенню
Патрэбныя джуны, шмат стажыровак. Каго шукае буйны аўтсорс у Беларусі восенню
Некаторыя буйныя аўтсорсеры — EPAM, Itransition — сталі больш актыўна шукаць новых людзей у каманды ў Беларусі. 

Хочаце паведаміць важную навіну? Пішыце ў Telegram-бот

Галоўныя падзеі і карысныя спасылкі ў нашым Telegram-канале

Абмеркаванне
Каментуйце без абмежаванняў

Рэлацыраваліся? Цяпер вы можаце каментаваць без верыфікацыі акаўнта.

Каментарыяў пакуль няма.