Pokemon Go — это круто, и всем нам хочется похвастаться, когда мы ловим редких покемонов. Давайте создадим быстрый хак с использованием Python и Twilio MMS, который позволит вам обмануть друзей, заставив их поверить, что вы встретили легендарного покемона.
Продолжайте чтение, чтобы узнать, как это сделать, или попробуйте прямо сейчас, отправив изображение и название легендарного покемона на номер:
**(646) 760-3289**
Прежде чем приступить к коду, убедитесь, что у вас есть следующее:
— Установленные Python и pip на вашем компьютере
— Бесплатный аккаунт Twilio — зарегистрируйтесь здесь
— Изображения, которые нам понадобятся, включая скриншоты моделей легендарных покемонов и оверлей для экрана встречи с покемоном. Создайте новую папку с названием `pokemon-go-images` в директории, где будет находиться ваш проект, и сохраните их туда.
Зависимости, которые мы будем использовать:
— Библиотека Twilio Python для генерации TwiML в ответ на входящие сообщения
— Pillow для работы с изображениями
— Flask в качестве веб-фреймворка для нашего веб-приложения
— Requests для загрузки изображений из текстовых сообщений
Откройте терминал и введите следующие команды, желательно в безопасной среде виртуального окружения:
Давайте напишем код, который возьмет изображение для обработки и наложит на него экран поимки покемона. Мы будем использовать модуль Image из библиотеки PIL.
Нам нужна функция, которая принимает путь к изображению и название покемона. Наша функция изменит размер изображений для совместимости, наложит оверлей на фоновое изображение, добавит выбранного покемона на изображение и затем заменит оригинальное изображение новым.
Откройте файл с названием `overlay.py` и добавьте следующий код (комментарии включены в строках для объяснения происходящего):
Попробуйте запустить его на своем изображении. Это лучше всего работает с фотографиями, сделанными на телефоне, но давайте просто посмотрим, работает ли это сейчас. Откройте Python-консоль в той же директории, где находится созданный вами файл, и введите следующие две строки:
Теперь откройте новое изображение и посмотрите, ловите ли вы Мьюту на поезде, как я:
Нам нужен номер телефона Twilio, прежде чем мы сможем отвечать на сообщения. Вы можете приобрести номер телефона Twilio здесь.
Теперь, когда работа с изображениями налажена, создайте Flask-приложение, которое принимает мультимедийные сообщения и отвечает на них изображением с поимкой покемона.
Откройте файл с названием `app.py` в той же директории и добавьте следующий код:
Маршрут `/sms` отвечает на входящее текстовое сообщение с помощью TwiML — XML от Twilio. Обратите внимание, что параметр ‘NumMedia’ не равен нулю, что означает, что мы получили MMS. Twilio не возвращает само изображение, а возвращает URL к изображению.
Мы создаем строку с именем файла, используя параметр `MessageSid` для поддержания уникального идентификатора каждого изображения. Затем программа открывает файл для записи содержимого изображения от Twilio в файл.
Второй маршрут, `/uploads/`, обрабатывает доставку медиафайлов `message.media` с помощью TwiML, используя этот URL для получения нового изображения.
Ваше Flask-приложение должно быть доступно из интернета, чтобы Twilio мог отправлять к нему запросы. Для этого мы будем использовать ngrok, который вам нужно установить, если он у вас еще не установлен. В терминале выполните следующую команду:
Это предоставит нам общедоступный URL для Flask-приложения. Настройте свой номер телефона, как показано на этом изображении:
Прежде чем тестировать, убедитесь, что вы изменили пути к файлам и URL на свои собственные.
Теперь попробуйте отправить изображение и название легендарного покемона на ваш недавно настроенный номер Twilio. Похоже, мы нашли Запдоса в офисе Twilio в Нью-Йорке!
Теперь, когда вы можете отправлять сообщения, чтобы создать видимость поимки легендарных покемонов на любом изображении, ваша миссия по убеждению друзей в том, что вы настоящий мастер покемонов, может действительно начаться.
Код этого проекта также доступен в этом репозитории GitHub.
Для большего количества потрясающих материалов по Pokemon Go ознакомьтесь с этой статьей, которая расскажет, как настроить SMS-уведомления, когда рядом появляются редкие покемоны.
Не стесняйтесь обращаться, если у вас есть вопросы или комментарии, или просто хотите похвастаться тем, что вы создали.
— Email: sagnew@twilio.com
— Twitter: @Sagnewshreds
— Github: Sagnew
— Twitch (стримы живого кодинга): Sagnewshreds
Спасибо моему хорошему другу Шахану Ахтеру за помощь в работе с изображениями и настройке Python-кода для улучшения качества изображений.