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.
Особенности 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».