'InstaPy - like by tags
I have been running Instapy with no problem, other features such as unfollowing, following, and watching stories and reels all still work. The issue I am having is with liking by tags. The error message I get is
Traceback (most recent call last):
File "/Users/em/PycharmProjects/instabot_1/test_1_likes.py", line 61, in <module>
session.like_by_tags(random.sample(like_tag_list, 3),
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/instapy/instapy.py", line 1977, in like_by_tags
inappropriate, user_name, is_video, reason, scope = check_link(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/instapy/like_util.py", line 618, in check_link
media = post_page[0]["shortcode_media"]
KeyError: 0
I am running Instapy via Firefox, Pycharm, and I use a Mac. I am a newbie with Python.
This is the code I am running...
import random
from instapy import InstaPy
from instapy import smart_run
browser = r'C:\Program Files\Mozilla Firefox\firefox.exe'
# login credentials
insta_username = 'myaccountname'
insta_password = 'mypassword'
dont_likes = ['sex', 'nude', 'naked', 'beef', 'pork', 'seafood',
'egg', 'chicken', 'cheese', 'sausage', 'lobster',
'fisch', 'schwein', 'lamm', 'rind', 'kuh', 'meeresfrüchte',
'schaf', 'ziege', 'hummer', 'yoghurt', 'joghurt', 'dairy',
'meal', 'food', 'eat', 'pancake', 'cake', 'dessert',
'protein', 'essen', 'mahl', 'breakfast', 'lunch',
'dinner', 'turkey', 'truthahn', 'plate', 'bacon',
'sushi', 'burger', 'salmon', 'shrimp', 'steak',
'schnitzel', 'goat', 'oxtail', 'mayo', 'fur', 'leather',
'cream', 'hunt', 'gun', 'shoot', 'slaughter', 'pussy',
'breakfast', 'dinner', 'lunch']
#friends = ['list of friends I do not want to interact with']
like_tag_list = ['vegan', 'veganfoodshare', 'veganfood', 'whatveganseat',
'veganfoodie', 'veganism', 'govegan',
'veganism', 'vegansofig', 'veganfoodshare', 'veganfit',
'veggies']
# prevent posts that contain some plantbased meat from being skipped
ignore_list = ['vegan', 'veggie', 'plantbased']
accounts = ['accounts with similar content']
# get a session!
session = InstaPy(username=insta_username,
password=insta_password,
headless_browser=True)
with smart_run(session):
# settings
session.set_relationship_bounds(enabled=True,
max_followers=15000)
#session.set_dont_include(friends)
session.set_dont_like(dont_likes)
session.set_ignore_if_contains(ignore_list)
session.set_user_interact(amount=2, randomize=True, percentage=60)
session.set_do_follow(enabled=True, percentage=40)
session.set_do_like(enabled=True, percentage=80)
# activity
session.like_by_tags(random.sample(like_tag_list, 3),
amount=random.randint(50, 100), interact=True)
session.unfollow_users(amount=random.randint(75, 150),
InstapyFollowed=(True, "all"), style="FIFO",
unfollow_after=90 * 60 * 60, sleep_delay=501)
session.end()
Solution 1:[1]
This problem is due to the changes that Instagram has made in its source code.
Go to line 619 from the like_util.py (REFER TO YOUR SYSTEM ON WHERE INSTAPY FILES ARE LOCATED) file and change that part of the code to the code I gave you below (if you could not find this part of the code, the phrase media = post_page[0]["shortcode_media "] Search the file like_util.py)
media = post_page ['items'] [0]
is_video = media ["is_unified_video"]
user_name = media ["user"] ["username"]
image_text = media ["caption"] ["text"]
owner_comments = ""
After that, you'll run into another error Could not find followers' for ... Grabbed 0 usernames from....
FIX for these errors (works for me at least, please backup and test yourself):
File: xpath_compile.py
Line 111-117:
FROM
xpath["get_given_user_followers"] = {"followers_link": "//ul/li[2]/a/span"}
xpath["get_given_user_following"] = {
"all_following": "//a[contains(@href,'following')]/span",
"topCount_elements": "//span[contains(@class,'g47SY')]",
"following_link": '//a[@href="/{}/following/"]',
}
TO
xpath["get_given_user_followers"] = {"followers_link": "//ul/li[2]/a/div/span"}
xpath["get_given_user_following"] = {
"all_following": "//a[contains(@href,'following')]/div/span",
"topCount_elements": "//span[contains(@class,'g47SY')]",
"following_link": "//a[contains(@href,'following')]/@href",
}
Line: 97-104
FROM
xpath["get_following_status"] = {
"follow_button_XP": "//button[text()='Following' or \
text()='Requested' or \
text()='Follow' or \
text()='Follow Back' or \
text()='Unblock' and not(ancestor::*/@role = 'presentation')]",
"follow_span_XP_following": "//button/div/span[contains(@aria-label, 'Following')]",
}
TO
xpath["get_following_status"] = {
"follow_button_XP": "//button/div[text()='Following' or \
text()='Requested' or \
text()='Follow' or \
text()='Follow Back' or \
text()='Unblock' and not(ancestor::*/@role = 'presentation')]",
"follow_span_XP_following": "//button/div/span[contains(@aria-label, 'Following')]",
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dennis Maina |
