Ensta

Latest version: v5.2.9

Safety actively analyzes 682404 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 11

5.2.9

> [!IMPORTANT]
> The **Web Class** is deprecated and it's features are being migrated to the **Mobile Class**. It'll be removed from Ensta upon completion.

Example
Fetching profile info by username:
python
from ensta import Mobile

mobile = Mobile(username, password)

profile = mobile.profile("leomessi")

print(profile.full_name)
print(profile.biography)
print(profile.profile_pic_url)


Features
These features use the **Mobile API**.

<details>

<summary>Using Proxies</summary><!--github-line-break--><br>

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)

python
from ensta import Mobile

mobile = Mobile(
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><!--github-line-break--><br>

Username is recommended to sign in. However, email can also be used.

python
from ensta import Mobile

Recommended
mobile = Mobile(username, password)

This also works
mobile = Mobile(email, password)


</details>

<details>

<summary>Change Profile Picture</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.change_profile_picture("image.jpg")


</details>

<details>

<summary>Fetch Profile Information</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

profile = mobile.profile("leomessi")

print(profile.full_name)
print(profile.biography)
print(profile.follower_count)


</details>

<details>

<summary>Follow/Unfollow Account</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.follow("leomessi")
mobile.unfollow("leomessi")


</details>

<details>

<summary>Change Biography</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.change_biography("New bio here.")


</details>

<details>

<summary>Switch to Private/Public Account</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.switch_to_private_account()
mobile.switch_to_public_account()


</details>

<details>

<summary>Username to UserID / UserID to Username</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.username_to_userid("leomessi")
mobile.userid_to_username("12345678")


</details>

<details>

<summary>Like/Unlike Post</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.like(media_id)
mobile.unlike(media_id)


</details>

<details>

<summary>Fetch Followers/Followings</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

followers = mobile.followers("leomessi")
followings = mobile.followings("leomessi")

for user in followers.list:
print(user.full_name)

for user in followings.list:
print(user.full_name)

Fetching next chunk
followers = mobile.followers(
"leomessi",
next_cursor=followers.next_cursor
)


</details>

<details>

<summary>Add Comment to Post</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.comment("Hello", media_id)


</details>

<details>

<summary>Upload Photo</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.upload_photo(
upload_id=upload_id,
caption="Hello"
)


</details>

<details>

<summary>Upload Sidecar (Multiple Photos)</summary><!--github-line-break--><br>

python
from ensta import Mobile
from ensta.structures import SidecarChild

mobile = Mobile(username, password)

mobile.upload_sidecar(
children=[
SidecarChild(uploda_id),
SidecarChild(uploda_id),
SidecarChild(uploda_id)
],
caption="Hello"
)


</details>

<details>

<summary>Fetch Private Information (Yours)</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

account = mobile.private_info()

print(account.email)
print(account.account_type)
print(account.phone_number)


</details>

<details>

<summary>Update Display Name</summary><!--github-line-break--><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.update_display_name("Lionel Messi")


</details>

<details>

<summary>Block/Unblock User</summary><!--github-line-break--><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>

<details>

<summary>Add Biography Link</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

link_id = mobile.add_bio_link(
url="https://github.com/diezo",
title="Diezo's GitHub"
)


</details>

<details>

<summary>Add Multiple Biography Links</summary>

python
from ensta import Mobile
from ensta.structures import BioLink

mobile = Mobile(username, password) Or use email

link_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")
])


</details>

<details>

<summary>Remove Biography Link</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.remove_bio_link(link_id)


</details>

<details>

<summary>Remove Multiple Biography Links</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.remove_bio_links([
link_id_1,
link_id_2,
link_id_3
])


</details>

<details>

<summary>Clear All Biography Links</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.clear_bio_links()


</details>

Deprecated Features (Web API)
Features still using the **Web API**:

<details>

<summary>Upload Reel</summary><!--github-line-break--><br>

python
from ensta import Web

host = Web(username, password)

video_id = host.upload_video_for_reel("Video.mp4", thumbnail="Thumbnail.jpg")

host.pub_reel(
video_id,
caption="Enjoying the winter! ⛄"
)


</details>

<details>

<summary>Fetch Web Profile Data</summary><!--github-line-break--><br>

python
from ensta import Web

host = Web(username, password)
profile = host.profile("leomessi")

print(profile.full_name)
print(profile.biography)
print(profile.follower_count)


</details>

<details>

<summary>Fetch Someone's Feed</summary><!--github-line-break--><br>

python
from ensta import Web

