Бот для Instagram на Python

Instagram – самое удобное приложение для общения в социальных сетях в наше время. В силу его популярности там ежесекундно сохраняется множество данных. Все слышали об Instagram. Он помогает нам охватить большую аудиторию, получить больше подписчиков и лайков. Но вы хотя бы пальцем пошевелили, чтобы автоматизировать процессы? В этой статье мы вам расскажем, как написать бот для Instagram на Python, с применением Instagram API и опенсорс-модуля InstaPy.

В этом руководстве вы узнаете:

  • как работают Instagram-боты
  • особенности модуля InstaPy
  • как создать бот для Instagram с помощью InstaPy

Установка

В вашей операционной системе должна быть установлена ​​последняя версия Python. Установив или обновив ее, выполните следующую команду в командной строке:

pip install instapy

Основы InstaPy

Для начала давайте рассмотрим, как войти в Instagram с помощью модуля InstaPy.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

Первым шагом всегда является импорт модуля. Затем мы реализуем класс Instapy(), в который передаем параметры учетных данных. В следующей строке метод session.login() будет использовать API Instagram для входа в систему. После запуска программы вы увидите открытое окно браузера, в котором произойдет программный вход в Instagram.

[python_ad_block]

Особенности InstaPy

В InstaPy есть множество полезных функций, некоторые из которых мы обсудим в этой статье. Вот список возможностей данной библиотеки:

  • комментирование
  • подписка
  • отписка
  • размещение альбома
  • размещение видео
  • лайки

Лайки

С помощью специальных методов в Instagram можно лайкнуть что-нибудь. У InstaPy есть 3 способа поставить лайк.

Лайки по тегу

Метод лайка по тегу like_by_tags() принимает два аргумента. Первый должен быть в форме списка тегов, по которым мы хотим поставить лайк. Второй – количество лайков. Бот будет искать заданные теги в Instagram и ставить лайки посту, который он нашел в окне результатов.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()
#like by Tag
session.like_by_tags(["cars", "Ferari"], amount=10)

Лайки по местоположению

У модуля InstaPy есть метод с названием like_by_location(). Как и предыдущий, он принимает в качестве параметров 2 аргумента. Один – это строковый аргумент местоположения, а второй – количество сообщений, которым вы хотите поставить лайк.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

session.like_by_locations(['224442573/salton-sea/'], amount=10)

Лайки по ленте

Метод лайков по ленте используется для того, чтобы ставить лайки на ваши собственные публикации в ленте. Метод like_by_feed() принимает 4 аргумента.

Первый — количество сообщений. Второй — randomize (принимает значения True или False). Если этот аргумент равен True, то лайки постам вашей ленты выставляются рандомно. Третий аргумент – unfollow (принимает значение True или False). Он отменяет подписку на автора сообщения, которое было рассмотрено. И последний – аргумент interact, также принимающий значение True или False. Если аргумент равен True, метод посещает страницу профиля автора определенного сообщения и лайкает определенное количество его фотографий, а затем возвращается в ленту.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

session.like_by_feed(amount=100, randomize=True, unfollow=True, interact=True)

Подписка

У InstaPy есть методы подписки, которые можно использовать, чтобы подписаться на пользователей в Instagram. Данный метод делится на подметоды со множеством функций отслеживания. Давайте рассмотрим все по порядку.

Подписка по тегу

Функция follow_by_tag() служит для подписки на пользователей на основе хэштегов. Лайки она не ставит. Эта функция полезна, когда вы хотите подписаться на пользователей с определенными интересами. Метод follow_by_tags() принимает два аргумента в качестве параметров: список строк (теги) и количество.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#follow by tag
session.follow_by_tags(['hashtag1', 'hashtag2', 'hashtag3'], amount=5)

Подписка по списку

Как видно из названия, данный метод ориентируется на список пользователей, который в него передается.

Метод follow_by_list() принимает 4 аргумента в качестве параметров: строковый список пользователей, время, sleep_delay и interacts (принимает значения True или False). Последний аргумент будет полезен для точного таргетинга.

Метод подписывается на пользователя только один раз (если отписаться снова).

sleep_delay используется для определения времени перерыва после некоторого числа подписок подряд, в среднем после 10 подписок.

Этот метод полезен, если нужно получить ответную подписку от фолловеров выбранного аккаунта или группы аккаунтов.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#follow by list
session.follow_by_list(['hardy', 'keenu'], times=1, sleep_delay=600, interact=False)

Подписка на чьих-то подписчиков

InstaPy предоставляет нам функцию, с помощью которой наш бот может следить за подписчиками нашего пользователя. Имя данного метода – follow_user_followers(). Он принимает 4 аргумента в качестве параметров: строковый список имен подписчиков, amount, randomize и interact. Благодаря параметру randomize подписка на фолловеров пользователя будет осуществляться рандомно.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#follow by followers
session.follow_user_followers(['follower1', 'follower2'], amount=10, randomize=False, interact=True)

Подписка на пользователей, которые поставили лайк посту

Данный метод follow_likers() будет подписываться на людей, которые лайкнули фотографии определенного списка пользователей.

