За час собрал монитор бензина и заправился без очереди: делюсь инструментом на GitHub

Я несколько раз попадал в длинные очереди за бензином, конкретно за АИ‑95. В конце августа четыре часа простоял в очереди на московской заправке, чтобы заправиться за минуту. В другой раз два часа ждал в Моршанске, хотя это город с населением меньше 50 тысяч человек. Очереди меня жутко выбешивали, поэтому решил попробовать навайбкодить монитор бензина. Он должен был сообщать, когда бензин появляется на нужной заправке и туда можно ехать. И у меня это получилось, хотя самостоятельно я до этого ничего не разрабатывал.
Я Игорь, менеджер продуктов Outlines Tech. В статье покажу, как ставил задачу ChatGPT, что приходилось уточнять и как проверил инструмент в деле. В конце оставлю ссылку на код на GitHub, чтобы вы могли попробовать его у себя. Бесплатно, разумеется.
Изначально искал готовый сервис с уведомлениями, но в процессе передумал
Мне нужен был бензин АИ-95 на нескольких заправках рядом с домом, в том числе на Роснефти и Teboil. Хотел узнавать о его появлении, чтобы, например, заправить полный бак перед поездкой на выходные.
Сервис искал через ChatGPT. Просто наговорил, что мне нужно, без мегапромпта. Он предложил PetrolPulse, где, по его ответу, были уведомления о появлении топлива на ближайших АЗС. В том же чате я предложил собрать свой инструмент как запасной вариант: если PetrolPulse не подойдёт, можем ли написать парсер? «Да, можем», — ответил ChatGPT. И понеслась.

Мне стало интересно попробовать собрать свой инструмент. Плюс я хотел получать уведомления без Telegram, чтобы не подписываться ради них на новые каналы.
В своём инструменте решил повторить функции «ГдеБЕНЗ». Там можно выбрать заправки и марку топлива, а сервис присылает сообщение, когда подтверждается, что бензин есть.

Данные о бензине GPT посоветовал искать через браузер. У Яндекса и Т-Банка он не нашёл публичной документации API с наличием топлива. Поэтому ИИ предложил посмотреть, как их сайты загружают сведения о выбранных заправках, и выяснить, сможет ли мой монитор получать те же данные автоматически.

За час собрал первую рабочую версию инструмента
С помощью Codex создал монитор, который проверял выбранные заправки и сообщал о появлении бензина по данным источников. Для уведомлений ИИ-агент посоветовал Pushover — приложение, через которое можно получать сообщения от своей программы.
Монитор запустил на Android-телефоне. Код написал на Python, а сам инструмент работает через эмулятор терминала Termux, который позволяет запускать такие программы на смартфоне.

Первая версия проверяла заправки каждые 10–15 минут. В уведомлении были название и адрес АЗС, сведения о наличии топлива из каждого источника и время обновления. Можно было сразу увидеть, какие сервисы сообщают, что бензин есть, а у каких пока нет данных.

Первый раз я воспользовался монитором перед поездкой на 400 километров. Накануне ехал в машине, когда пришло уведомление, что на моей любимой заправке появился бензин. Сразу поехал туда и заправился без очереди. По словам кассирши, предыдущая очередь уже рассосалась, а бензин подвезли незадолго до моего приезда. Всё сработало так, как я и хотел.
Через неделю после запуска добавил историю изменений. Мне хотелось понимать, в какое время на заправках чаще появляется бензин, чтобы заранее планировать поездку. Монитор стал записывать, как менялись сведения о топливе в каждом источнике. Записи можно посмотреть в таблице и отфильтровать по заправке или сервису.

Карту заправок внедрил через месяц после первой версии. Она работает на библиотеке MapLibre и открывается в браузере. В карточке каждой АЗС показаны сведения о наличии АИ-95, число источников, которые его подтверждают, и вероятные часы подвоза.

Вероятные часы подвоза монитор оценивает по истории статусов: смотрит, в какое время источники чаще сообщали о появлении бензина. Например, у Роснефти на Волгоградском проспекте получились 5:00, 6:00 и 11:00. Я хотел выбирать подходящее время и подъезжать минут за двадцать до ожидаемого подвоза, чтобы заправиться до наплыва машин.
На все доработки после первой версии ушло максимум два часа. Примерно полчаса возился с картой: пришлось несколько раз объяснить Codex, как она должна выглядеть. Делал её в том числе для этой статьи, чтобы показать результат. Сам пользовался прежде всего уведомлениями, а накопленные данные и отдельные статусы разбирал через Codex.
Код проекта лежит на GitHub в свободном доступе
Сейчас монитор продолжает собирать сведения о выбранных заправках и сохранять историю. Карту и журнал изменений можно посмотреть в браузере. Уведомления мне перестали приходить, когда закончился пробный период Pushover. Пока необходимости в них нет, поэтому оставил монитор собирать статистику.
Код проекта, карту и накопленную историю смотрите на GitHub. Скачать всё можно бесплатно: жмите Code → Download ZIP (вдруг кто не знает). Запустить монитор можно на своём устройстве, краткая инструкция есть в README.
Насчёт Pushover. Уведомления первые 30 дней бесплатны, затем нужно платить подписку в 4,99 доллара за каждую платформу, на которой хотите получать сообщения.
Спасибо, что прочитали. Если у вас есть идеи, как такой сервис можно доработать или был похожий опыт мониторинга чего-либо, то буду рад обсудить это в комментариях.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.