host = Web(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>Fetch Post's Likers</summary><!--github-line-break--><br>

python
from ensta import Web

host = Web(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>

**Full Changelog**: https://github.com/diezo/Ensta/compare/v5.2.7...v5.2.9

5.2.7

> [!IMPORTANT]
> The **Web Class** is deprecated and it's features are being migrated to the **Mobile Class**. It'll be removed from Ensta upon completion.

Example
Fetching profile info by username:

python
from ensta import Mobile

mobile = Mobile(username, password)

profile = mobile.profile("leomessi")

print(profile.full_name)
print(profile.biography)
print(profile.profile_pic_url)


Features
These features use the **Mobile API**.

<details>

<summary>Using Proxies</summary><br>

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)

python
from ensta import Mobile

mobile = Mobile(
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>

Username is recommended to sign in. However, email can also be used.

python
from ensta import Mobile

Recommended
mobile = Mobile(username, password)

This also works
mobile = Mobile(email, password)


</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>Fetch Profile Information</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

profile = mobile.profile("leomessi")

print(profile.full_name)
print(profile.biography)
print(profile.follower_count)


</details>

<details>

<summary>Follow/Unfollow Account</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.follow("leomessi")
mobile.unfollow("leomessi")


</details>

<details>

<summary>Change Biography</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.change_biography("New bio here.")


</details>

<details>

<summary>Switch to Private/Public Account</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.switch_to_private_account()
mobile.switch_to_public_account()


</details>

<details>

<summary>Username to UserID / UserID to Username</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.username_to_userid("leomessi")
mobile.userid_to_username("12345678")


</details>

<details>

<summary>Like/Unlike Post</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.like(media_id)
mobile.unlike(media_id)


</details>

<details>

<summary>Fetch Followers/Followings</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

followers = mobile.followers("leomessi")
followings = mobile.followings("leomessi")

for user in followers.list:
print(user.full_name)

for user in followings.list:
print(user.full_name)

Fetching next chunk
followers = mobile.followers(
"leomessi",
next_cursor=followers.next_cursor
)


</details>

<details>

<summary>Add Comment to Post</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.comment("Hello", media_id)


</details>

<details>

<summary>Upload Photo</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.upload_photo(
upload_id=upload_id,
caption="Hello"
)


</details>

<details>

<summary>Upload Sidecar (Multiple Photos)</summary><br>

python
from ensta import Mobile
from ensta.structures import SidecarChild

mobile = Mobile(username, password)

mobile.upload_sidecar(
children=[
SidecarChild(uploda_id),
SidecarChild(uploda_id),
SidecarChild(uploda_id)
],
caption="Hello"
)


</details>

<details>

<summary>Fetch Private Information (Yours)</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

account = mobile.private_info()

print(account.email)
print(account.account_type)
print(account.phone_number)


</details>

<details>

<summary>Update Display Name</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.update_display_name("Lionel Messi")


</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>

<details>

<summary>Add Biography Link</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

link_id = mobile.add_bio_link(
url="https://github.com/diezo",
title="Diezo's GitHub"
)


</details>

<details>

<summary>Add Multiple Biography Links</summary>

python
from ensta import Mobile
from ensta.structures import BioLink

mobile = Mobile(username, password) Or use email

link_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")
])


</details>

<details>

<summary>Remove Biography Link</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.remove_bio_link(link_id)


</details>

<details>

<summary>Remove Multiple Biography Links</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.remove_bio_links([
link_id_1,
link_id_2,
link_id_3
])


</details>

<details>

<summary>Clear All Biography Links</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.clear_bio_links()


</details>

Deprecated Features (Web API)

<details>

<summary>Upload Reel</summary><br>

python
from ensta import Web

host = Web(username, password)

video_id = host.upload_video_for_reel("Video.mp4", thumbnail="Thumbnail.jpg")

host.pub_reel(
video_id,
caption="Enjoying the winter! ⛄"
)


</details>

<details>

<summary>Fetch Web Profile Data</summary><br>

python
from ensta import Web

host = Web(username, password)
profile = host.profile("leomessi")

print(profile.full_name)
print(profile.biography)
print(profile.follower_count)


</details>

<details>

<summary>Fetch Someone's Feed</summary><br>

python
from ensta import Web

host = Web(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>Fetch Post's Likers</summary><br>

python
from ensta import Web

host = Web(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>

**Full Changelog**: https://github.com/diezo/Ensta/compare/v5.2.6...v5.2.7

5.2.6

Example
Fetching profile info by username:

python
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)


<!-- Bypass IP Restrictions
If you're being rate limited when using Ensta on your home network or Ensta doesn't work when you deploy your app to the cloud, you should consider using a reputed proxy. Here's how to do that:
1. Visit [abcproxy](https://www.abcproxy.com/?code=O4H3OC0O) and apply coupon O4H3OC0O for additional discount.
2. Buy a residential SOCKS5 proxy there.
3. Configure Ensta to use that proxy. See the [**Supported Actions**](https://github.com/diezo/ensta?tab=readme-ov-file#supported-actions) section.-->

Features
These features use the **Mobile API**.

<details>

<summary>Using Proxies</summary><br>

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)

python
from ensta import Mobile

mobile = Mobile(
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>

Username is recommended to sign in. However, email can also be used.

python
from ensta import Mobile

Recommended
mobile = Mobile(username, password)

This also works
mobile = Mobile(email, password)


</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>Fetch Profile Information</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

profile = mobile.profile("leomessi")

print(profile.full_name)
print(profile.biography)
print(profile.follower_count)


</details>

<details>

<summary>Follow/Unfollow Account</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.follow("leomessi")
mobile.unfollow("leomessi")


</details>

<details>

<summary>Change Biography</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.change_biography("New bio here.")


</details>

<details>

<summary>Switch to Private/Public Account</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.switch_to_private_account()
mobile.switch_to_public_account()


</details>

<details>

<summary>Username to UserID / UserID to Username</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.username_to_userid("leomessi")
mobile.userid_to_username("12345678")


</details>

<details>

<summary>Like/Unlike Post</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.like(media_id)
mobile.unlike(media_id)


</details>

<details>

<summary>Fetch Followers/Followings</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

followers = mobile.followers("leomessi")
followings = mobile.followings("leomessi")

for user in followers.list:
print(user.full_name)

for user in followings.list:
print(user.full_name)

Fetching next chunk
followers = mobile.followers(
"leomessi",
next_cursor=followers.next_cursor
)


</details>

<details>

<summary>Add Comment to Post</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.comment("Hello", media_id)


</details>

<details>

<summary>Upload Photo</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.upload_photo(
upload_id=upload_id,
caption="Hello"
)


</details>

<details>

<summary>Upload Sidecar (Multiple Photos)</summary><br>

python
from ensta import Mobile
from ensta.structures import SidecarChild

mobile = Mobile(username, password)

mobile.upload_sidecar(
children=[
SidecarChild(uploda_id),
SidecarChild(uploda_id),
SidecarChild(uploda_id)
],
caption="Hello"
)


</details>

<details>

<summary>Fetch Private Information (Yours)</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

account = mobile.private_info()

print(account.email)
print(account.account_type)
print(account.phone_number)


</details>

<details>

<summary>Update Display Name</summary><br>

python
from ensta import Mobile

mobile = Mobile(username, password)

mobile.update_display_name("Lionel Messi")


</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>

<details>

<summary>Add Biography Link</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

link_id = mobile.add_bio_link(
url="https://github.com/diezo",
title="Diezo's GitHub"
)


</details>

<details>

<summary>Add Multiple Biography Links</summary>

python
from ensta import Mobile
from ensta.structures import BioLink

mobile = Mobile(username, password) Or use email

link_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")
])


</details>

<details>

<summary>Remove Biography Link</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.remove_bio_link(link_id)


</details>

<details>

<summary>Remove Multiple Biography Links</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.remove_bio_links([
link_id_1,
link_id_2,
link_id_3
])


</details>

<details>

<summary>Clear All Biography Links</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.clear_bio_links()


</details>

Deprecated Features (Web API)

<details>

<summary>Upload Reel</summary><br>

python
from ensta import Host

host = Host(username, password)

video_id = host.upload_video_for_reel("Video.mp4", thumbnail="Thumbnail.jpg")

host.pub_reel(
video_id,
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>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>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>

5.2.5

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.upload_image("Picture.jpg")

host.pub_photo(upload, caption="Travelling 🌆")


</details>

<details>

<summary>Upload Multiple Medias (Single Post)</summary><br>

python
from ensta import Host

host = Host(username, password)

upload1 = host.upload_image("First.jpg")
upload2 = host.upload_image("Second.jpg")
upload3 = host.upload_video_for_carousel("Video.mp4", thumbnail="Thumbnail.jpg")

host.pub_carousel([upload1, upload2, upload3], caption="Travelling 🌆")


</details>

<details>

<summary>Upload Reel</summary><br>

python
from ensta import Host

host = Host(username, password)

video_id = host.upload_video_for_reel("Video.mp4", thumbnail="Thumbnail.jpg")

host.pub_reel(
video_id,
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>

<details>

<summary>Add Biography Link</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

link_id = mobile.add_bio_link(
url="https://github.com/diezo",
title="Diezo's GitHub"
)


</details>

<details>

<summary>Add Multiple Biography Links</summary>

python
from ensta import Mobile
from ensta.structures import BioLink

mobile = Mobile(username, password) Or use email

link_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")
])


</details>

<details>

<summary>Remove Biography Link</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.remove_bio_link(link_id)


</details>

<details>

<summary>Remove Multiple Biography Links</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.remove_bio_links([
link_id_1,
link_id_2,
link_id_3
])


</details>

<details>

<summary>Clear All Biography Links</summary>

python
from ensta import Mobile

mobile = Mobile(username, password) Or use email

mobile.clear_bio_links()


</details>

5.2.4

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>

5.2.3

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>

Page 1 of 11

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.