🔥 Fastest & Simplest Python Package For Instagram Automation
Project description
Ensta - Simple Instagram API
Ensta is a simple, reliable and up-to-date python package for Instagram API.
Both authenticated and anonymous requests are supported.
Installation
Python 3.10 or later is required.
pip install ensta
Example
Fetching profile info by username:
from ensta import Host
host = Host(username, password)
profile = host.profile("leomessi")
print(profile.biography)
print(profile.is_private)
print(profile.profile_picture_url_hd)
Features
Tap on the headings to view code:
Using Proxies
When you should use a proxy:
- You're being rate limited when using the Guest Class.
- 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)
from ensta import Host
host = Host(
username,
password,
proxy={
"http": "socks5://username:password@host:port",
"https": "socks5://username:password@host:port"
}
)
Ensta uses the same proxy settings as the requests module.
Username-Password Login
We recommend using your email address to sign in. But if you have multiple accounts created on the same email address, you may consider using your username instead.
from ensta import Host
# Recommended
host = Host(email, password)
# This also works
host = Host(username, password)
SessionData Login
Ensta will automatically save your login session in a file named ensta-session.json
and reuse it until it expires.
But, if you wish to load a session manually, you can use the SessionHost Class instead of Host Class by passing your session data (which is stored inside ensta-session.json
) as a string.
from ensta import SessionHost
host = SessionHost(session_data)
2FA Login
Authenticator App
from ensta import Host
# The key you got from Instagram when setting up your Authenticator App
key = "R65I7XTTHNHTQ2NKMQL36NCWKNUPBSDG"
host = Host(
username, # or email
password,
totp_token=key
)
SMS Based: Ensta will prompt you for the OTP in the runtime.
Upload Photo (Single Post)
from ensta import Host
host = Host(username, password)
upload = host.get_upload_id("Picture.jpg")
host.upload_photo(upload, caption="Travelling 🌆")
Upload Multiple Photos (Single Post)
from ensta import Host
host = Host(username, password)
upload1 = host.get_upload_id("First.jpg")
upload2 = host.get_upload_id("Second.jpg")
upload3 = host.get_upload_id("Third.jpg")
host.upload_photos([upload1, upload2, upload3], caption="Travelling 🌆")
Upload Reel
from ensta import Host
host = Host(username, password)
host.upload_reel(
video_path="Video.mp4",
thumbnail_path="Thumbnail.jpg",
caption="Enjoying the winter! ⛄"
)
Check Username Availability
from ensta import Guest
guest = Guest()
print(guest.username_availability("theusernameiwant"))
Fetch Profile Data
from ensta import Host
host = Host(username, password)
profile = host.profile("leomessi")
print(profile.full_name)
print(profile.biography)
print(profile.follower_count)
Username to UserID, and vice versa.
from ensta import Host
host = Host(username, password)
username = host.get_username(427553890)
uid = host.get_uid("leomessi")
print(username, uid)
Follow / Unfollow Users
from ensta import Host
host = Host(username, password)
print(host.follow("leomessi"))
print(host.unfollow("leomessi"))
Generate Followers / Followings List
from ensta import Host
host = Host(username, password)
followers = host.followers("leomessi", count=100) # Want full list? Set count to '0'
followings = host.followings("leomessi", count=100) # Want full list? Set count to '0'
for user in followers:
print(user.username)
for user in followings:
print(user.username)
Switch Account Type - Public/Private
from ensta import Host
host = Host(username, password)
print(host.switch_to_public_account())
print(host.switch_to_private_account())
Fetch Someone's Feed
from ensta import Host
host = Host(username, password)
posts = host.posts("leomessi", 100) # Want full list? Set count to '0'
for post in posts:
print(post.caption_text)
print(post.like_count)
Add Comment on Posts
from ensta import Host
host = Host(username, password)
post_id = host.get_post_id("https://www.instagram.com/p/Czr2yLmroCQ/")
host.comment("Looks great!", post_id)
Like/Unlike Posts
from ensta import Host
host = Host(username, password)
post_id = host.get_post_id("https://www.instagram.com/p/Czr2yLmroCQ/")
host.like(post_id)
host.unlike(post_id)
Fetch Post's Likers
from ensta import Host
host = Host(username, password)
post_id = host.get_post_id("https://www.instagram.com/p/Czr2yLmroCQ/")
likers = host.likers(post_id)
for user in likers.users:
print(user.username)
print(user.profile_picture_url)
Change Profile Picture
from ensta import Mobile
mobile = Mobile(username, password)
mobile.change_profile_picture("image.jpg")
Edit Biography, Display Name
from ensta import Host
host = Host(username, password)
host.change_display_name("Lionel Messi")
host.change_bio("Athlete")
Fetch Your Email, Gender, Birthday, etc.
from ensta import Host
host = Host(username, password)
me = host.private_info()
print(me.email)
print(me.gender)
print(me.birthday)
Block/Unblock User
from ensta import Mobile
mobile = Mobile(username, password)
mobile.block(123456789) # Use UserID
mobile.unblock(123456789) # Use UserID
Upload Story (Photo)
from ensta import Mobile
mobile = Mobile(username, password)
upload_id = mobile.get_upload_id("image.jpg")
mobile.upload_story(upload_id)
Upload Story (Photo) + Link Sticker
from ensta import Mobile
from ensta.structures import StoryLink
mobile = 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)
from ensta import Mobile
mobile = Mobile(username, password) # Or use email
direct = mobile.direct()
direct.send_text("Hello", thread_id)
Send Message (Picture)
from ensta import Mobile
mobile = Mobile(username, password) # Or use email
direct = mobile.direct()
media_id = direct.fb_upload_image("image.jpg")
direct.send_photo(media_id, thread_id)
Supported Classes
Host Class (Authenticated)
Requires login, and has many features.
from ensta import Host
host = Host(username, password)
profile = host.profile("leomessi")
print(profile.biography)
Guest Class (Non-Authenticated)
Doesn't require login, but has limited features.
from ensta import Guest
guest = Guest()
profile = guest.profile("leomessi")
print(profile.biography)
Discord Community
Ask questions, discuss upcoming features and meet other developers.
Support Me
Wish to support this project? Please consider buying me a coffee here:
Contributors
Disclaimer
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ensta-5.2.1.tar.gz
.
File metadata
- Download URL: ensta-5.2.1.tar.gz
- Upload date:
- Size: 44.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0600d92941e04692881816dae7b5df4c2a8d34734659651829842c6a92a2922f |
|
MD5 | e6d98f1f4d353c6c6f30392a960b7bcd |
|
BLAKE2b-256 | 2e3a6557150e01d415dbc3f857e0a2608e4c243ae8b7011e8ac9aeba0801038f |
Provenance
File details
Details for the file ensta-5.2.1-py3-none-any.whl
.
File metadata
- Download URL: ensta-5.2.1-py3-none-any.whl
- Upload date:
- Size: 56.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3b514f2e544751428d9ae31eeeb2a4822c9af04db794bd67a60006ee69108ea |
|
MD5 | 7eae900cc142f07140763fd4b9775829 |
|
BLAKE2b-256 | b3fa0988cd167ca5aba8f9eac900eeb4a77c9b33f6ee79e9a12a20866bc4482a |