Features
Tap on the headings to view code:
<details>
<summary>Using Proxies</summary><br>
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)
python
from ensta import Host
host = Host(
username,
password,
proxy={
"http": "socks5://username:passwordhost:port",
"https": "socks5://username:passwordhost:port"
}
)
Ensta uses the same proxy settings as the **requests** module.
</details>
<details>
<summary>Username-Password Login</summary><br>
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.
python
from ensta import Host
Recommended
host = Host(email, password)
This also works
host = Host(username, password)
</details>
<details>
<summary>SessionData Login</summary><br>
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.
python
from ensta import SessionHost
host = SessionHost(session_data)
</details>
<details>
<summary>2FA Login</summary><br>
**Authenticator App**
python
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.
</details>
<details>
<summary>Upload Photo (Single Post)</summary><br>
python
from ensta import Host
host = Host(username, password)
upload = host.get_upload_id("Picture.jpg")
host.upload_photo(upload, caption="Travelling 🌆")
</details>
<details>
<summary>Upload Multiple Photos (Single Post)</summary><br>
python
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 🌆")
</details>
<details>
<summary>Upload Reel</summary><br>
python
from ensta import Host
host = Host(username, password)
host.upload_reel(
video_path="Video.mp4",
thumbnail_path="Thumbnail.jpg",
caption="Enjoying the winter! ⛄"
)
</details>
<details>
<summary>Check Username Availability</summary><br>
python
from ensta import Guest
guest = Guest()
print(guest.username_availability("theusernameiwant"))
</details>
<details>
<summary>Fetch Profile Data</summary><br>
python
from ensta import Host
host = Host(username, password)
profile = host.profile("leomessi")
print(profile.full_name)
print(profile.biography)
print(profile.follower_count)
</details>
<details>
<summary>Username to UserID, and vice versa.</summary><br>
python
from ensta import Host
host = Host(username, password)
username = host.get_username(427553890)
uid = host.get_uid("leomessi")
print(username, uid)
</details>
<details>
<summary>Follow / Unfollow Users</summary><br>
python
from ensta import Host
host = Host(username, password)
print(host.follow("leomessi"))
print(host.unfollow("leomessi"))
</details>
<details>
<summary>Generate Followers / Followings List</summary><br>
python
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)
</details>
<details>
<summary>Switch Account Type - Public/Private</summary><br>
python
from ensta import Host
host = Host(username, password)
print(host.switch_to_public_account())
print(host.switch_to_private_account())
</details>
<details>
<summary>Fetch Someone's Feed</summary><br>
python
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)
</details>
<details>
<summary>Add Comment on Posts</summary><br>
python
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)
</details>
<details>
<summary>Like/Unlike Posts</summary><br>
python
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)
</details>
<details>
<summary>Fetch Post's Likers</summary><br>
python
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)
</details>
<details>
<summary>Change Profile Picture</summary><br>
python
from ensta import Mobile
mobile = Mobile(username, password)
mobile.change_profile_picture("image.jpg")
</details>
<details>
<summary>Edit Biography, Display Name</summary><br>
python
from ensta import Host
host = Host(username, password)
host.change_display_name("Lionel Messi")
host.change_bio("Athlete")
</details>
<details>
<summary>Fetch Your Email, Gender, Birthday, etc.</summary><br>
python
from ensta import Host
host = Host(username, password)
me = host.private_info()
print(me.email)
print(me.gender)
print(me.birthday)
</details>
<details>
<summary>Block/Unblock User</summary><br>
python
from ensta import Mobile
mobile = Mobile(username, password)
mobile.block(123456789) Use UserID
mobile.unblock(123456789) Use UserID
</details>
<details>
<summary>Upload Story (Photo)</summary>
python
from ensta import Mobile
mobile = Mobile(username, password)
upload_id = mobile.get_upload_id("image.jpg")
mobile.upload_story(upload_id)
</details>
<details>
<summary>Upload Story (Photo) + Link Sticker</summary>
python
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")
])
</details>
<details>
<summary>Send Message (Text)</summary>
python
from ensta import Mobile
mobile = Mobile(username, password) Or use email
direct = mobile.direct()
direct.send_text("Hello", thread_id)
</details>
<details>
<summary>Send Message (Picture)</summary>
python
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)
</details>