- Notifications
You must be signed in to change notification settings - Fork44
🔥 Fast & Reliable Python Package For Instagram API - 2024
License
diezo/Ensta
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Ensta is a simple, reliable and up-to-date python package for Instagram API.
Bothauthenticated andanonymous requests are supported.
Contribute to ensta and help revive the project for future updates and maintainance.
Read thepre-requisites here.
pip install ensta
Fetching profile info by username:
fromenstaimportMobilemobile=Mobile(username,password)profile=mobile.profile("leomessi")print(profile.full_name)print(profile.biography)print(profile.profile_pic_url)
These features use theMobile API.
Using Proxies
When to use a proxy:
- You're being rate limited.
- Ensta is not working because your Home IP is flagged.
- You're deploying Ensta to the cloud. (Instagram blocks requests from IPs of cloud providers, so a proxy must be used)
fromenstaimportMobilemobile=Mobile(username,password,proxy={"http":"socks5://username:password@host:port","https":"socks5://username:password@host:port" })
Ensta uses the same proxy settings as therequests module.
Username-Password Login
Username is recommended to sign in. However, email can also be used.
fromenstaimportMobile# Recommendedmobile=Mobile(username,password)# This also worksmobile=Mobile(email,password)
Change Profile Picture
fromenstaimportMobilemobile=Mobile(username,password)mobile.change_profile_picture("image.jpg")
Fetch Profile Information
fromenstaimportMobilemobile=Mobile(username,password)profile=mobile.profile("leomessi")print(profile.full_name)print(profile.biography)print(profile.follower_count)
Follow/Unfollow Account
fromenstaimportMobilemobile=Mobile(username,password)mobile.follow("leomessi")mobile.unfollow("leomessi")
Change Biography
fromenstaimportMobilemobile=Mobile(username,password)mobile.change_biography("New bio here.")
Switch to Private/Public Account
fromenstaimportMobilemobile=Mobile(username,password)mobile.switch_to_private_account()mobile.switch_to_public_account()
Username to UserID / UserID to Username
fromenstaimportMobilemobile=Mobile(username,password)mobile.username_to_userid("leomessi")mobile.userid_to_username("12345678")
Like/Unlike Post
fromenstaimportMobilemobile=Mobile(username,password)mobile.like(media_id)mobile.unlike(media_id)
Fetch Followers/Followings
fromenstaimportMobilemobile=Mobile(username,password)followers=mobile.followers("leomessi")followings=mobile.followings("leomessi")foruserinfollowers.list:print(user.full_name)foruserinfollowings.list:print(user.full_name)# Fetching next chunkfollowers=mobile.followers("leomessi",next_cursor=followers.next_cursor)
Add Comment to Post
fromenstaimportMobilemobile=Mobile(username,password)mobile.comment("Hello",media_id)
Upload Photo
fromenstaimportMobilemobile=Mobile(username,password)mobile.upload_photo(upload_id=upload_id,caption="Hello")
Upload Sidecar (Multiple Photos)
fromenstaimportMobilefromensta.structuresimportSidecarChildmobile=Mobile(username,password)mobile.upload_sidecar(children=[SidecarChild(uploda_id),SidecarChild(uploda_id),SidecarChild(uploda_id) ],caption="Hello")
Fetch Private Information (Yours)
fromenstaimportMobilemobile=Mobile(username,password)account=mobile.private_info()print(account.email)print(account.account_type)print(account.phone_number)
Update Display Name
fromenstaimportMobilemobile=Mobile(username,password)mobile.update_display_name("Lionel Messi")
Block/Unblock User
fromenstaimportMobilemobile=Mobile(username,password)mobile.block(123456789)# Use UserIDmobile.unblock(123456789)# Use UserID
Upload Story (Photo)
fromenstaimportMobilemobile=Mobile(username,password)upload_id=mobile.get_upload_id("image.jpg")mobile.upload_story(upload_id)
Upload Story (Photo) + Link Sticker
fromenstaimportMobilefromensta.structuresimportStoryLinkmobile=Mobile(username,password)upload_id=mobile.get_upload_id("image.jpg")mobile.upload_story(upload_id,entities=[StoryLink(title="Google",url="https://google.com")])
Send Message (Text)
fromenstaimportMobilemobile=Mobile(username,password)# Or use emaildirect=mobile.direct()direct.send_text("Hello",thread_id)
Send Message (Picture)
fromenstaimportMobilemobile=Mobile(username,password)# Or use emaildirect=mobile.direct()media_id=direct.fb_upload_image("image.jpg")direct.send_photo(media_id,thread_id)
Add Biography Link
fromenstaimportMobilemobile=Mobile(username,password)# Or use emaillink_id=mobile.add_bio_link(url="https://github.com/diezo",title="Diezo's GitHub")
Add Multiple Biography Links
fromenstaimportMobilefromensta.structuresimportBioLinkmobile=Mobile(username,password)# Or use emaillink_ids=mobile.add_bio_links([BioLink(url="https://example.com",title="Link 1"),BioLink(url="https://example.com",title="Link 2"),BioLink(url="https://example.com",title="Link 3")])
Remove Biography Link
fromenstaimportMobilemobile=Mobile(username,password)# Or use emailmobile.remove_bio_link(link_id)
Remove Multiple Biography Links
fromenstaimportMobilemobile=Mobile(username,password)# Or use emailmobile.remove_bio_links([link_id_1,link_id_2,link_id_3])
Clear All Biography Links
fromenstaimportMobilemobile=Mobile(username,password)# Or use emailmobile.clear_bio_links()
Features still using theWeb API:
Upload Reel
fromenstaimportWebhost=Web(username,password)video_id=host.upload_video_for_reel("Video.mp4",thumbnail="Thumbnail.jpg")host.pub_reel(video_id,caption="Enjoying the winter! ⛄")
Fetch Web Profile Data
fromenstaimportWebhost=Web(username,password)profile=host.profile("leomessi")print(profile.full_name)print(profile.biography)print(profile.follower_count)
Fetch Someone's Feed
fromenstaimportWebhost=Web(username,password)posts=host.posts("leomessi",100)# Want full list? Set count to '0'forpostinposts:print(post.caption_text)print(post.like_count)
Fetch Post's Likers
fromenstaimportWebhost=Web(username,password)post_id=host.get_post_id("https://www.instagram.com/p/Czr2yLmroCQ/")likers=host.likers(post_id)foruserinlikers.users:print(user.username)print(user.profile_picture_url)
They'll be migrated to theMobile API soon.
Important
TheWeb Class is deprecated and it's features are being migrated to theMobile Class. It'll be removed from Ensta upon completion.
Mobile Class (Authenticated)
Requires login, and has the most features.
fromenstaimportMobilemobile=Mobile(username,password)profile=mobile.profile("leomessi")print(profile.full_name)print(profile.biography)print(profile.profile_pic_url)
Guest Class (Non-Authenticated)
Doesn't require login, but has limited features.
fromenstaimportGuestguest=Guest()profile=guest.profile("leomessi")print(profile.biography)
Web Class (Authenticated)(Deprecated)
fromenstaimportWebhost=Web(username,password)profile=host.profile("leomessi")print(profile.biography)
Ask questions, discuss upcoming features and meet other developers.
Support me in the development of this project.
This is a third party library and not associated with Instagram. We're strictly against spam. You are liable for all the actions you take.
About
🔥 Fast & Reliable Python Package For Instagram API - 2024