Я работаю в стандартном офисном режиме 5/2, и у меня всего лишь 28 календарных дней отпуска. Чтобы иметь возможность чаще путешествовать, мне захотелось попробовать организовать поездку на выходных. Я так уже делал для поездой домой в Уфу — вылет в пятницу после работы, прилет в понедельник до работы, либо в воскресенье поздно вечером. Тогда я нашел билеты на распродаже по 1000 рублей в одну сторону. Мне захотелось автоматизировать процесс поиска билетов на выходные со скидкой, которые периодически выбрасывают авиакомпании. Для этого и был написан данный скрипт.
Стоит отметить, что это не полноценный поиск авиабилетов и не все билеты могут быть найдены, т.к. сюда попадает только кэш поиска.
Скрипт предназначен для мониторинга авиабилетов по определенным параметрам. Поиск производится по API от travelpayouts, в котором хранятся данные по поиску авиабилетов за последние 48 часов. Документацию к API можно посмотреть здесь: https://support.travelpayouts.com/hc/ru/articles/203956163
В моем случае сначала было настроено ежечасное выполнение скрипта с помощью nnCron, т.к. в моем распоряжении был компьютер на windows, который я могу круглосуточно оставлять включенным. Если у вас MacOs или Linux, используйте стандартный cron. Теперь скрипт переехал на pythonanywhere — простой и удобный сервис, в который можно загрузить скрипт и настроить Cron. Самый простой тариф стоит $5 в месяц, в придачу получите возможность хостить свои Flask-приложения.
При нахождении билетов я получаю push-уведомление на телефон, также информация о найденном билете со ссылкой на поиск публикуется в моей группе во Вконтакте.
На основе скрипта можно сделать телеграм бота, который будет отслеживать необходимые билеты.
Один из минусов в том, что в ответе от АПИ не возвращается время вылета и прилета.
Список стран в нужный формат переводил сам, используя файл от АПИ со списком стран. Для себя просто отфильтровал те страны, в которые готов поехать на выходные, в основном это Европа.
- Создать файл private.py и добавить туда все необходимые токены (см. private_example.py)
- Составить список направлений в виде списка строк (list of stings) IATA кодов направлений, в которые вы хотите искать билетов. Либо использовать переменную country_codes из countries.py из репозитория — в основном это список европейских стран, до которых недолго лететь
- Если Unix/Linux — настроить cron, если Windows — установить и настроить nnCron, для Windows 7 скачать можно с форума nnCron: http://www.nncron.ru/forums/viewtopic.php?p=33983
Очень просто — достаточно зарегистрироваться в travelpayouts.com
После регистрации на странице https://www.travelpayouts.com/developers/api будет доступен API токен
IFTTT — удобный сервис автоматизации рутинных задач, который в том числе предоставляет возможность отправлять уведомления на телефон через webhooks, если у вас на телефоне установлено приложение IFTTT
Токен можно получить у них на сайте или в приложении после регистрации
Неплохая статья на про настройку уведомлений через IFTTT: https://python-scripts.com/bitcoin-signals
Чтобы скрипт мог постить найденные билеты на стену группы, необходимо сначала необходимо создать Standalone-приложение в ВК, затем получить access_token с доступом к стене (wall)
Для этого найти ID этого приложения и через браузер пройти по ссылке https://oauth.vk.com/authorize?client_id=1234567&scope=wall,offline&redirect_uri=https://oauth.vk.com/blank.html&response_type=token
В ответ будет редирект на страницу, в адресе которой будет токен: https://oauth.vk.com/blank.html#access_token=asdfkjasdf876k4h3gftk2hjg4bnvf2ggk3hkj3hgj2hkjh35hb2j3hgj4bnh4g3n4bh3g4bn&expires_in=0&user_id=9876543
Нюанс: данный токен можно использовать только с того же IP, с которого он был получен
Важно: чтобы была возможность публиковать на стене группы от имени группы, необходимо иметь права админа этой группы