Абстрактный

Instagram — одна из самых популярных социальных сетей на сегодняшний день. Как коллега-пользователь, я использую его довольно часто, но по-другому. Моя основная причина, по которой я открываю Instagram, не в том, чтобы увидеть последний отпуск моего знакомого в Мексике или посмеяться над мемами (что правда, тоже весело), ​​а вместо этого потреблять «вдохновляющий контент».

Многие из этих страниц имеют более 100 тысяч подписчиков и публикуют… цитаты известных личностей… Это заставило меня задуматься: «Хммм, вместо того, чтобы прокручивать вниз и потреблять чьи-то идолы, я должен сделать их сам!»

Итак, квест был начат — я собирался создать бота для Instagram, который мог бы автоматически публиковать цитаты в день от людей, от которых я лично черпаю вдохновение!

Краткое примечание

Если вы здесь, потому что хотите сделать это самостоятельно, просто прокрутите вниз! На Github есть ссылка на открытый исходный код, и я также расскажу, как настроить репозиторий, чтобы он работал на вас лично!

С чего начать

Как инженеры-программисты, в нашей ДНК заложено разбивать проблемы на более мелкие. Конечной целью является создание учетной записи Instagram, которая может автоматически публиковать случайные цитаты. С учетом этих критериев нам необходимо создать программное приложение, которое может:

  1. Получите случайную цитату из предопределенного списка людей.
  2. Создайте изображение, которое сочетает в себе изображение автора с цитатой
  3. Опубликовать сгенерированное изображение в Instagram

Если мы будем следовать принципу «разделения ответственности», мы также сможем создать организованную кодовую базу, которая выполняет каждую из этих задач. Давайте погрузимся!

I. Случайный выбор цитаты

Процесс выбора случайной цитаты может быть выполнен разными способами. Мы начинаем с предопределенного списка авторов, поэтому первый алгоритм, который пришел на ум, был таким:

  1. Выберите случайного автора (буквально просто случайную строку в списке строк)
  2. Выберите случайную цитату из выбранного автора. (Опять же, просто выбрав случайную строку в списке строк)

Довольно просто, верно? Список авторов жестко запрограммирован в приложении, но список цитат генерируется во время выполнения путем извлечения цитат с веб-сайта www.goodreads.com с использованием библиотеки Python beautifulsoup. Это позволяет конечному пользователю легко добавлять дополнительных авторов в жестко заданный список без необходимости вручную искать классные цитаты указанного автора.

Оптимизация с помощью кэширования.Код также будет кэшировать цитаты, полученные с веб-сайта www.goodreads.com, в текстовом файле, чтобы не было необходимости в повторной загрузке цитат с веб-сайта.

II. Генерация изображения

Если бы этот бот был создан для твиттера, нам бы достаточно было только Автора и Цитаты. Однако, поскольку это Instagram, мы должны опубликовать фотографию. Это означает, что нам нужно преобразовать нашу случайную цитату в изображение, прежде чем мы будем готовы к публикации.

Instagram требует, чтобы фотографии были определенного размера на момент публикации:

  • Изображения с соотношением сторон 1:1 (1080 x 1080 пикселей)
  • Изображения с соотношением сторон 4:5 (1080 x 1350 пикселей)

Не буду врать, я изо всех сил пытался найти изображения авторов такого размера. Эта борьба привела меня к решению, что я буду просто вручную добавлять фотографии прямо в приложение. Используя мое любимое программное обеспечение для редактирования фотографий, Adobe Photoshop, я смог создать фотографии, используя описанные размеры, и добавить их в программное приложение. После того, как эти изображения были сохранены в приложении, библиотека Python Pillow (библиотека изображений Python) использовалась для изменения изображения и записи текста на изображение перед повторным сохранением.

Основные правки фотографий, которые необходимо было выполнить, были следующими:

  • Уменьшите контрастность изображения на 50% (таким образом, текст на фотографии будет «выскакивать»).
  • Отцентрируйте строку произвольной длины в центре фотографии.

III. Публикация в Instagram

Теперь часть, которую мы все ждали, на самом деле публикация в Instagram. Существует официальный API Instagram, позволяющий разработчикам взаимодействовать с различными конечными точками. Когда дело доходит до личных проектов по программированию, я не решаюсь заново изобретать велосипед, если у меня его нет. Поэтому я использовал Python-оболочку instabot для взаимодействия с Instagram. Вместо того, чтобы вручную создавать/настраивать запросы, мы можем вызывать функции-оболочки, чтобы сделать это за нас! С удивительными 12 строками кода в нашем приложении мы можем публиковать сообщения в Instagram!

Снимаю шляпу перед Даниилом Охлопковым за создание интуитивно понятной библиотеки!

Заключение

Так что у вас есть это люди! Придумав первоначальную идею проекта и разбив ее на более мелкие подзадачи, мы успешно смогли создать бота для публикации в Instagram! Главный вывод из этого поста заключается в том, что, разбив проблему на подзадачи или «отдельные задачи», я смог создать краткую базу кода, которую легко настроить и изменить. Я надеюсь, что эту разбивку кода было легко понять. Не стесняйтесь клонировать репозиторий и попробуйте сами!

Ссылка на Github: https://github.com/Jacob-Mellichamp/Instagram-bot

Подпишитесь на меня в Твиттере: https://twitter.com/JakeMellichamp