Let's Do A Little Dance With InstaSpam
Let's import what we need for later on and log in to Instagram.
from InstagramAPI import InstagramAPI
from time import sleep
from random import randint
instauser = 'XXXX'
instapass = 'XXXX'
api = InstagramAPI(instauser, instapass)
api.login()
Upload image with caption.
api.uploadPhoto('path/to/image.jpg', caption='Something nice')
Get hashtag feed and like medias with the hashtag #lovepizza
skipping those already liked.
def like_tag_feed(tag, max_likes):
print('Liking media with hashtag {}'.format(tag))
next_max = 1
next_max_id = ''
likes = 0
for n in range(next_max):
api.getHashtagFeed(tag, next_max_id)
temp = api.LastJson
for post in temp["items"]:
if not post["has_liked"]:
print('Liking {} '.format(post["pk"]))
api.like(post["pk"])
likes += 1
if likes >= max_likes:
break
sleep(randint(3, 12))
try:
next_max_id = temp["next_max_id"]
except Exception:
pass
if likes >= max_likes:
break
like_tag_feed('lovepizza' , 3)
Follow users that like your media.
def follow_media_likers(instauser, max_media_likers):
print('Checking recent media likers')
count = 0
for media in get_recent_media(instauser):
api.getMediaLikers(mediaId=media)
info = api.LastJson
for user in info['users']:
id = user['pk']
if friend_check(api, id):
print('Already following {}'.format(id))
else:
api.follow(id)
print('Following {}'.format(id))
sleep(randint(3, 15))
if count >= max_media_likers:
break
count += 1
follow_media_likers(instauser, 3)
Like users recent media.
def like_recent_media(target_user, max_likes):
def get_user_profile(target_user):
api.searchUsername(target_user)
return api.LastJson['user']
user_profile = get_user_profile(target_user)
user_id = user_profile['pk']
user_posts = api.getUserFeed(user_id)
info = api.LastJson
likes = 0
for recent_post in info['items']:
if not recent_post["has_liked"]:
print('Liking {} '.format(recent_post["pk"]))
api.like(recent_post['pk'])
likes += 1
if likes >= max_likes:
break
sleep(randint(3, 12))
like_recent_media('putln2', 3)
Unfollow those who don't follow back and follow those who do.
def friend_check(user):
api.userFriendship(user)
if api.LastJson["following"]:
return True
else:
return False
def get_ids(user_id, friends):
gotcha = []
next_max_id = True
while next_max_id:
if next_max_id is True:
next_max_id = ''
if friends:
api.getUserFollowings(user_id, maxid=next_max_id)
else:
api.getUserFollowers(user_id, maxid=next_max_id)
gotcha.extend(api.LastJson.get('users', []))
next_max_id = api.LastJson.get('next_max_id', '')
return gotcha
def balancer(max_followback, max_unfollow):
print('Balancing followers/following')
user_id = api.username_id
followers = get_ids(user_id, False)
following = get_ids(user_id, True)
followers_list = []
following_list = []
for follower in followers:
followers_list.append(follower['pk'])
for follower in following:
following_list.append(follower['pk'])
losers = set(following_list) - set(followers_list)
print('Followers: {}'.format(len(followers)))
print('Following: {}'.format(len(following)))
print('Losers: {}'.format(len(losers)))
count = 0
for winner in followers_list:
if friend_check(winner):
print('Already following {}'.format(winner))
else:
api.follow(winner)
print('Following {}'.format(winner))
if count > max_followback:
break
count += 1
sleep(randint(3, 15))
count = 0
for loser in losers:
api.unfollow(loser)
print('Unfollowed {}'.format(loser))
if count > max_unfollow:
break
count += 1
sleep(randint(3, 15))
balancer(3, 3)
How to use multiple accounts.
insta_accounts = {
'XXXX': 'XXXX'
'XXXX': 'XXXX',
'XXXX': 'XXXX',
'XXXX': 'XXXX'
}
for instauser, instapass in insta_accounts.items():
api = InstagramAPI(instauser, instapass)
api.login()
print('Account: {}'.format(api.username))
Thanks for reading. x
Resources
- Python: https://python.org
- Instagram-API-python: https://github.com/LevPasha/Instagram-API-python