Skip to content

gaisin/weekend_flights

Repository files navigation

Weekend Flights — автоматизация поиска лучших авиабилетов на выходных

Я работаю в стандартном офисном режиме 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-уведомление на телефон, также информация о найденном билете со ссылкой на поиск публикуется в моей группе во Вконтакте.
На основе скрипта можно сделать телеграм бота, который будет отслеживать необходимые билеты.
Один из минусов в том, что в ответе от АПИ не возвращается время вылета и прилета.
Список стран в нужный формат переводил сам, используя файл от АПИ со списком стран. Для себя просто отфильтровал те страны, в которые готов поехать на выходные, в основном это Европа.

Как это выглядит

IFTTT push-уведомление Публикация в группу ВК

Как использовать

  1. Создать файл private.py и добавить туда все необходимые токены (см. private_example.py)
  2. Составить список направлений в виде списка строк (list of stings) IATA кодов направлений, в которые вы хотите искать билетов. Либо использовать переменную country_codes из countries.py из репозитория — в основном это список европейских стран, до которых недолго лететь
  3. Если 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

IFTTT — удобный сервис автоматизации рутинных задач, который в том числе предоставляет возможность отправлять уведомления на телефон через webhooks, если у вас на телефоне установлено приложение IFTTT
Токен можно получить у них на сайте или в приложении после регистрации
Неплохая статья на про настройку уведомлений через IFTTT: https://python-scripts.com/bitcoin-signals

Токен для ВК и нюансы по поводу IP

Чтобы скрипт мог постить найденные билеты на стену группы, необходимо сначала необходимо создать 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, с которого он был получен
Важно: чтобы была возможность публиковать на стене группы от имени группы, необходимо иметь права админа этой группы

About

Searching weekend flights

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages