Package: ensta
Ensta - Free Instagram APIEnsta uses a combination of Instagram's Web API & Mobile API making it a reliable choice over other third-party libraries. Also unlike other libraries, ensta always stays up-to-date.Both authenticated & non-authenticated requests are supported.InstallationPython3.10or later is required.$pipinstallenstaSupported ActionsTap on the headings to view code:Proxy SupportfromenstaimportHosthost=Host(username,password,proxy={"http":"http://1.2.3.4","https":"https://1.2.3.4"})Username Password LoginfromenstaimportHosthost=Host(username,password)# Email can also be usedSessionData LoginfromenstaimportSessionHost# "session_data" is stored in "ensta-session.txt" file by default.# you can also get it using "host.session_data"host=SessionHost(session_data)2FA LoginAuthenticator AppfromenstaimportHost# The key you got from Instagram when setting up your Authenticator Appkey="R65I7XTTHNHTQ2NKMQL36NCWKNUPBSDG"host=Host(username,# or emailpassword,totp_token=key)SMS BasedNo need to configure anything. Ensta will automatically ask for SMS OTP in the runtime.Upload Photo (Single Post)fromenstaimportHosthost=Host(username,password)upload=host.get_upload_id("Picture.jpg")host.upload_photo(upload,caption="Travelling 🌆")Upload Multiple Photos (Single Post)fromenstaimportHosthost=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 ReelfromenstaimportHosthost=Host(username,password)host.upload_reel(video_path="Video.mp4",thumbnail_path="Thumbnail.jpg",caption="Enjoying the winter! ⛄")Check Username AvailabilityfromenstaimportGuestguest=Guest()print(guest.username_availability("theusernameiwant"))Fetch Profile DatafromenstaimportHosthost=Host(username,password)profile=host.profile("leomessi")print(profile.full_name)print(profile.biography)print(profile.follower_count)Username to UserID, and vice versa.fromenstaimportHosthost=Host(username,password)username=host.get_username(427553890)uid=host.get_uid("leomessi")print(username,uid)Follow / Unfollow UsersfromenstaimportHosthost=Host(username,password)print(host.follow("leomessi"))print(host.unfollow("leomessi"))Generate Followers / Followings ListfromenstaimportHosthost=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'foruserinfollowers:print(user.username)foruserinfollowings:print(user.username)Switch Account Type - Public/PrivatefromenstaimportHosthost=Host(username,password)print(host.switch_to_public_account())print(host.switch_to_private_account())Fetch Someone's FeedfromenstaimportHosthost=Host(username,password)posts=host.posts("leomessi",100)# Want full list? Set count to '0'forpostinposts:print(post.caption_text)print(post.like_count)Add Comment on PostsfromenstaimportHosthost=Host(username,password)post_id=host.get_post_id("https://www.instagram.com/p/Czr2yLmroCQ/")host.comment("Looks great!",post_id)Like/Unlike PostsfromenstaimportHosthost=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 LikersfromenstaimportHosthost=Host(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)Change Profile PicturefromenstaimportMobilemobile=Mobile(username,password)mobile.change_profile_picture("image.jpg")Edit Biography, Display NamefromenstaimportHosthost=Host(username,password)host.change_display_name("Lionel Messi")host.change_bio("Athlete")Fetch Your Email, Gender, Birthday, etc.fromenstaimportHosthost=Host(username,password)me=host.private_info()print(me.email)print(me.gender)print(me.birthday)Block/Unblock UserfromenstaimportMobilemobile=Mobile(username,password)mobile.block(123456789)# Use UserIDmobile.unblock(123456789)# Use UserIDAny missing feature? Please raise an issue.StoriesUpload Story (Picture)fromenstaimportMobilemobile=Mobile(username,password)upload_id=mobile.get_upload_id("image.jpg")mobile.upload_story(upload_id)Upload Story (Picture) + Link StickerfromenstaimportMobilefromensta.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")])Direct MessagingSend 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)Basic UsageHost Class(Authenticated)Requires login through username & password.fromenstaimportHosthost=Host(username,password)profile=host.profile("leomessi")print(profile.biography)Guest Class(Non-Authenticated)Doesn't require login, but has limited features.fromenstaimportGuestguest=Guest()profile=guest.profile("leomessi")print(profile.biography)Learn to use enstaDiscord CommunityAsk questions, discuss upcoming features and meet other developers.Support MeIf you wish to support my work, please consider visiting this link:PayPal:@gitdiezoContributorsLegalThis is a third party library and not associated with Instagram. We're strictly against spam. You are liable for all the actions you take.