Для этого метода требуется 5 аргументов. photo_grab_amount – количество фотографий, которые берутся из профиля пользователя для анализа лайкнувших.

follow_likers_per_photo – количество людей, на которых нужно подписаться, для каждой фотографии.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#follow by likers
session.follow_likers (['user1' , 'user2'], photos_grab_amount = 2, follow_likers_per_photo = 3, randomize=True, sleep_delay=600, interact=False)

Подписка на пользователей, которые оставили комментарий

Метод follow_commenters() будет следить за людьми, которые прокомментировали фотографии определенного списка пользователей. Тут нам потребуется уже 6 аргументов, однако многие из них вам уже знакомы. Аргумент daysold будет брать комментаторов только с фотографий не старше указанного количества дней давности. Аргумент max_pic, в свою очередь, ограничивает количество фотографий для анализа.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#follow commenters
session.follow_commenters(['commenter1', 'commenter2'], amount=100, daysold=365, max_pic = 100, sleep_delay=600, interact=False)

Отписка

Поскольку мы уже обсудили множество способов подписаться на пользователей в Instagram, пришло время обсудить, как нашему боту отписаться от пользователей. В коде, приведенном ниже, мы используем для отписки метод unfollow_user(), который принимает 5 аргументов.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#Unfollow
custom_list = ["user_1", "user_2", "user_3"]
session.unfollow_users(amount=10, customList=(True, custom_list, "all"), style="RANDOM", unfollow_after=55*60*60, sleep_delay=600)

Отписаться от пользователей, которые не подписаны на вас

Используя данный метод, ваш бот отменит подписку на пользователей, которые не подписываются на вас в ответ. Это будет полезно для отмены подписки на пользователей, на которых вы подписаны, но они почему-то не подписались на вас.

Аргумент unfollow_after заставит нашего бота отписаться от пользователя, который не подписался на вас за указанное время.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#Unfollow the back followers
session.unfollow_users(amount=20, nonFollowers=True, style="RANDOM", unfollow_after=42*60*60, sleep_delay=600)

Отписка от любого пользователя

Этот метод можно использовать для отмены подписки на пользователя, независимо от того, подписан ли пользователь на вас.

Метод unfollow_users() принимает 5 аргументов. Аргумент unfollow_after используется, чтобы сообщить боту, через сколько минут или часов нужно отменить подписку.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#Unfollow the users
session.unfollow_users(amount=40, allFollowing=True, style="LIFO", unfollow_after=3*60*60, sleep_delay=450)

Важные особенности библиотеки InstaPy

Мы обсудили основные функции ботов Instagram. Однако InstaPy не ограничивается этими функциями, у нее есть некоторые дополнительные функции, которые тоже могут быть полезны. Например:

  • умные хэштеги
  • игнорирование пользователей
  • игнорирование по ограничению
  • исключение друзей

Итак, давайте приступим!

Умные хэштеги

С помощью метода set_smart_hashtags() можно генерировать умные хэштеги на основе рейтинга https://displaypurposes.com. В результате отфильтровываются забаненные хэштеги и спам-теги. После вы можете использовать полученные «умные» хэштеги, чтобы лайкать и комментировать сообщения.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#Smart hashtags
session.set_smart_hashtags(['cycling', 'roadbike'], limit=3, sort='top', log_tags=True)
session.like_by_tags(amount=10, use_smart_hashtags=True)

Игнорирование пользователей

Этот метод позволит полностью игнорировать пользователей: бот не будет лайкать их изображения, подписываться на них или даже комментировать их посты. Метод set_ignore_users() принимает в качестве аргумента список, который содержит ники пользователей в виде строк. Как следствие, эти пользователи и будут игнорироваться.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#ignore user
session.set_ignore_users(['user1', 'user2'])

Игнорирование по ограничению

Данный метод позволит игнорировать посты, в которых есть переданные в метод слова. Метод set_ignore_if_contains() проверит, есть ли в изображениях/видео какие-либо слова, похожие на заданные. Если таковые встречаются, данный пост будет проигнорирован – его не будут лайкать или оставлять комментарий.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#ignore restriction
session.set_ignore_if_contains(['gun', 'burger', 'flower'])

Исключение друзей

С помощью бота вы можете отписаться от друзей в Instagram, но он по-прежнему будет лайкать их посты. Чтобы избежать этого, как раз и нужен метод set_dont_include(). Он принимает список имен пользователей в строковом формате в качестве аргумента.

from instapy import InstaPy

#login credentials
insta_username = ''
insta_password = ''

#login session
session = InstaPy(username=insta_username, password=insta_password)
session.login()

#exclude friends
session.set_dont_include(['friend1', 'friend2'])

Заключение

Итак, мы разобрали, как написать бот для Instagram на Python. Мы рассмотрели большинство функций InstaPy, однако путешествие по Instagram-ботам на этом не заканчивается. О других доступных функциях можно почитать в официальной документации InstaPy. Эта статья просто дает вам общее понимание работы модуля InstaPy. Кроме того, каждый из вас может изменить эти методы и добавить новые, чтобы создать своего собственного бота для Instagram.

Надеемся, эта статья оказалась для вас полезной. Успехов в написании кода!

Перевод статьи «Build an Instagram Bot with Python».