Si vous souhaitez travailler avec Instagrapi (int�r�ts commerciaux), nous vous conseillons fortement de pr�f�rer HikerAPI projet. Cependant, vous n�aurez pas besoin de passer des semaines, voire des mois, � le mettre en place. Le meilleur service disponible aujourd'hui est HikerAPI4, qui traite 4�5 millions de demandes quotidiennes, fournit une assistance 24 heures sur 24 et offre aux partenaires un tarif sp�cial. Dans de nombreux cas, nos clients ont essay� d��conomiser de l�argent et ont pr�f�r� les instagrapi, mais d�apr�s notre exp�rience, ils y sont finalement revenus HikerAPI apr�s avoir pass� beaucoup plus de temps et d'argent. Il sera difficile de trouver de bons comptes, de bons mandataires ou de r�soudre des d�fis, et IG interdira vos comptes.

Les instagrapi sont plus adapt�s aux tests ou � la recherche qu'une entreprise en activit� !

? aiograpi - Biblioth�que Python asynchrone pour Instagram Private API ?

Nous vous recommandons d'utiliser nos services :
LamaTok pour l'API TikTok ??
HikerAPI pour l'API Instagram ???
DataLikers pour les ensembles de donn�es Instagram ??
Package PyPI PyPI - Python Version Checked with mypy

Caract�ristiques:

Obtenir des donn�es publiques sur les utilisateurs, les publications, les histoires, les faits saillants, les abonn�s et les utilisateurs suivants
Obtenir un e-mail et un num�ro de t�l�phone publics, si l'utilisateur les a sp�cifi�s dans son profil professionnel
Obtenir des donn�es publiques sur les donn�es post, story, album, Reels, IGTV et la possibilit� de t�l�charger du contenu
Obtenir des donn�es publiques sur les donn�es de hashtag et de localisation, ainsi qu'une liste de publications pour celles-ci
Obtenir des donn�es publiques sur tous les commentaires sur une publication et une liste des utilisateurs qui l'ont appr�ci�e
Gestion de serveurs proxy, appareils mobiles et r�solveur de d�fis
Connexion par nom d'utilisateur et mot de passe, sessionid et support 2FA
Gestion des messages et des fils de discussion pour Direct et attacher des fichiers
T�l�chargez et t�l�chargez une photo, une vid�o, un IGTV, des bobines, des albums et des histoires
Travaillez avec les utilisateurs, les publications, les commentaires, les informations, les collections, l'emplacement et le hashtag
Aper�us par compte, publications et histoires
Comme suivre, commenter, modifier le compte (Bio) et bien plus encore
instagrapi - API Instagram non officielle pour Python
Wrapper API priv� Instagram rapide et efficace (public+requests priv�s et r�solveur de d�fis) sans s�l�nium. Utilisez la version la plus r�cente de l'API d'Instagram, obtenue gr�ce � la r�tro-ing�nierie avec Charles Proxy et Proxyman'.

API Instagram valable pour 16 d�cembre 2023 (dernier contr�le de r�tro-ing�nierie)

Soutien Python >= 3.9

Pour toute autre langue (par exemple. C++, C#, F#, D, Golang, Erlang, Elixir, Nim, Haskell, Lisp, Closure, Julia, R, Java, Kotlin, Scala, OCaml, JavaScript, Crystal, Ruby, Rust, Rapide, Objective-C, Visual Basic,.NET, Pascal, Perl, Lua, PHP et autres), je sugg�re d'utiliser repos instagrapi

Chat de support dans Telegram  et Discussions GitHub

Caract�ristiques
Effectue Api Web ou Api mobile demandes en fonction de la situation (pour �viter les limites Instagram)
Connexion par nom d'utilisateur et mot de passe, y compris 2FA et par sessionid (et utilise plut�t l'en-t�te Authorization Cookies)
D�fi R�solveur ayez des gestionnaires de courriels et de SMS
Soutien t�l�charger une photo, une vid�o, IGTV, des bobines, des albums et des histoires
Travail de soutien avec Utilisateur, M�dias, Commentaire, Aper�us, Collections, Emplacement (Lieu), Hashtag et Message direct objets
Comme, Suivre, Modifier le compte (Bio) et bien plus encore
Aper�us par compte, publications et histoires
Construire des histoires avec arri�re-plan personnalis�, animation de police, autocollant de lien et utilisateurs de mentions
Dans la prochaine version, l'enregistrement du compte et le passage du captcha appara�tront
Exemples d'applications qui utilisent instagrapi
Telegram Bot pour t�l�charger des articles, des histoires et des faits saillants
Installation
pip installez instagrapi
Utilisation de base
de instagrapi importation Client

cl = Client()
cl'.login(COMPTE_NOM D'UTILISATEUR, COMPTE_MOT DE PASSE)

utilisateur_id = cl'.utilisateur_id_from_username(COMPTE_NOM D'UTILISATEUR)
m�dias = cl'.utilisateur_medias(utilisateur_id, 20)
Exemple suppl�mentaire
Documentation
Index
D�marrage
Guide d'utilisation
Interactions
M�dias - Publication (�galement appel�e post) : Photo, Vid�o, Album, IGTV et Reels
Ressource - Partie de Media (pour les albums)
M�dias int�gr�s - Version courte des m�dias
Compte - Informations priv�es compl�tes pour votre compte (par exemple, e-mail, num�ro de t�l�phone_num�ro)
TOTP - Les assistants TOTP 2 FA (g�n�rer la graine, activer/d�sactiver TOTP, g�n�rer du code en tant qu'authentificateur Google)
Utilisateur - Donn�es utilisateur publiques compl�tes
UserShort - Donn�es utilisateur publiques courtes (utilis�es dans Usertag, Comment, Media, Direct Message)
Balise utilisateur - Utilisateur de balises dans les m�dias (coordonn�es + UserShort)
Emplacement - Emplacement GEO (coordonn�es GEO, nom, adresse)
Hashtag - Objet Hashtag (identifiant, nom, image)
Collection - Collection de m�dias (nom, photo et liste des m�dias)
Commentaire - Commentaires aux m�dias
Souligner - Faits saillants
Remarques - Remarques
Histoire - Histoire
Lien d'histoire - Autocollant de lien
HistoireLieu - Emplacement de l'�tiquette dans l'histoire (sous forme d'autocollant)
HistoireMention - Mentionnez les utilisateurs dans Story (utilisateur, coordonn�es et dimensions)
HistoireHashtag - Hashtag pour l'histoire (comme autocollant)
Autocollant d'histoire - Tag autocollant � l'histoire (par exemple de giphy)
StoryBuild - Constructeur d'histoires retournez le chemin vers la photo/vid�o et mentionnez les coordonn�es
Fil direct - Thread (sujet) avec messages en message direct
Message direct - Message en message direct
Perspicacit� - Aper�us pour un message
Piste - Piste musicale (pour rouleaux/clips)
Pratiques exemplaires
Guide de d�veloppement
G�rer les exceptions
D�fi R�solveur
Exceptions

---------------
instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
instagrapi
Nous vous recommandons d'utiliser nos services :
LamaTok pour l'API TikTok ??
HikerAPI pour l'API Instagram ???
DataLikers pour les ensembles de donn�es Instagram ??
Package PyPI PyPI - Python Version

Wrapper API priv� Instagram rapide et efficace (public+requ�tes priv�es et r�solveur de d�fis). Utilisez la version la plus r�cente de l'API d'Instagram, obtenue � l'aide de r�tro-ing�nierie avec Charles Proxy et Proxyman'.

API Instagram valable pour 16 d�cembre 2023 (dernier contr�le de r�tro-ing�nierie)

Soutien Python >= 3.9

Pour toute autre langue (par exemple. C++, C#, F#, D, Golang, Erlang, Elixir, Nim, Haskell, Lisp, Closure, Julia, R, Java, Kotlin, Scala, OCaml, JavaScript, Crystal, Ruby, Rust, Rapide, Objective-C, Visual Basic,.NET, Pascal, Perl, Lua, PHP et autres), je sugg�re d'utiliser repos instagrapi

Chat de support dans Telegram  et Discussions GitHub

Caract�ristiques
Effectue Api publique (web, anonyme) ou Api priv�e (application mobile, autoris�e) demandes en fonction de la situation (pour �viter les limites Instagram)
Connexion par nom d'utilisateur et mot de passe, y compris 2FA et par sessionid
D�fi R�solveur ayez des gestionnaires de courriels et de SMS
Soutien t�l�charger une photo, une vid�o, IGTV, des bobines, des albums et des histoires
Travail de soutien avec Utilisateur, M�dias, Commentaire, Aper�us, Collections, Emplacement (Lieu), Hashtag et Message direct objets
Comme, Suivre, Modifier le compte (Bio) et bien plus encore
Aper�us par compte, publications et histoires
Construire des histoires avec un arri�re-plan personnalis�, une animation de police, faites glisser le lien vers le haut et mentionnez les utilisateurs
Dans la prochaine version, l'enregistrement du compte et le passage du captcha appara�tront
Exemple
Utilisation de base
de instagrapi importation Client

cl = Client()
cl'.login(COMPTE_NOM D'UTILISATEUR, COMPTE_MOT DE PASSE)

utilisateur_id = cl'.utilisateur_id_from_username("exemple")
m�dias = cl'.utilisateur_medias(utilisateur_id, 20)
L'exemple complet
de instagrapi importation Client
de instagrapi.types importation HistoireMention, HistoireM�dia, Lien d'histoire, HistoireHashtag

cl = Client()
cl'.login(NOM D'UTILISATEUR, MOT DE PASSE, v�rification_code="<2FA CODE ICI>")

media_pk = cl.media_pk_from_url('https://www.instagram.com/p/CGgDsi7JQdS/')
media_path = cl.video_download(media_pk)
example = cl.user_info_by_username('example')
hashtag = cl.hashtag_info('dhbastards')

cl.video_upload_to_story(
    media_path,
    "Credits @example",
    mentions=[StoryMention(user=example, x=0.49892962, y=0.703125, width=0.8333333333333334, height=0.125)],
    links=[StoryLink(webUri='https://github.com/subzeroid/instagrapi')],
    hashtags=[StoryHashtag(hashtag=hashtag, x=0.23, y=0.32, width=0.5, height=0.22)],
    medias=[StoryMedia(media_pk=media_pk, x=0.5, y=0.5, width=0.6, height=0.8)]
)
Requests
Public (anonymous request via web api) methods have a suffix _gql (Instagram GraphQL) or _a1 (example https://www.instagram.com/example/?__a=1)
Private (authorized request via mobile api) methods have _v1 suffix
The first request to fetch media/user is public (anonymous), if instagram raise exception, then use private (authorized). Example (pseudo-code):

def media_info(media_pk):
    try:
        return self.media_info_gql(media_pk)
    except ClientError as e:
        # Restricted Video: This video is not available in your country.
        # Or media from private account
        return self.media_info_v1(media_pk)
Detailed Documentation
To learn more about the various ways instagrapi can be used, read the Usage Guide page.

Getting Started
Usage Guide
Interactions
Media - Publication (also called post): Photo, Video, Album, IGTV and Reels
Resource - Part of Media (for albums)
MediaOembed - Short version of Media
Account - Full private info for your account (e.g. email, phone_number)
TOTP - 2FA TOTP helpers (generate seed, enable/disable TOTP, generate code as Google Authenticator)
User - Full public user data
UserShort - Short public user data (used in Usertag, Comment, Media, Direct Message)
Usertag - Tag user in Media (coordinates + UserShort)
Location - GEO location (GEO coordinates, name, address)
Hashtag - Hashtag object (id, name, picture)
Collection - Collection of medias (name, picture and list of medias)
Comment - Comments to Media
Highlight - Highlights
�Notes� - Notes
Story - Story
StoryLink - Link (Swipe up)
StoryLocation - Tag Location in Story (as sticker)
StoryMention - Mention users in Story (user, coordinates and dimensions)
StoryHashtag - Hashtag for story (as sticker)
StorySticker - Tag sticker to story (for example from giphy)
StoryBuild - StoryBuilder return path to photo/video and mention co-ordinates
DirectThread - Thread (topic) with messages in Direct Message
DirectMessage - Message in Direct Message
Insight - Insights for a post
Track - Music track (for Reels/Clips)
Best Practices
Development Guide
Handle Exceptions
Challenge Resolver
Exceptions

----------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
D�marrage
Installation
Pour installer instagrapi, ex�cutez simplement cette commande simple dans le terminal de votre choix :

python -m pip installer instagrapi
Introduction
instagrapi est un wrapper d'API priv� Instagram rapide et efficace (demandes publiques+priv�es et r�solveur de d�fis). Utilisez la version la plus r�cente de l'API d'Instagram, obtenue � l'aide de r�tro-ing�nierie avec Charles Proxy et Proxyman'.

Quelle est la prochaine �tape ?
Guide d'utilisation
Interactions
G�rer les exceptions
D�fi R�solveur
Exceptions

--------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Guide d'utilisation
Cette section fournit des descriptions d�taill�es de toutes les fa�ons instagrapi peut �tre utilis�. Si vous �tes nouveau � instagrapi, le D�marrage page propose une introduction progressive des fonctionnalit�s de base avec des exemples.

Demandes publiques ou priv�es
Public (demande anonyme via web api) les m�thodes ont un suffixe _gql (Instagramme GraphQL) ou _a1 (exemple https://www.instagram.com/example/?__a=1)
Priv� (demande autoris�e via l'api mobile) m�thodes ont _v1 suffixe
La premi�re demande de r�cup�ration du m�dia/utilisateur est public (anonyme), si instagram l�ve l'exception, alors utilisez priv� (autoris�).

Sections d�taill�es
Index
D�marrage
Interactions
M�dias - Publication (�galement appel�e post) : Photo, Vid�o, Album, IGTV et Reels
Ressource - Partie de Media (pour les albums)
M�dias int�gr�s - Version courte des m�dias
Compte - Informations priv�es compl�tes pour votre compte (par exemple, e-mail, num�ro de t�l�phone_num�ro)
Utilisateur - Donn�es utilisateur publiques compl�tes
UserShort - Donn�es utilisateur publiques courtes (utilis�es dans Usertag, Comment, Media, Direct Message)
Balise utilisateur - Utilisateur de balises dans les m�dias (coordonn�es + UserShort)
Emplacement - Emplacement GEO (coordonn�es GEO, nom, adresse)
Hashtag - Objet Hashtag (identifiant, nom, image)
Collection - Collection de m�dias (nom, photo et liste des m�dias)
Commentaire - Commentaires aux m�dias
Souligner - Faits saillants
Histoire - Histoire
Lien d'histoire - Lien (Swipe up)
HistoireLieu - Emplacement de l'�tiquette dans l'histoire (sous forme d'autocollant)
HistoireMention - Mentionnez les utilisateurs dans Story (utilisateur, coordonn�es et dimensions)
HistoireHashtag - Hashtag pour l'histoire (comme autocollant)
Autocollant d'histoire - Tag autocollant � l'histoire (par exemple de giphy)
StoryBuild - Constructeur d'histoires retournez le chemin vers la photo/vid�o et mentionnez les coordonn�es
Fil direct - Thread (sujet) avec messages en message direct
Message direct - Message en message direct
Perspicacit� - Aper�us pour un message
Piste - Piste musicale (pour rouleaux/clips)
Pratiques exemplaires
Guide de d�veloppement
G�rer les exceptions
Exceptions
---------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Interactions
instagrapi fournit divers types de Interactions cela peut �tre utilis� pour contr�ler la mani�re dont le programme interagira avec le Instagram:

M�dias - M�dias (photo, vid�o, album, IGTV, bobines ou histoire)
Ressource - Partie de Media (pour les albums)
M�dias int�gr�s - Version courte des m�dias
Compte - Informations priv�es compl�tes pour votre compte (par exemple, e-mail, num�ro de t�l�phone_num�ro)
TOTP - Les assistants TOTP 2 FA (g�n�rer la graine, activer/d�sactiver TOTP, g�n�rer du code en tant qu'authentificateur Google)
Utilisateur - Donn�es utilisateur publiques compl�tes
UserShort - Donn�es utilisateur publiques courtes (utilis�es dans Usertag, Comment, Media, Direct)
Balise utilisateur - Utilisateur de balises dans les m�dias (coordonn�es + UserShort)
Emplacement - Emplacement GEO (coordonn�es GEO, nom, adresse)
Hashtag - Objet Hashtag (identifiant, nom, image)
Collection - Collection de m�dias (nom, photo et liste des m�dias)
Commentaire - Commentaires aux m�dias
Souligner - Faits saillants
Histoire - Histoire
Lien d'histoire - Lien (Swipe up)
HistoireLieu - Emplacement de l'�tiquette dans l'histoire (sous forme d'autocollant)
HistoireMention - Mentionnez les utilisateurs dans Story (utilisateur, coordonn�es et dimensions)
HistoireHashtag - Hashtag pour l'histoire (comme autocollant)
Autocollant d'histoire - Tag autocollant � l'histoire (par exemple de giphy)
StoryBuild - Constructeur d'histoires retournez le chemin vers la photo/vid�o et mentionnez les coordonn�es
Fil direct - Thread (sujet) avec messages en Direct
Message direct - Message en direct
Perspicacit� - Aper�us pour un message
Piste - Piste musicale (pour rouleaux/clips)
Interagir avec le compte Instagram
instagrapi fournit ce qui suit Interactions cela peut �tre utilis� pour contr�ler et obtenir des informations sur votre Instagram compte :

Client (param�tres : dict = {}, proxy : str = ��) : bool - Init instagrapi client
cl'.login("instagrapi", "42")
# cl.login(� instagrapi �, � 42 �, verification_code="123456") # avec 2FA verification_code
# cl.login_by_sessionid(�peiWooShooghahdi2Eip7phohph0eeng �)
cl'.d�finir_proxy("chaussettes5://127.0.0.1:30235")
# cl.set_proxy("http://username:password@127.0.0.1:8080")
# cl.set_proxy("socks5://nom d'utilisateur: mot de passe@127.0.0.1:30235")
# lors de l'adressage du proxy via le nom d'h�te :
# cl.set_proxy("socks5h://nom d'utilisateur:password@exampleproxy.tld:30235")

imprimer(cl'.get_settings())
imprimer(cl'.utilisateur_info(cl'.utilisateur_id))
Nous recommandons d'utiliser ces mandataires

Demande
Propri�t�	Description
demande_logger	Enregistreur dans lequel diverses actions d'Instagram sont enregistr�es
demande_timeout	D�lai d'attente en secondes entre les requ�tes (1 seconde par d�faut)
Connexion
M�thode	Retour	Description
login (nom d'utilisateur : str, mot de passe : str)	bool	Connexion par nom d'utilisateur et mot de passe (obtenir de nouveaux cookies s'il n'existe pas dans les param�tres)
login (nom d'utilisateur : str, mot de passe : str, verification_code : str)	bool	Connectez-vous par nom d'utilisateur et mot de passe avec le code de v�rification 2FA (utilisez Google Authenticator ou quelque chose de similaire pour g�n�rer du code TOTP, ne fonctionnez pas avec SMS)
relogin ()	bool	Re-connexion avec des cookies propres (nom d'utilisateur cl. requis et mot de passe cl.)
login_by_sessionid(sessionid: str)	bool	Connexion par sessionid depuis le site Instagram
injecter_sessionid_to_public()	bool	Injectez un sessionid de la session priv�e � la session publique
d�connexion ()	bool	D�connexion
Vous pouvez transmettre les param�tres au Client (et enregistrer les cookies), il a le format suivant :

param�tres = {
   "uuids": {
      "t�l�phone_id": "57d64c41-a916-3fa5-bd7a-3796c1dab122",
      "uuid": "8aa373c6-f316-44d7-b49e-d74563f4a8f3",
      "client_session_id": "6c296d0a-3534-4dce-b5aa-a6a6ab017443",
      "publicit�_id": "8dc88b76-dfbc-44dc-abbc-31a6f1d54b04",
      "appareil_id": "android-e021b636049dc0e9"
   },
   "cookies":  {},  # d�finissez ici vos cookies enregistr�s
   "dernier_login": 1596069420.0000145,
   "appareil_param�tres": {
      "cpu": "h1",
      "dpi": "640dpi",
      "mod�le": "h1",
      "appareil": "RS988",
      "r�solution": "1440x2392",
      "app_version": "117.0.0.28.123",
      "fabricant": "LGE/lge",
      "version_code": "168361634",
      "android_release": "6.0.1",
      "andro�de_version": 23
   },
   "utilisateur_agent": "Instagramme 117.0.0.28.123 Android (23/6.0.1; ...�tats-Unis; 168361634)"
}

cl = Client(param�tres)
Settings
Store and manage uuids, device configuration, user agent, authorization data (aka cookies) and other session settings

Method	Return	Description
get_settings()	dict	Return settings dict
set_settings(settings: dict)	bool	Set session settings
load_settings(path: Path)	dict	Load session settings from file
dump_settings(path: Path)	bool	Serialize and save session settings to file
In order for Instagram to trust you more, you must always login from one device and one IP (or from a subnet):

cl = Client()
cl.login(USERNAME, PASSWORD)
cl.dump_settings('/tmp/dump.json')
Next time:

cl = Client()
cl.load_settings('/tmp/dump.json')
cl.login(USERNAME, PASSWORD)
cl.get_timeline_feed()  # check session
Manage device, proxy and other account settings
Method	Return	Description
set_proxy(dsn: str)	dict	Support socks and http/https proxy �scheme://username:password@host:port�. We recommend using these proxies
private.proxies	dict	Stores used proxy servers for private (mobile, v1) requests
public.proxies	dict	Stores used proxy servers for public (web, graphql) requests
set_device(device: dict)	bool	Change device settings (Android Device Information Generator Online)
device	dict	Return device dict which we pass to Instagram
set_user_agent(user_agent: str = ��)	bool	Change User-Agent header (User Agents)
cookie_dict	dict	Return cookies
user_id	int	Return your user_id (after login)
base_headers	dict	Base headers for Instagram
set_country(country: str = �US�)	bool	Set country (advice: use the country of your proxy)
set_country_code(country_code: int = 1)	bool	Set country calling code. Default: +1 (USA)
set_locale(locale: str = �en_US�)	bool	Set locale (advice: use the locale of your proxy)
set_timezone_offset(seconds: int)	bool	Set timezone offset in seconds
cl = Client()

# Los Angles user:
cl.set_proxy('http://los:angeles@proxy.address:8080')
cl.set_locale('en_US')
cl.set_timezone_offset(-7 * 60 * 60)  # Los Angeles UTC (GMT) -7 hours == -25200 seconds
cl.get_settings()
{
    ...
    'user_agent': 'Instagram 194.0.0.36.172 Android (26/8.0.0; 480dpi; 1080x1920; Xiaomi; MI 5s; capricorn; qcom; en_US; 301484483)',
    'country': 'US',
    'country_code': 1,
    'locale': 'en_US',
    'timezone_offset': -25200
}

# Moscow user:
cl.set_proxy('socks5://moscow:proxy@address:8080')
cl.set_locale('ru_RU')
cl.set_country_code(7)  # +7
cl.set_timezone_offset(3 * 3600)  # Moscow UTC+3
cl.get_settings()
{
    ...
    'user_agent': 'Instagram 194.0.0.36.172 Android (26/8.0.0; 480dpi; 1080x1920; Xiaomi; MI 5s; capricorn; qcom; ru_RU; 301484483)',
    'country': 'RU',
    'country_code': 7,
    'locale': 'ru_RU',
    'timezone_offset': 10800
}
What�s Next?
Getting Started
Usage Guide
Handle Exceptions
Challenge Resolver
Exceptions

-------------


instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
M�dias
Visualisation, t�l�chargement, t�l�chargement et �dition de publications

En termes d'Instagram, cela s'appelle Media, g�n�ralement les utilisateurs l'appellent publications ou publications

Termes de base:
m�dias_id - ID de cha�ne "{media_id}_{user_id}", par exemple "2277033926878261772_1903424587"
m�dia_pk - Integer ID (identifiant de m�dias r�els), par exemple. 2277033926878261772
code - Code court (slug pour media), par ex. BjNLpA1AhXM de "https://www.instagram.com/p/BjNLpA1AhXM/"
url - URL de la publication dans les m�dias, par exemple "https://www.instagram.com/p/BjNLpA1AhXM/"
Types de m�dias :
Photo - Quand media_type=1
Vid�o - Quand media_type=2 et product_type=feed
IGTV - Quand media_type=2 et product_type=igtv
Bobine - Quand media_type=2 et product_type=clips
Album - Quand media_type=8
Visualisation et �dition de la publication
M�thode	Retour	Description
media_id(media_pk : int)	str	Retourner media_id par media_pk (par ex. 2277033926878261772 -> 2277033926878261772_1903424587)
media_pk(media_id: str)	int	Retourner media_pk par media_id (ex. 2277033926878261772_1903424587 -> 2277033926878261772)
media_pk_from_code (code : str)	int	Retourner media_pk
media_pk_from_url(url: str)	int	Retourner media_pk
user_medias(user_id : str, montant : int = 20)	Liste[M�dia]	Obtenez la liste des m�dias par user_id
user_medias_paginated (user_id : str, montant : int = 0, end_cursor : str = ��)	Tuple [Liste [M�dia], str]	Obtenez une page de m�dias par user_id
user_clips(user_id : str, montant : int = 50)	Liste[M�dia]	Obtenez la liste des clips (bobines) par user_id
usertag_medias(user_id: str, montant : int = 20)	Liste[M�dia]	Obtenez des m�dias o� un utilisateur est marqu�
media_info(media_pk: int)	M�dias	Retourner les infos m�dias
media_delete(media_pk : int)	bool	Supprimer m�dias
media_edit (media_pk : int, l�gende : str, titre : str, usertags : List [Usertag], emplacement : Emplacement)	dict	Changer la l�gende pour les m�dias
media_user(media_pk : int)	Utilisateur	Obtenez des informations utilisateur pour les m�dias
media_oembed(url: str)	M�dias int�gr�s	Retournez de courtes informations multim�dias par URL multim�dia
media_like (media_id : str)	bool	Comme les m�dias
media_unlike(media_id: str)	bool	Unlike media
media_seen(media_ids: List[str], skipped_media_ids: List[str])	bool	Mark a media as seen
media_likers(media_id: str)	List[UserShort]	Return list of users who liked this post (due to Instagram limitations, this may not return a complete list)
media_archive(media_id: str)	bool	Archive a media
media_unarchive(media_id: str)	bool	Unarchive a media
media_pin(media_id: str)	bool	Pin a media to user profile
media_unpin(media_id: str)	bool	Unpin a media to user profile
Low level methods:

Method	Return	Description
media_info_a1(media_pk: int, max_id: str = None)	Media	Get Media from PK by Public Web API
media_info_gql(media_pk: int)	Media	Get Media from PK by Public Graphql API
media_info_v1(media_pk: int)	Media	Get Media from PK by Private Mobile API
user_medias_gql(user_id: str, amount: int = 50, sleep: int = 2)	List[Media]	Get a user�s media by Public Graphql API
user_medias_paginated_gql(user_id: str, amount: int = 50, sleep: int = 2, end_cursor=None)	Tuple[List[Media], str]	Get a page of user�s media by Public Graphql API
user_medias_v1(user_id: str, amount: int = 18)	List[Media]	Get a user�s media by Private Mobile API
user_medias_paginated_v1(user_id: str, amount: int = 0, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s media by Private Mobile API
user_clips_v1(user_id: str, amount: int = 50)	List[Media]	Get a user�s clip by Private Mobile API
user_clips_paginated_v1(user_id: str, amount: int = 50, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s clip by Private Mobile API
user_videos_v1(user_id: str, amount: int = 50)	List[Media]	Get a user�s video by Private Mobile API
user_videos_paginated_v1(ser_id: int, amount: int = 50, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s video by Private Mobile API
usertag_medias_gql(user_id: str, amount: int = 20)	List[Media]	Get medias where a user is tagged by Public Graphql API
usertag_medias_v1(user_id: str, amount: int = 20)	List[Media]	Get medias where a user is tagged by Private Mobile API
Example:
>>> from instagrapi import Client
>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> cl.media_pk_from_code("B-fKL9qpeab")
2278584739065882267

>>> cl.media_pk_from_code("B8jnuB2HAbyc0q001y3F9CHRSoqEljK_dgkJjo0")
2243811726252050162

>>> cl.media_pk_from_url("https://www.instagram.com/p/BjNLpA1AhXM/")
1787135824035452364

>>> cl.media_info(1787135824035452364).dict()
{'pk': 1787135824035452364,
 'id': '1787135824035452364_1903424587',
 'code': 'BjNLpA1AhXM',
 'taken_at': datetime.datetime(2018, 5, 25, 15, 46, 53, tzinfo=datetime.timezone.utc),
 'media_type': 8,
 'product_type': '',
 'thumbnail_url': None,
 'location': {'pk': 260916528,
  'name': 'Foros, Crimea',
  'address': '',
  'lng': 33.7878,
  'lat': 44.3914,
  'external_id': 181364832764479,
  'external_id_source': 'facebook_places'},
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/123884060_...&oe=5FD7600E')},
 'comment_count': 0,
 'like_count': 48,
 'caption_text': '@mind__flowers ? ?????? ??? ??????, 24 ??? 2018 #downhill #skateboarding #downhillskateboarding #crimea #foros',
 'usertags': [],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': [{'pk': 1787135361353462176,
   'video_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t50.2886-16/33464086_3755...0e2362', scheme='https', ...),
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/3220311...AE7332', scheme='https', ...),
   'media_type': 2},
  {'pk': 1787135762219834098,
   'video_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t50.2886-16/32895...61320_n.mp4', scheme='https', ...),
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/3373413....8480_n.jpg', scheme='https', ...),
   'media_type': 2},
  {'pk': 1787133803186894424,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/324307712_n.jpg...', scheme='https', ...),
   'media_type': 1}]}

>>> cl.media_oembed("https://www.instagram.com/p/B3mr1-OlWMG/").dict()
{'version': '1.0',
 'title': '? ?????? ? ?? @delai_krasivo_kaifui',
 'author_name': 'example',
 'author_url': 'https://www.instagram.com/example',
 'author_id': 1903424587,
 'media_id': '2154602296692269830_1903424587',
 'provider_name': 'Instagram',
 'provider_url': 'https://www.instagram.com',
 'type': 'rich',
 'width': 658,
 'height': None,
 'html': '<blockquote>...',
 'thumbnail_url': 'https://instagram.frix7-1.fna.fbcdn.net/v...0655800983_n.jpg',
 'thumbnail_width': 640,
 'thumbnail_height': 480,
 'can_view': True}


>>> cl.media_archive('2155832952940083788_1903424587')
True

>>> cl.media_unarchive('2155832952940083788_1903424587')
True

>>> cl.user_medias_gql(1903424587, amount=1)[0].dict()
{'pk': 2592252466151482347,
 'id': '2592252466151482347_1903424587',
 'code': 'CP5h-I1FuPr',
 'taken_at': datetime.datetime(2021, 6, 9, 12, 9, 56, tzinfo=datetime.timezone.utc),
 'media_type': 8,
 'product_type': '',
 'thumbnail_url': None,
 'location': None,
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': '',
  'profile_pic_url': None,
  'profile_pic_url_hd': None,
  'stories': []},
 'comment_count': 5,
 'like_count': 63,
 'has_liked': None,
 'caption_text': '??????? ???????? ?? @daewon1song @tensortrucks',
 'usertags': [{'user': {'pk': 53860445,
    'username': 'tensortrucks',
    'full_name': '',
    'profile_pic_url': None,
    'profile_pic_url_hd': None,
    'stories': []},
   'x': 0.3146666667,
   'y': 0.368159204}],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': [{'pk': 2592252463089480898,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/198404255_317668533141074_749682826672118306_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=f8FR-bZNbp8AX-A6YQ4&edm=APU89FABAAAA&ccb=7-4&oh=864bb145a4fa7e523f5cc22f9ac5d015&oe=61145E4F&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/198404255_317668533141074_749682826672118306_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=f8FR-bZNbp8AX-A6YQ4&edm=APU89FABAAAA&ccb=7-4&oh=864bb145a4fa7e523f5cc22f9ac5d015&oe=61145E4F&_nc_sid=86f79a'),
   'media_type': 1},
  {'pk': 2592252463081081550,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/198228498_303261361473979_3031095263106513772_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=C9SeKrAO6poAX-nXhCG&edm=APU89FABAAAA&ccb=7-4&oh=6aab825e12fef746449be22c322762a1&oe=61132FB0&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/198228498_303261361473979_3031095263106513772_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=C9SeKrAO6poAX-nXhCG&edm=APU89FABAAAA&ccb=7-4&oh=6aab825e12fef746449be22c322762a1&oe=61132FB0&_nc_sid=86f79a'),
   'media_type': 1},
  {'pk': 2592252463056089912,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/199142152_323583732599636_4553823395468898634_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=108&_nc_ohc=_feIkorChpsAX_wzTff&edm=APU89FABAAAA&ccb=7-4&oh=a22a2f5b30772fbbb02db92b9394e981&oe=61147D59&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/199142152_323583732599636_4553823395468898634_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=108&_nc_ohc=_feIkorChpsAX_wzTff&edm=APU89FABAAAA&ccb=7-4&oh=a22a2f5b30772fbbb02db92b9394e981&oe=61147D59&_nc_sid=86f79a'),
   'media_type': 1}]}

# Use paginated interface to resume fetch from stored cursor

>>> end_cursor = None
... for page in range(3):
...     medias, end_cursor = client.user_medias_paginated(1903424587, 5, end_cursor=end_cursor)
...     print([ m.taken_at.date().isoformat() for m in medias ])
...

['2021-06-09', '2019-10-16', '2019-10-14', '2019-06-13', '2019-06-06']
['2019-06-05', '2019-03-23', '2019-03-23', '2018-11-15', '2018-10-16']
['2018-10-16', '2018-10-11', '2018-10-09', '2018-10-09', '2018-08-02']

Download media
Method	Return	Description
photo_download(media_pk: int, folder: Path)	Path	Download photo (path to photo with best resoluton)
photo_download_by_url(url: str, filename: str, folder: Path)	Path	Download photo by URL (path to photo with best resoluton)
video_download(media_pk: int, folder: Path)	Path	Download video (path to video with best resoluton)
video_download_by_url(url: str, filename: str, folder: Path)	Path	Download Video by URL (path to video with best resoluton)
album_download(media_pk: int, folder: Path)	Path	Download Album (multiple paths to photo/video with best resolutons)
album_download_by_urls(urls: List[str], folder: Path)	Path	Download Album by URLs (multiple paths to photo/video)
igtv_download(media_pk: int, folder: Path)	Path	Download IGTV (path to video with best resoluton)
igtv_download_by_url(url: str, filename: str, folder: Path)	Path	Download IGTV by URL (path to video with best resoluton)
clip_download(media_pk: int, folder: Path)	Path	Download Reels Clip (path to video with best resoluton)
clip_download_by_url(url: str, filename: str, folder: Path)	Path	Download Reels Clip by URL (path to video with best resoluton)
Example:

>>> from instagrapi import Client
>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> cl.media_pk_from_url("https://www.instagram.com/p/BqNQJleFoSJ/")
1913256444155036809

>>> video_url = cl.media_info(1913256444155036809).video_url
>>> cl.video_download_by_url(video_url, folder='/tmp')
PosixPath('/tmp/45588546_367538213983456_6830188946193737023_n.mp4')


>>> cl.media_pk_from_url("http://www.instagram.com/p/BjNLpA1AhXM/")
1787135824035452364

>>> cl.album_download(1787135824035452364)
[PosixPath('/app/example_1787135361353462176.mp4'),
 PosixPath('/app/example_1787135762219834098.mp4'),
 PosixPath('/app/example_1787133803186894424.jpg')]

Upload media
Upload medias to your feed. Common arguments:

path - Path to source file
caption - Text for you post
usertags - List[Usertag] of mention users (see Usertag in types.py)
location - Location (e.g. Location(name='Test', lat=42.0, lng=42.0))
Method	Return	Description
photo_upload(path: Path, caption: str, upload_id: str, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload photo (Support JPG files)
video_upload(path: Path, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload video (Support MP4 files)
album_upload(paths: List[Path], caption: str, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload Album (Support JPG/MP4 files)
igtv_upload(path: Path, title: str, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload IGTV (Support MP4 files)
clip_upload(path: Path, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload Reels Clip (Support MP4 files)
clip_upload_as_reel_with_music(path: Path, caption: str, track: Track, extra_data: Dict = {})	Media	Upload Reels Clip as reel with music metadata
In extra_data, you can pass additional media settings, for example:

Method	Type	Description
custom_accessibility_caption	String	Set alternative text {"custom_accessibility_caption": "ALT TEXT HERE"}
like_and_view_counts_disabled	Int	Disable like and view counts {"like_and_view_counts_disabled": 1}
disable_comments	Int	Disable comments {"disable_comments": 1}
invite_coauthor_user_id	Int	Add a coauthor to the post {"invite_coauthor_user_id": "USER ID OF COAUTHOR HERE"}. You also need to add this user to usertags
Example:
>>> from instagrapi import Client

>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> media = cl.photo_upload(
    "/app/image.jpg",
    "Test caption for photo with #hashtags and mention users such @example",
    extra_data={
        "custom_accessibility_caption": "alt text example",
        "like_and_view_counts_disabled": 1,
        "disable_comments": 1,
    }
)

>>> media.dict()
{'pk': 2573347427873726764,
 'id': '2573347427873726764_1903424587',
 'code': 'CO2Xdn6FCEs',
 'taken_at': datetime.datetime(2021, 5, 14, 10, 9, tzinfo=datetime.timezone.utc),
 'media_type': 1,
 'product_type': 'feed',
 'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/185486538_463522984736407_6315244509641560230_n.jpg?se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=6tBMsh9HlmMAX9zI_jc&edm=ACqnv0EBAAAA&ccb=7-4&oh=2b46f1e9fbd2416eb7d08b398e0f639e&oe=60C30437&_nc_sid=9ec724&ig_cache_key=MjU3MzM0NzQyNzg3MzcyNjc2NA%3D%3D.2-ccb7-4', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/185486538_463522984736407_6315244509641560230_n.jpg', query='se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=6tBMsh9HlmMAX9zI_jc&edm=ACqnv0EBAAAA&ccb=7-4&oh=2b46f1e9fbd2416eb7d08b398e0f639e&oe=60C30437&_nc_sid=9ec724&ig_cache_key=MjU3MzM0NzQyNzg3MzcyNjc2NA%3D%3D.2-ccb7-4'),
 'location': None,
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
  'stories': []},
 'comment_count': 0,
 'like_count': 0,
 'has_liked': None,
 'caption_text': 'Test caption for photo with #hashtags and mention users such @example',
 'usertags': [],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': []}
Now let�s mention users (Usertag) and location:

>>> from instagrapi import Client
>>> from instagrapi.types import Usertag, Location

>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> example = cl.user_info_by_username('example')
>>> media = cl.photo_upload(
    "/app/image.jpg",
    "Test caption for photo with #hashtags and mention users such @example",
    usertags=[Usertag(user=example, x=0.5, y=0.5)],
    location=Location(name='Russia, Saint-Petersburg', lat=59.96, lng=30.29)
)

>>> media.dict()
{'pk': 2573355619819242434,
 'id': '2573355619819242434_1903424587',
 'code': 'CO2ZU1QFMPC',
 'taken_at': datetime.datetime(2021, 5, 14, 10, 25, 16, tzinfo=datetime.timezone.utc),
 'media_type': 1,
 'product_type': 'feed',
 'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/185426950_474602463640866_4228057388625412955_n.jpg?se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=106&_nc_ohc=7NrVvAEG7f4AX_XPaOK&edm=ACqnv0EBAAAA&ccb=7-4&oh=bd2c90c2dcb693184e07c2777e09bb0b&oe=60C4E326&_nc_sid=9ec724&ig_cache_key=MjU3MzM1NTYxOTgxOTI0MjQzNA%3D%3D.2-ccb7-4', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/185426950_474602463640866_4228057388625412955_n.jpg', query='se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=106&_nc_ohc=7NrVvAEG7f4AX_XPaOK&edm=ACqnv0EBAAAA&ccb=7-4&oh=bd2c90c2dcb693184e07c2777e09bb0b&oe=60C4E326&_nc_sid=9ec724&ig_cache_key=MjU3MzM1NTYxOTgxOTI0MjQzNA%3D%3D.2-ccb7-4'),
 'location': {'pk': 107617247320879,
  'name': 'Russia, Saint-Petersburg',
  'address': 'Russia, Saint-Petersburg',
  'lng': 30.30605,
  'lat': 59.93318,
  'external_id': 107617247320879,
  'external_id_source': 'facebook_places'},
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
  'stories': []},
 'comment_count': 0,
 'like_count': 0,
 'has_liked': None,
 'caption_text': 'Test caption for photo with #hashtags and mention users such @example',
 'usertags': [{'user': {'pk': 1903424587,
    'username': 'example',
    'full_name': 'Example Example',
    'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
    'stories': []},
   'x': 0.5,
   'y': 0.5}],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': []}
Reels:

>>> clips = cl.user_clips_v1(25025320, amount=2)
>>> clips[0].dict()

{'pk': '3052048407587698594',
 'id': '3052048407587698594_25025320',
 'code': 'CpbDdszj7ei',
 'taken_at': datetime.datetime(2023, 3, 5, 21, 50, 4, tzinfo=datetime.timezone.utc),
 'media_type': 2,
 'product_type': 'clips',
 'thumbnail_url': HttpUrl('https://scontent-den4-1.cdninstagram.com/v/t51.2885-15/333966975_152901010970043_8971338145148712917_n.jpg?stp=dst-jpg_e15_p150x150&_nc_ht=scontent-den4-1.cdninstagram.com&_nc_cat=1&_nc_ohc=rRuJ7u4YrqEAX-UEMFq&edm=ACHbZRIBAAAA&ccb=7-5&ig_cache_key=MzA1MjA0ODQwNzU4NzY5ODU5NA%3D%3D.2-ccb7-5&oh=00_AfC_tNEWVjJLM5RQYUiQJFHQZSmvnDtAcpzs42DRSYt1pQ&oe=6409C451&_nc_sid=4a9e64', scheme='https', host='scontent-den4-1.cdninstagram.com', tld='com', host_type='domain', port='443', path='/v/t51.2885-15/333966975_152901010970043_8971338145148712917_n.jpg', query='stp=dst-jpg_e15_p150x150&_nc_ht=scontent-den4-1.cdninstagram.com&_nc_cat=1&_nc_ohc=rRuJ7u4YrqEAX-UEMFq&edm=ACHbZRIBAAAA&ccb=7-5&ig_cache_key=MzA1MjA0ODQwNzU4NzY5ODU5NA%3D%3D.2-ccb7-5&oh=00_AfC_tNEWVjJLM5RQYUiQJFHQZSmvnDtAcpzs42DRSYt1pQ&oe=6409C451&_nc_sid=4a9e64'),
 'location': {'pk': 213011753,
  'name': 'Sydney, Australia',
  'phone': '',
  'website': '',
  'category': '',
  'hours': {},
  'address': '',
  'city': '',
  'zip': None,
  'lng': 151.20797,
  'lat': -33.86751,
  'external_id': 110884905606108,
  'external_id_source': 'facebook_places'},
....
}


-----------------------




instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
M�dias
Visualisation, t�l�chargement, t�l�chargement et �dition de publications

En termes d'Instagram, cela s'appelle Media, g�n�ralement les utilisateurs l'appellent publications ou publications

Termes de base:
m�dias_id - ID de cha�ne "{media_id}_{user_id}", par exemple "2277033926878261772_1903424587"
m�dia_pk - Integer ID (identifiant de m�dias r�els), par exemple. 2277033926878261772
code - Code court (slug for media), par ex. BjNLpA1AhXM de "https://www.instagram.com/p/BjNLpA1AhXM/"
url - URL de la publication dans les m�dias, par exemple "https://www.instagram.com/p/BjNLpA1AhXM/"
Types de m�dias :
Photo - Quand media_type=1
Vid�o - Quand media_type=2 et product_type=feed
IGTV - Quand media_type=2 et product_type=igtv
Bobine - Quand media_type=2 et product_type=clips
Album - Quand media_type=8
Visualisation et �dition de la publication
M�thode	Retour	Description
media_id(media_pk : int)	str	Retourner media_id par media_pk (ex. 2277033926878261772 -> 2277033926878261772_1903424587)
media_pk(media_id: str)	int	Retourner media_pk par media_id (ex. 2277033926878261772_1903424587 -> 2277033926878261772)
media_pk_from_code (code : str)	int	Retourner media_pk
media_pk_from_url(url: str)	int	Retourner media_pk
user_medias(user_id : str, montant : int = 20)	Liste[M�dia]	Obtenez la liste des m�dias par user_id
user_medias_paginated (user_id : str, montant : int = 0, end_cursor : str = ��)	Tuple [Liste [M�dia], str]	Obtenez une page de m�dias par user_id
user_clips(user_id : str, montant : int = 50)	Liste[M�dia]	Obtenez la liste des clips (bobines) par user_id
usertag_medias(user_id: str, montant : int = 20)	Liste[M�dia]	Obtenez des m�dias o� un utilisateur est marqu�
media_info(media_pk: int)	M�dias	Retourner les infos m�dias
media_delete(media_pk : int)	bool	Supprimer m�dias
media_edit (media_pk : int, l�gende : str, titre : str, usertags : List [Usertag], emplacement : Emplacement)	dict	Changer la l�gende pour les m�dias
media_user(media_pk : int)	Utilisateur	Obtenez des informations utilisateur pour les m�dias
media_oembed(url: str)	M�dias int�gr�s	Retournez de courtes informations multim�dias par URL multim�dia
media_like (media_id : str)	bool	Comme les m�dias
media_unlike(media_id: str)	bool	Unlike media
media_seen(media_ids: List[str], skipped_media_ids: List[str])	bool	Mark a media as seen
media_likers(media_id: str)	List[UserShort]	Return list of users who liked this post (due to Instagram limitations, this may not return a complete list)
media_archive(media_id: str)	bool	Archive a media
media_unarchive(media_id: str)	bool	Unarchive a media
media_pin(media_id: str)	bool	Pin a media to user profile
media_unpin(media_id: str)	bool	Unpin a media to user profile
Low level methods:

Method	Return	Description
media_info_a1(media_pk: int, max_id: str = None)	Media	Get Media from PK by Public Web API
media_info_gql(media_pk: int)	Media	Get Media from PK by Public Graphql API
media_info_v1(media_pk: int)	Media	Get Media from PK by Private Mobile API
user_medias_gql(user_id: str, amount: int = 50, sleep: int = 2)	List[Media]	Get a user�s media by Public Graphql API
user_medias_paginated_gql(user_id: str, amount: int = 50, sleep: int = 2, end_cursor=None)	Tuple[List[Media], str]	Get a page of user�s media by Public Graphql API
user_medias_v1(user_id: str, amount: int = 18)	List[Media]	Get a user�s media by Private Mobile API
user_medias_paginated_v1(user_id: str, amount: int = 0, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s media by Private Mobile API
user_clips_v1(user_id: str, amount: int = 50)	List[Media]	Get a user�s clip by Private Mobile API
user_clips_paginated_v1(user_id: str, amount: int = 50, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s clip by Private Mobile API
user_videos_v1(user_id: str, amount: int = 50)	List[Media]	Get a user�s video by Private Mobile API
user_videos_paginated_v1(ser_id: int, amount: int = 50, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s video by Private Mobile API
usertag_medias_gql(user_id: str, amount: int = 20)	List[Media]	Get medias where a user is tagged by Public Graphql API
usertag_medias_v1(user_id: str, amount: int = 20)	List[Media]	Get medias where a user is tagged by Private Mobile API
Example:
>>> from instagrapi import Client
>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> cl.media_pk_from_code("B-fKL9qpeab")
2278584739065882267

>>> cl.media_pk_from_code("B8jnuB2HAbyc0q001y3F9CHRSoqEljK_dgkJjo0")
2243811726252050162

>>> cl.media_pk_from_url("https://www.instagram.com/p/BjNLpA1AhXM/")
1787135824035452364

>>> cl.media_info(1787135824035452364).dict()
{'pk': 1787135824035452364,
 'id': '1787135824035452364_1903424587',
 'code': 'BjNLpA1AhXM',
 'taken_at': datetime.datetime(2018, 5, 25, 15, 46, 53, tzinfo=datetime.timezone.utc),
 'media_type': 8,
 'product_type': '',
 'thumbnail_url': None,
 'location': {'pk': 260916528,
  'name': 'Foros, Crimea',
  'address': '',
  'lng': 33.7878,
  'lat': 44.3914,
  'external_id': 181364832764479,
  'external_id_source': 'facebook_places'},
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/123884060_...&oe=5FD7600E')},
 'comment_count': 0,
 'like_count': 48,
 'caption_text': '@mind__flowers ? ?????? ??? ??????, 24 ??? 2018 #downhill #skateboarding #downhillskateboarding #crimea #foros',
 'usertags': [],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': [{'pk': 1787135361353462176,
   'video_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t50.2886-16/33464086_3755...0e2362', scheme='https', ...),
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/3220311...AE7332', scheme='https', ...),
   'media_type': 2},
  {'pk': 1787135762219834098,
   'video_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t50.2886-16/32895...61320_n.mp4', scheme='https', ...),
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/3373413....8480_n.jpg', scheme='https', ...),
   'media_type': 2},
  {'pk': 1787133803186894424,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/324307712_n.jpg...', scheme='https', ...),
   'media_type': 1}]}

>>> cl.media_oembed("https://www.instagram.com/p/B3mr1-OlWMG/").dict()
{'version': '1.0',
 'title': '? ?????? ? ?? @delai_krasivo_kaifui',
 'author_name': 'example',
 'author_url': 'https://www.instagram.com/example',
 'author_id': 1903424587,
 'media_id': '2154602296692269830_1903424587',
 'provider_name': 'Instagram',
 'provider_url': 'https://www.instagram.com',
 'type': 'rich',
 'width': 658,
 'height': None,
 'html': '<blockquote>...',
 'thumbnail_url': 'https://instagram.frix7-1.fna.fbcdn.net/v...0655800983_n.jpg',
 'thumbnail_width': 640,
 'thumbnail_height': 480,
 'can_view': True}


>>> cl.media_archive('2155832952940083788_1903424587')
True

>>> cl.media_unarchive('2155832952940083788_1903424587')
True

>>> cl.user_medias_gql(1903424587, amount=1)[0].dict()
{'pk': 2592252466151482347,
 'id': '2592252466151482347_1903424587',
 'code': 'CP5h-I1FuPr',
 'taken_at': datetime.datetime(2021, 6, 9, 12, 9, 56, tzinfo=datetime.timezone.utc),
 'media_type': 8,
 'product_type': '',
 'thumbnail_url': None,
 'location': None,
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': '',
  'profile_pic_url': None,
  'profile_pic_url_hd': None,
  'stories': []},
 'comment_count': 5,
 'like_count': 63,
 'has_liked': None,
 'caption_text': '??????? ???????? ?? @daewon1song @tensortrucks',
 'usertags': [{'user': {'pk': 53860445,
    'username': 'tensortrucks',
    'full_name': '',
    'profile_pic_url': None,
    'profile_pic_url_hd': None,
    'stories': []},
   'x': 0.3146666667,
   'y': 0.368159204}],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': [{'pk': 2592252463089480898,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/198404255_317668533141074_749682826672118306_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=f8FR-bZNbp8AX-A6YQ4&edm=APU89FABAAAA&ccb=7-4&oh=864bb145a4fa7e523f5cc22f9ac5d015&oe=61145E4F&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/198404255_317668533141074_749682826672118306_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=f8FR-bZNbp8AX-A6YQ4&edm=APU89FABAAAA&ccb=7-4&oh=864bb145a4fa7e523f5cc22f9ac5d015&oe=61145E4F&_nc_sid=86f79a'),
   'media_type': 1},
  {'pk': 2592252463081081550,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/198228498_303261361473979_3031095263106513772_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=C9SeKrAO6poAX-nXhCG&edm=APU89FABAAAA&ccb=7-4&oh=6aab825e12fef746449be22c322762a1&oe=61132FB0&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/198228498_303261361473979_3031095263106513772_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=C9SeKrAO6poAX-nXhCG&edm=APU89FABAAAA&ccb=7-4&oh=6aab825e12fef746449be22c322762a1&oe=61132FB0&_nc_sid=86f79a'),
   'media_type': 1},
  {'pk': 2592252463056089912,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/199142152_323583732599636_4553823395468898634_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=108&_nc_ohc=_feIkorChpsAX_wzTff&edm=APU89FABAAAA&ccb=7-4&oh=a22a2f5b30772fbbb02db92b9394e981&oe=61147D59&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/199142152_323583732599636_4553823395468898634_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=108&_nc_ohc=_feIkorChpsAX_wzTff&edm=APU89FABAAAA&ccb=7-4&oh=a22a2f5b30772fbbb02db92b9394e981&oe=61147D59&_nc_sid=86f79a'),
   'media_type': 1}]}

# Use paginated interface to resume fetch from stored cursor

>>> end_cursor = None
... for page in range(3):
...     medias, end_cursor = client.user_medias_paginated(1903424587, 5, end_cursor=end_cursor)
...     print([ m.taken_at.date().isoformat() for m in medias ])
...

['2021-06-09', '2019-10-16', '2019-10-14', '2019-06-13', '2019-06-06']
['2019-06-05', '2019-03-23', '2019-03-23', '2018-11-15', '2018-10-16']
['2018-10-16', '2018-10-11', '2018-10-09', '2018-10-09', '2018-08-02']

Download media
Method	Return	Description
photo_download(media_pk: int, folder: Path)	Path	Download photo (path to photo with best resoluton)
photo_download_by_url(url: str, filename: str, folder: Path)	Path	Download photo by URL (path to photo with best resoluton)
video_download(media_pk: int, folder: Path)	Path	Download video (path to video with best resoluton)
video_download_by_url(url: str, filename: str, folder: Path)	Path	Download Video by URL (path to video with best resoluton)
album_download(media_pk: int, folder: Path)	Path	Download Album (multiple paths to photo/video with best resolutons)
album_download_by_urls(urls: List[str], folder: Path)	Path	Download Album by URLs (multiple paths to photo/video)
igtv_download(media_pk: int, folder: Path)	Path	Download IGTV (path to video with best resoluton)
igtv_download_by_url(url: str, filename: str, folder: Path)	Path	Download IGTV by URL (path to video with best resoluton)
clip_download(media_pk: int, folder: Path)	Path	Download Reels Clip (path to video with best resoluton)
clip_download_by_url(url: str, filename: str, folder: Path)	Path	Download Reels Clip by URL (path to video with best resoluton)
Example:

>>> from instagrapi import Client
>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> cl.media_pk_from_url("https://www.instagram.com/p/BqNQJleFoSJ/")
1913256444155036809

>>> video_url = cl.media_info(1913256444155036809).video_url
>>> cl.video_download_by_url(video_url, folder='/tmp')
PosixPath('/tmp/45588546_367538213983456_6830188946193737023_n.mp4')


>>> cl.media_pk_from_url("http://www.instagram.com/p/BjNLpA1AhXM/")
1787135824035452364

>>> cl.album_download(1787135824035452364)
[PosixPath('/app/example_1787135361353462176.mp4'),
 PosixPath('/app/example_1787135762219834098.mp4'),
 PosixPath('/app/example_1787133803186894424.jpg')]

Upload media
Upload medias to your feed. Common arguments:

path - Path to source file
caption - Text for you post
usertags - List[Usertag] of mention users (see Usertag in types.py)
location - Location (e.g. Location(name='Test', lat=42.0, lng=42.0))
Method	Return	Description
photo_upload(path: Path, caption: str, upload_id: str, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload photo (Support JPG files)
video_upload(path: Path, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload video (Support MP4 files)
album_upload(paths: List[Path], caption: str, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload Album (Support JPG/MP4 files)
igtv_upload(path: Path, title: str, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload IGTV (Support MP4 files)
clip_upload(path: Path, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload Reels Clip (Support MP4 files)
clip_upload_as_reel_with_music(path: Path, caption: str, track: Track, extra_data: Dict = {})	Media	Upload Reels Clip as reel with music metadata
In extra_data, you can pass additional media settings, for example:

Method	Type	Description
custom_accessibility_caption	String	Set alternative text {"custom_accessibility_caption": "ALT TEXT HERE"}
like_and_view_counts_disabled	Int	Disable like and view counts {"like_and_view_counts_disabled": 1}
disable_comments	Int	Disable comments {"disable_comments": 1}
invite_coauthor_user_id	Int	Add a coauthor to the post {"invite_coauthor_user_id": "USER ID OF COAUTHOR HERE"}. You also need to add this user to usertags
Example:
>>> from instagrapi import Client

>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> media = cl.photo_upload(
    "/app/image.jpg",
    "Test caption for photo with #hashtags and mention users such @example",
    extra_data={
        "custom_accessibility_caption": "alt text example",
        "like_and_view_counts_disabled": 1,
        "disable_comments": 1,
    }
)

>>> media.dict()
{'pk': 2573347427873726764,
 'id': '2573347427873726764_1903424587',
 'code': 'CO2Xdn6FCEs',
 'taken_at': datetime.datetime(2021, 5, 14, 10, 9, tzinfo=datetime.timezone.utc),
 'media_type': 1,
 'product_type': 'feed',
 'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/185486538_463522984736407_6315244509641560230_n.jpg?se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=6tBMsh9HlmMAX9zI_jc&edm=ACqnv0EBAAAA&ccb=7-4&oh=2b46f1e9fbd2416eb7d08b398e0f639e&oe=60C30437&_nc_sid=9ec724&ig_cache_key=MjU3MzM0NzQyNzg3MzcyNjc2NA%3D%3D.2-ccb7-4', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/185486538_463522984736407_6315244509641560230_n.jpg', query='se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=6tBMsh9HlmMAX9zI_jc&edm=ACqnv0EBAAAA&ccb=7-4&oh=2b46f1e9fbd2416eb7d08b398e0f639e&oe=60C30437&_nc_sid=9ec724&ig_cache_key=MjU3MzM0NzQyNzg3MzcyNjc2NA%3D%3D.2-ccb7-4'),
 'location': None,
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
  'stories': []},
 'comment_count': 0,
 'like_count': 0,
 'has_liked': None,
 'caption_text': 'Test caption for photo with #hashtags and mention users such @example',
 'usertags': [],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': []}
Now let�s mention users (Usertag) and location:

>>> from instagrapi import Client
>>> from instagrapi.types import Usertag, Location

>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> example = cl.user_info_by_username('example')
>>> media = cl.photo_upload(
    "/app/image.jpg",
    "Test caption for photo with #hashtags and mention users such @example",
    usertags=[Usertag(user=example, x=0.5, y=0.5)],
    location=Location(name='Russia, Saint-Petersburg', lat=59.96, lng=30.29)
)

>>> media.dict()
{'pk': 2573355619819242434,
 'id': '2573355619819242434_1903424587',
 'code': 'CO2ZU1QFMPC',
 'taken_at': datetime.datetime(2021, 5, 14, 10, 25, 16, tzinfo=datetime.timezone.utc),
 'media_type': 1,
 'product_type': 'feed',
 'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/185426950_474602463640866_4228057388625412955_n.jpg?se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=106&_nc_ohc=7NrVvAEG7f4AX_XPaOK&edm=ACqnv0EBAAAA&ccb=7-4&oh=bd2c90c2dcb693184e07c2777e09bb0b&oe=60C4E326&_nc_sid=9ec724&ig_cache_key=MjU3MzM1NTYxOTgxOTI0MjQzNA%3D%3D.2-ccb7-4', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/185426950_474602463640866_4228057388625412955_n.jpg', query='se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=106&_nc_ohc=7NrVvAEG7f4AX_XPaOK&edm=ACqnv0EBAAAA&ccb=7-4&oh=bd2c90c2dcb693184e07c2777e09bb0b&oe=60C4E326&_nc_sid=9ec724&ig_cache_key=MjU3MzM1NTYxOTgxOTI0MjQzNA%3D%3D.2-ccb7-4'),
 'location': {'pk': 107617247320879,
  'name': 'Russia, Saint-Petersburg',
  'address': 'Russia, Saint-Petersburg',
  'lng': 30.30605,
  'lat': 59.93318,
  'external_id': 107617247320879,
  'external_id_source': 'facebook_places'},
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
  'stories': []},
 'comment_count': 0,
 'like_count': 0,
 'has_liked': None,
 'caption_text': 'Test caption for photo with #hashtags and mention users such @example',
 'usertags': [{'user': {'pk': 1903424587,
    'username': 'example',
    'full_name': 'Example Example',
    'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
    'stories': []},
   'x': 0.5,
   'y': 0.5}],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': []}
Reels:

>>> clips = cl.user_clips_v1(25025320, amount=2)
>>> clips[0].dict()

{'pk': '3052048407587698594',
 'id': '3052048407587698594_25025320',
 'code': 'CpbDdszj7ei',
 'taken_at': datetime.datetime(2023, 3, 5, 21, 50, 4, tzinfo=datetime.timezone.utc),
 'media_type': 2,
 'product_type': 'clips',
 'thumbnail_url': HttpUrl('https://scontent-den4-1.cdninstagram.com/v/t51.2885-15/333966975_152901010970043_8971338145148712917_n.jpg?stp=dst-jpg_e15_p150x150&_nc_ht=scontent-den4-1.cdninstagram.com&_nc_cat=1&_nc_ohc=rRuJ7u4YrqEAX-UEMFq&edm=ACHbZRIBAAAA&ccb=7-5&ig_cache_key=MzA1MjA0ODQwNzU4NzY5ODU5NA%3D%3D.2-ccb7-5&oh=00_AfC_tNEWVjJLM5RQYUiQJFHQZSmvnDtAcpzs42DRSYt1pQ&oe=6409C451&_nc_sid=4a9e64', scheme='https', host='scontent-den4-1.cdninstagram.com', tld='com', host_type='domain', port='443', path='/v/t51.2885-15/333966975_152901010970043_8971338145148712917_n.jpg', query='stp=dst-jpg_e15_p150x150&_nc_ht=scontent-den4-1.cdninstagram.com&_nc_cat=1&_nc_ohc=rRuJ7u4YrqEAX-UEMFq&edm=ACHbZRIBAAAA&ccb=7-5&ig_cache_key=MzA1MjA0ODQwNzU4NzY5ODU5NA%3D%3D.2-ccb7-5&oh=00_AfC_tNEWVjJLM5RQYUiQJFHQZSmvnDtAcpzs42DRSYt1pQ&oe=6409C451&_nc_sid=4a9e64'),
 'location': {'pk': 213011753,
  'name': 'Sydney, Australia',
  'phone': '',
  'website': '',
  'category': '',
  'hours': {},
  'address': '',
  'city': '',
  'zip': None,
  'lng': 151.20797,
  'lat': -33.86751,
  'external_id': 110884905606108,
  'external_id_source': 'facebook_places'},
....
}



----------------------------




instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
M�dias
Visualisation, t�l�chargement, t�l�chargement et �dition de publications

En termes d'Instagram, cela s'appelle Media, g�n�ralement les utilisateurs l'appellent publications ou publications

Termes de base:
m�dias_id - ID de cha�ne "{media_id}_{user_id}", par exemple "2277033926878261772_1903424587"
m�dia_pk - Integer ID (identifiant de m�dias r�els), par exemple. 2277033926878261772
code - Code court (slug for media), par ex. BjNLpA1AhXM de "https://www.instagram.com/p/BjNLpA1AhXM/"
url - URL de la publication dans les m�dias, par exemple "https://www.instagram.com/p/BjNLpA1AhXM/"
Types de m�dias :
Photo - Quand media_type=1
Vid�o - Quand media_type=2 et product_type=feed
IGTV - Quand media_type=2 et product_type=igtv
Bobine - Quand media_type=2 et product_type=clips
Album - Quand media_type=8
Visualisation et �dition de la publication
M�thode	Retour	Description
media_id(media_pk : int)	str	Retourner media_id par media_pk (ex. 2277033926878261772 -> 2277033926878261772_1903424587)
media_pk(media_id: str)	int	Retourner media_pk par media_id (ex. 2277033926878261772_1903424587 -> 2277033926878261772)
media_pk_from_code (code : str)	int	Retourner media_pk
media_pk_from_url(url: str)	int	Retourner media_pk
user_medias(user_id : str, montant : int = 20)	Liste[M�dia]	Obtenez la liste des m�dias par user_id
user_medias_paginated (user_id : str, montant : int = 0, end_cursor : str = ��)	Tuple [Liste [M�dia], str]	Obtenez une page de m�dias par user_id
user_clips(user_id : str, montant : int = 50)	Liste[M�dia]	Obtenez la liste des clips (bobines) par user_id
usertag_medias(user_id: str, montant : int = 20)	Liste[M�dia]	Obtenez des m�dias o� un utilisateur est marqu�
media_info(media_pk: int)	M�dias	Retourner les infos m�dias
media_delete(media_pk : int)	bool	Supprimer m�dias
media_edit (media_pk : int, l�gende : str, titre : str, usertags : List [Usertag], emplacement : Emplacement)	dict	Changer la l�gende pour les m�dias
media_user(media_pk : int)	Utilisateur	Obtenez des informations utilisateur pour les m�dias
media_oembed(url: str)	M�dias int�gr�s	Retournez de courtes informations multim�dias par URL multim�dia
media_like (media_id : str)	bool	Comme les m�dias
media_unlike(media_id: str)	bool	Unlike media
media_seen(media_ids: List[str], skipped_media_ids: List[str])	bool	Mark a media as seen
media_likers(media_id: str)	List[UserShort]	Return list of users who liked this post (due to Instagram limitations, this may not return a complete list)
media_archive(media_id: str)	bool	Archive a media
media_unarchive(media_id: str)	bool	Unarchive a media
media_pin(media_id: str)	bool	Pin a media to user profile
media_unpin(media_id: str)	bool	Unpin a media to user profile
Low level methods:

Method	Return	Description
media_info_a1(media_pk: int, max_id: str = None)	Media	Get Media from PK by Public Web API
media_info_gql(media_pk: int)	Media	Get Media from PK by Public Graphql API
media_info_v1(media_pk: int)	Media	Get Media from PK by Private Mobile API
user_medias_gql(user_id: str, amount: int = 50, sleep: int = 2)	List[Media]	Get a user�s media by Public Graphql API
user_medias_paginated_gql(user_id: str, amount: int = 50, sleep: int = 2, end_cursor=None)	Tuple[List[Media], str]	Get a page of user�s media by Public Graphql API
user_medias_v1(user_id: str, amount: int = 18)	List[Media]	Get a user�s media by Private Mobile API
user_medias_paginated_v1(user_id: str, amount: int = 0, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s media by Private Mobile API
user_clips_v1(user_id: str, amount: int = 50)	List[Media]	Get a user�s clip by Private Mobile API
user_clips_paginated_v1(user_id: str, amount: int = 50, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s clip by Private Mobile API
user_videos_v1(user_id: str, amount: int = 50)	List[Media]	Get a user�s video by Private Mobile API
user_videos_paginated_v1(ser_id: int, amount: int = 50, end_cursor=��)	Tuple[List[Media], str]	Get a page of user�s video by Private Mobile API
usertag_medias_gql(user_id: str, amount: int = 20)	List[Media]	Get medias where a user is tagged by Public Graphql API
usertag_medias_v1(user_id: str, amount: int = 20)	List[Media]	Get medias where a user is tagged by Private Mobile API
Example:
>>> from instagrapi import Client
>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> cl.media_pk_from_code("B-fKL9qpeab")
2278584739065882267

>>> cl.media_pk_from_code("B8jnuB2HAbyc0q001y3F9CHRSoqEljK_dgkJjo0")
2243811726252050162

>>> cl.media_pk_from_url("https://www.instagram.com/p/BjNLpA1AhXM/")
1787135824035452364

>>> cl.media_info(1787135824035452364).dict()
{'pk': 1787135824035452364,
 'id': '1787135824035452364_1903424587',
 'code': 'BjNLpA1AhXM',
 'taken_at': datetime.datetime(2018, 5, 25, 15, 46, 53, tzinfo=datetime.timezone.utc),
 'media_type': 8,
 'product_type': '',
 'thumbnail_url': None,
 'location': {'pk': 260916528,
  'name': 'Foros, Crimea',
  'address': '',
  'lng': 33.7878,
  'lat': 44.3914,
  'external_id': 181364832764479,
  'external_id_source': 'facebook_places'},
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/123884060_...&oe=5FD7600E')},
 'comment_count': 0,
 'like_count': 48,
 'caption_text': '@mind__flowers ? ?????? ??? ??????, 24 ??? 2018 #downhill #skateboarding #downhillskateboarding #crimea #foros',
 'usertags': [],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': [{'pk': 1787135361353462176,
   'video_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t50.2886-16/33464086_3755...0e2362', scheme='https', ...),
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/3220311...AE7332', scheme='https', ...),
   'media_type': 2},
  {'pk': 1787135762219834098,
   'video_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t50.2886-16/32895...61320_n.mp4', scheme='https', ...),
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/3373413....8480_n.jpg', scheme='https', ...),
   'media_type': 2},
  {'pk': 1787133803186894424,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/324307712_n.jpg...', scheme='https', ...),
   'media_type': 1}]}

>>> cl.media_oembed("https://www.instagram.com/p/B3mr1-OlWMG/").dict()
{'version': '1.0',
 'title': '? ?????? ? ?? @delai_krasivo_kaifui',
 'author_name': 'example',
 'author_url': 'https://www.instagram.com/example',
 'author_id': 1903424587,
 'media_id': '2154602296692269830_1903424587',
 'provider_name': 'Instagram',
 'provider_url': 'https://www.instagram.com',
 'type': 'rich',
 'width': 658,
 'height': None,
 'html': '<blockquote>...',
 'thumbnail_url': 'https://instagram.frix7-1.fna.fbcdn.net/v...0655800983_n.jpg',
 'thumbnail_width': 640,
 'thumbnail_height': 480,
 'can_view': True}


>>> cl.media_archive('2155832952940083788_1903424587')
True

>>> cl.media_unarchive('2155832952940083788_1903424587')
True

>>> cl.user_medias_gql(1903424587, amount=1)[0].dict()
{'pk': 2592252466151482347,
 'id': '2592252466151482347_1903424587',
 'code': 'CP5h-I1FuPr',
 'taken_at': datetime.datetime(2021, 6, 9, 12, 9, 56, tzinfo=datetime.timezone.utc),
 'media_type': 8,
 'product_type': '',
 'thumbnail_url': None,
 'location': None,
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': '',
  'profile_pic_url': None,
  'profile_pic_url_hd': None,
  'stories': []},
 'comment_count': 5,
 'like_count': 63,
 'has_liked': None,
 'caption_text': '??????? ???????? ?? @daewon1song @tensortrucks',
 'usertags': [{'user': {'pk': 53860445,
    'username': 'tensortrucks',
    'full_name': '',
    'profile_pic_url': None,
    'profile_pic_url_hd': None,
    'stories': []},
   'x': 0.3146666667,
   'y': 0.368159204}],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': [{'pk': 2592252463089480898,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/198404255_317668533141074_749682826672118306_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=f8FR-bZNbp8AX-A6YQ4&edm=APU89FABAAAA&ccb=7-4&oh=864bb145a4fa7e523f5cc22f9ac5d015&oe=61145E4F&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/198404255_317668533141074_749682826672118306_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=f8FR-bZNbp8AX-A6YQ4&edm=APU89FABAAAA&ccb=7-4&oh=864bb145a4fa7e523f5cc22f9ac5d015&oe=61145E4F&_nc_sid=86f79a'),
   'media_type': 1},
  {'pk': 2592252463081081550,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/198228498_303261361473979_3031095263106513772_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=C9SeKrAO6poAX-nXhCG&edm=APU89FABAAAA&ccb=7-4&oh=6aab825e12fef746449be22c322762a1&oe=61132FB0&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/198228498_303261361473979_3031095263106513772_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=C9SeKrAO6poAX-nXhCG&edm=APU89FABAAAA&ccb=7-4&oh=6aab825e12fef746449be22c322762a1&oe=61132FB0&_nc_sid=86f79a'),
   'media_type': 1},
  {'pk': 2592252463056089912,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/199142152_323583732599636_4553823395468898634_n.jpg?_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=108&_nc_ohc=_feIkorChpsAX_wzTff&edm=APU89FABAAAA&ccb=7-4&oh=a22a2f5b30772fbbb02db92b9394e981&oe=61147D59&_nc_sid=86f79a', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/s1080x1080/199142152_323583732599636_4553823395468898634_n.jpg', query='_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=108&_nc_ohc=_feIkorChpsAX_wzTff&edm=APU89FABAAAA&ccb=7-4&oh=a22a2f5b30772fbbb02db92b9394e981&oe=61147D59&_nc_sid=86f79a'),
   'media_type': 1}]}

# Use paginated interface to resume fetch from stored cursor

>>> end_cursor = None
... for page in range(3):
...     medias, end_cursor = client.user_medias_paginated(1903424587, 5, end_cursor=end_cursor)
...     print([ m.taken_at.date().isoformat() for m in medias ])
...

['2021-06-09', '2019-10-16', '2019-10-14', '2019-06-13', '2019-06-06']
['2019-06-05', '2019-03-23', '2019-03-23', '2018-11-15', '2018-10-16']
['2018-10-16', '2018-10-11', '2018-10-09', '2018-10-09', '2018-08-02']

Download media
Method	Return	Description
photo_download(media_pk: int, folder: Path)	Path	Download photo (path to photo with best resoluton)
photo_download_by_url(url: str, filename: str, folder: Path)	Path	Download photo by URL (path to photo with best resoluton)
video_download(media_pk: int, folder: Path)	Path	Download video (path to video with best resoluton)
video_download_by_url(url: str, filename: str, folder: Path)	Path	Download Video by URL (path to video with best resoluton)
album_download(media_pk: int, folder: Path)	Path	Download Album (multiple paths to photo/video with best resolutons)
album_download_by_urls(urls: List[str], folder: Path)	Path	Download Album by URLs (multiple paths to photo/video)
igtv_download(media_pk: int, folder: Path)	Path	Download IGTV (path to video with best resoluton)
igtv_download_by_url(url: str, filename: str, folder: Path)	Path	Download IGTV by URL (path to video with best resoluton)
clip_download(media_pk: int, folder: Path)	Path	Download Reels Clip (path to video with best resoluton)
clip_download_by_url(url: str, filename: str, folder: Path)	Path	Download Reels Clip by URL (path to video with best resoluton)
Example:

>>> from instagrapi import Client
>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> cl.media_pk_from_url("https://www.instagram.com/p/BqNQJleFoSJ/")
1913256444155036809

>>> video_url = cl.media_info(1913256444155036809).video_url
>>> cl.video_download_by_url(video_url, folder='/tmp')
PosixPath('/tmp/45588546_367538213983456_6830188946193737023_n.mp4')


>>> cl.media_pk_from_url("http://www.instagram.com/p/BjNLpA1AhXM/")
1787135824035452364

>>> cl.album_download(1787135824035452364)
[PosixPath('/app/example_1787135361353462176.mp4'),
 PosixPath('/app/example_1787135762219834098.mp4'),
 PosixPath('/app/example_1787133803186894424.jpg')]

Upload media
Upload medias to your feed. Common arguments:

path - Path to source file
caption - Text for you post
usertags - List[Usertag] of mention users (see Usertag in types.py)
location - Location (e.g. Location(name='Test', lat=42.0, lng=42.0))
Method	Return	Description
photo_upload(path: Path, caption: str, upload_id: str, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload photo (Support JPG files)
video_upload(path: Path, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload video (Support MP4 files)
album_upload(paths: List[Path], caption: str, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload Album (Support JPG/MP4 files)
igtv_upload(path: Path, title: str, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload IGTV (Support MP4 files)
clip_upload(path: Path, caption: str, thumbnail: Path, usertags: List[Usertag], location: Location, extra_data: Dict = {})	Media	Upload Reels Clip (Support MP4 files)
clip_upload_as_reel_with_music(path: Path, caption: str, track: Track, extra_data: Dict = {})	Media	Upload Reels Clip as reel with music metadata
In extra_data, you can pass additional media settings, for example:

Method	Type	Description
custom_accessibility_caption	String	Set alternative text {"custom_accessibility_caption": "ALT TEXT HERE"}
like_and_view_counts_disabled	Int	Disable like and view counts {"like_and_view_counts_disabled": 1}
disable_comments	Int	Disable comments {"disable_comments": 1}
invite_coauthor_user_id	Int	Add a coauthor to the post {"invite_coauthor_user_id": "USER ID OF COAUTHOR HERE"}. You also need to add this user to usertags
Example:
>>> from instagrapi import Client

>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> media = cl.photo_upload(
    "/app/image.jpg",
    "Test caption for photo with #hashtags and mention users such @example",
    extra_data={
        "custom_accessibility_caption": "alt text example",
        "like_and_view_counts_disabled": 1,
        "disable_comments": 1,
    }
)

>>> media.dict()
{'pk': 2573347427873726764,
 'id': '2573347427873726764_1903424587',
 'code': 'CO2Xdn6FCEs',
 'taken_at': datetime.datetime(2021, 5, 14, 10, 9, tzinfo=datetime.timezone.utc),
 'media_type': 1,
 'product_type': 'feed',
 'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/185486538_463522984736407_6315244509641560230_n.jpg?se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=6tBMsh9HlmMAX9zI_jc&edm=ACqnv0EBAAAA&ccb=7-4&oh=2b46f1e9fbd2416eb7d08b398e0f639e&oe=60C30437&_nc_sid=9ec724&ig_cache_key=MjU3MzM0NzQyNzg3MzcyNjc2NA%3D%3D.2-ccb7-4', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/185486538_463522984736407_6315244509641560230_n.jpg', query='se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=6tBMsh9HlmMAX9zI_jc&edm=ACqnv0EBAAAA&ccb=7-4&oh=2b46f1e9fbd2416eb7d08b398e0f639e&oe=60C30437&_nc_sid=9ec724&ig_cache_key=MjU3MzM0NzQyNzg3MzcyNjc2NA%3D%3D.2-ccb7-4'),
 'location': None,
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
  'stories': []},
 'comment_count': 0,
 'like_count': 0,
 'has_liked': None,
 'caption_text': 'Test caption for photo with #hashtags and mention users such @example',
 'usertags': [],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': []}
Now let�s mention users (Usertag) and location:

>>> from instagrapi import Client
>>> from instagrapi.types import Usertag, Location

>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> example = cl.user_info_by_username('example')
>>> media = cl.photo_upload(
    "/app/image.jpg",
    "Test caption for photo with #hashtags and mention users such @example",
    usertags=[Usertag(user=example, x=0.5, y=0.5)],
    location=Location(name='Russia, Saint-Petersburg', lat=59.96, lng=30.29)
)

>>> media.dict()
{'pk': 2573355619819242434,
 'id': '2573355619819242434_1903424587',
 'code': 'CO2ZU1QFMPC',
 'taken_at': datetime.datetime(2021, 5, 14, 10, 25, 16, tzinfo=datetime.timezone.utc),
 'media_type': 1,
 'product_type': 'feed',
 'thumbnail_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-15/e35/185426950_474602463640866_4228057388625412955_n.jpg?se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=106&_nc_ohc=7NrVvAEG7f4AX_XPaOK&edm=ACqnv0EBAAAA&ccb=7-4&oh=bd2c90c2dcb693184e07c2777e09bb0b&oe=60C4E326&_nc_sid=9ec724&ig_cache_key=MjU3MzM1NTYxOTgxOTI0MjQzNA%3D%3D.2-ccb7-4', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/185426950_474602463640866_4228057388625412955_n.jpg', query='se=8&tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_cat=106&_nc_ohc=7NrVvAEG7f4AX_XPaOK&edm=ACqnv0EBAAAA&ccb=7-4&oh=bd2c90c2dcb693184e07c2777e09bb0b&oe=60C4E326&_nc_sid=9ec724&ig_cache_key=MjU3MzM1NTYxOTgxOTI0MjQzNA%3D%3D.2-ccb7-4'),
 'location': {'pk': 107617247320879,
  'name': 'Russia, Saint-Petersburg',
  'address': 'Russia, Saint-Petersburg',
  'lng': 30.30605,
  'lat': 59.93318,
  'external_id': 107617247320879,
  'external_id_source': 'facebook_places'},
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
  'stories': []},
 'comment_count': 0,
 'like_count': 0,
 'has_liked': None,
 'caption_text': 'Test caption for photo with #hashtags and mention users such @example',
 'usertags': [{'user': {'pk': 1903424587,
    'username': 'example',
    'full_name': 'Example Example',
    'profile_pic_url': HttpUrl('https://instagram.fhel5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724', scheme='https', host='instagram.fhel5-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=instagram.fhel5-1.fna.fbcdn.net&_nc_ohc=EtzrL0pAdg8AX-Xq8yS&edm=ACqnv0EBAAAA&ccb=7-4&oh=e2fd6a9d362f8587ea8123f23b248f1b&oe=60C2CB91&_nc_sid=9ec724'),
    'stories': []},
   'x': 0.5,
   'y': 0.5}],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': []}
Reels:

>>> clips = cl.user_clips_v1(25025320, amount=2)
>>> clips[0].dict()

{'pk': '3052048407587698594',
 'id': '3052048407587698594_25025320',
 'code': 'CpbDdszj7ei',
 'taken_at': datetime.datetime(2023, 3, 5, 21, 50, 4, tzinfo=datetime.timezone.utc),
 'media_type': 2,
 'product_type': 'clips',
 'thumbnail_url': HttpUrl('https://scontent-den4-1.cdninstagram.com/v/t51.2885-15/333966975_152901010970043_8971338145148712917_n.jpg?stp=dst-jpg_e15_p150x150&_nc_ht=scontent-den4-1.cdninstagram.com&_nc_cat=1&_nc_ohc=rRuJ7u4YrqEAX-UEMFq&edm=ACHbZRIBAAAA&ccb=7-5&ig_cache_key=MzA1MjA0ODQwNzU4NzY5ODU5NA%3D%3D.2-ccb7-5&oh=00_AfC_tNEWVjJLM5RQYUiQJFHQZSmvnDtAcpzs42DRSYt1pQ&oe=6409C451&_nc_sid=4a9e64', scheme='https', host='scontent-den4-1.cdninstagram.com', tld='com', host_type='domain', port='443', path='/v/t51.2885-15/333966975_152901010970043_8971338145148712917_n.jpg', query='stp=dst-jpg_e15_p150x150&_nc_ht=scontent-den4-1.cdninstagram.com&_nc_cat=1&_nc_ohc=rRuJ7u4YrqEAX-UEMFq&edm=ACHbZRIBAAAA&ccb=7-5&ig_cache_key=MzA1MjA0ODQwNzU4NzY5ODU5NA%3D%3D.2-ccb7-5&oh=00_AfC_tNEWVjJLM5RQYUiQJFHQZSmvnDtAcpzs42DRSYt1pQ&oe=6409C451&_nc_sid=4a9e64'),
 'location': {'pk': 213011753,
  'name': 'Sydney, Australia',
  'phone': '',
  'website': '',
  'category': '',
  'hours': {},
  'address': '',
  'city': '',
  'zip': None,
  'lng': 151.20797,
  'lat': -33.86751,
  'external_id': 110884905606108,
  'external_id_source': 'facebook_places'},
....
}
--------------------------------------



instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Compte
Visualisation et gestion de votre profil

M�thode	Retour	Description
compte_info()	Compte	Obtenez des informations priv�es pour votre compte (par exemple, e-mail, t�l�phone_num�ro)
account_edit (email : str, phone_number : str, username : str, full_name : str, biographie : str, external_url : str)	Compte	Modifier les donn�es du profil
compte_change_picture (chemin : Chemin)	UserShort	Changer l'image du profil
envoyer_confirmer_email(email : str)	dict	Envoyer le code de confirmation � la nouvelle adresse e-mail
envoyer_confirmer_phone_number(t�l�phone_number : str)	dict	Envoyez le code de confirmation au nouveau num�ro de t�l�phone
Exemple:

>>> de instagrapi importation Client
>>> cl = Client()
>>> cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)
>>> cl'.compte_info().dict()
{'pk': 1903424587,
 'nom d'utilisateur': "exemple ",
 'nom_complet': 'Exemple d'exemple',
 'est_priv�': Faux,
 'profil_pic_url': HttpUrl('https://instagram.frix7-1.fna.fbcdn.net/v/t51.2885-19/s150x150/200092102_504535360754500_904902738723095864_n.jpg?tp=1&_nc_ht=instagram.frix7-1.fna.fbcdn.net&_nc_ohc=T2ZT6yA6XzoAX9MvAQA&edm=AJlpnE4BAAAA&ccb=7-4&oh=3865b51bb33b365c9de8bcf9775e519c&oe=60E982F2&_nc_sid=312772'),
 'est_v�rifi�': Faux,
 "biographie": 'Ing�nieur : Python, JavaScript, Erlang, Go, Swift\n@dhbastards \n@bestskatetrick \n@asphalt_kings_lb \n@best_drift_daily \n@wrclive \n@surferyone \n@bmxtravel',
 'external_url': 'https://example.org/',
 " est_entreprise ": Faux,
 'anniversaire': '01/01/1984',
 "num�ro_t�l�phone": '+79991234567',
 " genre ": 1,
 " e-mail ": '...@gmail.com'}

>>> cl'.compte_modifier(externe_url='https://github.com/subzeroid/instagrapi')
Compte(pk=1903424587, nom d'utilisateur="exemple ", ...., externe_url='https://github.com/subzeroid/instagrapi')

>>> m�dia_pk = cl'.media_pk_from_url('https://www.instagram.com/p/BWnh360Fitr/')
1560364774164147051

>>> profil_pic_path = cl'.photo_t�l�chargement(m�dia_pk, dossier='/tmp')
PosixPath('/tmp/exemple_1560364774164147051.jpg')

>>> cl'.compte_change_picture(profil_pic_path)
UserShort(pk=1903424587, nom d'utilisateur="exemple ", ...)

>>> cl'.envoyer_confirmer_email("addr@example.com")
{
    'est_email_legit': Faux,
    'titre': �Email d�j� utilis�,
    'body': 'The email address you entered is already used on your account. Enter a different one to update your contact info.',
    'error_type': 'email_unchanged',
    'status': 'ok'
}

>>> cl.send_confirm_phone_number("+5599999999")
{
    'action': 'sms_sent',
    'phone_verification_settings': {'max_sms_count': 2,
    'resend_sms_delay_sec': 60,
    'robocall_count_down_time_sec': 30,
    'robocall_after_max_sms': True},
    'status': 'ok'
}
Low level methods:

Method	Return	Description
news_inbox_v1(mark_as_seen: bool = False)	dict	Get �Active recently� as is (old and new stories)
Example:

>>> cl.news_inbox_v1()
{'story_mentions': {'mentions_count_string': '0 stories mention you.',
  'reels': [],
  'product_stories_count': '0 stories mention your product.',
  'product_stories_reels': []},
 'counts': {'likes': 0,
  'activity_feed_dot_badge': 0,
  'relationships': 0,
  'new_posts': 0,
  'comments': 0,
  'comment_likes': 0,
  'shopping_notification': 0,
  'fundraiser': 0,
  'usertags': 0,
  'campaign_notification': 0,
  'photos_of_you': 0,
  'story_mentions': 0,
  'requests': 0},
 'last_checked': 1625468461.1633658,
 'friend_request_stories': [],
 'new_stories': [{'story_type': 159,
   'type': 13,
   'args': {'rich_text': 'An unrecognized XiaoMi MI 5s just logged in near Moscow, Russia, RU',
    'destination': 'login_activity',
    'icon_url': 'https://i.instagram.com/static/images/activity/info-1.5.png/3385260677b8.png',
    'should_icon_apply_filter': True,
    'icon_should_apply_filter': True,
    'extra': {'lat': 55.7522, 'long': 37.6156},
    'actions': ['hide'],
    'timestamp': 1625475888.805998,
    'tuuid': '0ceff44c-dd70-11eb-8080-808080808080',
    'clicked': False},
   'counts': {},
   'pk': 'xjQlWRMfNO+f739i2qZ1zf8HJTo='}],
 'old_stories': [{'type': 3,
   'story_type': 101,
   'args': {'links': [{'start': 24,
      'end': 33,
  ...
}

--------------------------------



instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
TOTP
Configuration TOTP et g�n�ration de code

M�thode	Retour	Description
totp_generate_seed()	str	G�n�rer 2FA TOTP seed
totp_enable (v�rification_code : str)	Liste[str]	Activez TOTP 2 FA (retournez les cl�s de sauvegarde, enregistrez-la)
totp_d�sactiver()	bool	D�sactiver TOTP 2FA
totp_generate_code (semence : str)	str	G�n�rez du code TOTP 2 FA (vous pouvez l'utiliser � la place de Google Authenticator)
Exemple:

>>> de instagrapi importation Client
>>> cl = Client()
>>> cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)

>>> semence = cl'.totp_generate_seed()
"67EIYPWCIJDTTVX632NEODKEU2PY5BIW"

>>> code = cl'.totp_generate_code(semence)
"123456"

>>> cl'.totp_enable(code)
["12345678", "12345678", "12345678", "12345678", "12345678"]

>>> cl'.totp_d�sactiver()
Vrai

---------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Utilisateur
Consultez une liste des m�dias, des suivis et des abonn�s d'un utilisateur

utilisateur_id - ID entier de l'utilisateur, exemple 1903424587
M�thode	Retour	Description
user_followers (user_id : str, montant : int = 0)	Dict[int, UserShort]	Obtenez dict des utilisateurs followers (amount=0 - r�cup�rez tous les abonn�s)
user_follow (user_id : str, montant : int = 0)	Dict[int, UserShort]	Obtenez dict des utilisateurs suivants (amount=0 - r�cup�rez tout)
search_followers (user_id : str, query : str)	Liste [UtilisateurCourt]	Recherche par suiveurs
search_follow (user_id : str, query : str)	Liste [UtilisateurCourt]	Recherchez en suivant
user_info(user_id: str)	Utilisateur	Obtenez des informations utilisateur
utilisateur_info_by_nom d'utilisateur(nom d'utilisateur : str)	Utilisateur	Obtenez des informations utilisateur par nom d'utilisateur
user_follow (user_id : str)	bool	Suivre l'utilisateur
user_unfollow (user_id : str)	bool	D�sensuivre l'utilisateur
user_id_from_username (nom d'utilisateur : str)	int	Obtenez l'identifiant_id par nom d'utilisateur
nom d'utilisateur_from_user_id(user_id : str)	str	Obtenez le nom d'utilisateur par user_id
user_remove_follower(user_id : str)	bool	Retirez votre suiveur
mute_posts_from_follow(user_id : str)	bool	Mettez les messages en sourdine de l'utilisateur suivant
unmute_posts_from_follow(user_id : str)	bool	D�muter les publications de l'utilisateur suivant
mute_stories_from_follow(user_id : str)	bool	Histoires muettes de l'utilisateur suivant
activer_posts_notifications (user_id : str)	bool	Activer les notifications post de l'utilisateur
d�sactiver_posts_notifications(user_id : str)	bool	D�sactiver les notifications post de l'utilisateur
activer_vid�os_notifications(user_id : str)	bool	Activer les notifications vid�o de l'utilisateur
d�sactiver_videos_notifications(user_id : str)	bool	D�sactiver les notifications de vid�os de l'utilisateur
activer_reels_notifications (user_id : str)	bool	Activer les notifications des rouleaux de l'utilisateur
d�sactiver_reels_notifications(user_id : str)	bool	D�sactiver les notifications des bobines de l'utilisateur
activer_stories_notifications(user_id : str)	bool	Activer les notifications d'histoires de l'utilisateur
d�sactiver_stories_notifications(user_id : str)	bool	D�sactiver les notifications d'histoires de l'utilisateur
fermer_friend_add(user_id: str)	bool	Ajouter � la liste des amis de Close
fermer_friend_remove(user_id : str)	bool	Supprimer de la liste des amis proches
M�thodes de bas niveau :

M�thode	Retour	Description
user_followers_gql_chunk(user_id: str, max_amount : int = 0, end_cursor : str = Aucun)	Tuple [Liste [UserShort], str]	Obtenez les informations des abonn�s de l'utilisateur par l'API Public Graphql et end_cursor
user_followers_gql(user_id: str, amount: int = 0)	List[UserShort]	Get user�s followers information by Public Graphql API
user_followers_v1_chunk(user_id: str, max_amount: int = 0, max_id: str = ��)	Tuple[List[UserShort], str]	Get user�s followers information by Private Mobile API and max_id (cursor)
user_followers_v1(user_id: str, amount: int = 0)	List[UserShort]	Get user�s followers information by Private Mobile API
user_following_v1(user_id: str, amount: int = 0)	List[UserShort]	Get user�s following users information by Private Mobile API
user_following_gql(user_id: str, amount: int = 0)	List[UserShort]	Get user�s following information by Public Graphql API
search_followers_v1(user_id: str, query: str)	List[UserShort]	Search by followers by Private Mobile API
search_following_v1(user_id: str, query: str)	List[UserShort]	Search by following by Private Mobile API
Example:

>>> cl.user_followers(cl.user_id).keys()
dict_keys([5563084402, 43848984510, 1498977320, ...])

>>> cl.user_following(cl.user_id)
{
  8530498223: UserShort(
    pk=8530498223,
    username="something",
    full_name="Example description",
    profile_pic_url=HttpUrl(
      'https://instagram.frix7-1.fna.fbcdn.net/v/t5...9217617140_n.jpg',
      scheme='https',
      host='instagram.frix7-1.fna.fbcdn.net',
      ...
    ),
  ),
  49114585: UserShort(
    pk=49114585,
    username='gx1000',
    full_name='GX1000',
    profile_pic_url=HttpUrl(
      'https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/10388...jpg',
      scheme='https',
      host='scontent-hel3-1.cdninstagram.com',
      ...
    )
  ),
  ...
}

>>> cl.user_info_by_username('example').dict()
{'pk': 1903424587,
 'username': 'example',
 'full_name': 'Example Example',
 'is_private': False,
 'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/123884060_803537687159702_2508263208740189974_n.jpg?...', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', ...'),
 'is_verified': False,
 'media_count': 102,
 'follower_count': 576,
 'following_count': 538,
 'biography': 'Engineer: Python, JavaScript, Erlang',
 'external_url': HttpUrl('https://example.org/', scheme='https', host='example.org', tld='com', host_type='domain', path='/'),
 'is_business': False}

Example: We go around the list of our followers and unfollow from them:

from instagrapi import Client
cl = Client()
cl.login(USERNAME, PASSWORD)

followers = cl.user_followers(cl.user_id)
for user_id in followers.keys():
    cl.user_unfollow(user_id)

------------------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Utilisateur
Consultez une liste des m�dias, des suivis et des abonn�s d'un utilisateur

utilisateur_id - ID entier de l'utilisateur, exemple 1903424587
M�thode	Retour	Description
user_followers (user_id : str, montant : int = 0)	Dict[int, UserShort]	Obtenez dict des utilisateurs followers (amount=0 - r�cup�rez tous les abonn�s)
user_follow (user_id : str, montant : int = 0)	Dict[int, UserShort]	Obtenez dict des utilisateurs suivants (amount=0 - r�cup�rez tout)
search_followers (user_id : str, query : str)	Liste [UtilisateurCourt]	Recherche par suiveurs
search_follow (user_id : str, query : str)	Liste [UtilisateurCourt]	Recherchez en suivant
user_info(user_id: str)	Utilisateur	Obtenez des informations utilisateur
utilisateur_info_by_nom d'utilisateur(nom d'utilisateur : str)	Utilisateur	Obtenez des informations utilisateur par nom d'utilisateur
user_follow (user_id : str)	bool	Suivre l'utilisateur
user_unfollow (user_id : str)	bool	D�sensuivre l'utilisateur
user_id_from_username (nom d'utilisateur : str)	int	Obtenez l'identifiant_id par nom d'utilisateur
nom d'utilisateur_from_user_id(user_id : str)	str	Obtenez le nom d'utilisateur par user_id
user_remove_follower(user_id : str)	bool	Retirez votre suiveur
mute_posts_from_follow(user_id : str)	bool	Mettez les messages en sourdine de l'utilisateur suivant
unmute_posts_from_follow(user_id : str)	bool	D�muter les publications de l'utilisateur suivant
mute_stories_from_follow(user_id : str)	bool	Histoires muettes de l'utilisateur suivant
activer_posts_notifications (user_id : str)	bool	Activer les notifications post de l'utilisateur
d�sactiver_posts_notifications (user_id : str)	bool	D�sactiver les notifications post de l'utilisateur
activer_vid�os_notifications(user_id : str)	bool	Activer les notifications vid�o de l'utilisateur
d�sactiver_videos_notifications(user_id : str)	bool	D�sactiver les notifications de vid�os de l'utilisateur
activer_reels_notifications (user_id : str)	bool	Activer les notifications des rouleaux de l'utilisateur
d�sactiver_reels_notifications(user_id : str)	bool	D�sactiver les notifications des bobines de l'utilisateur
activer_stories_notifications(user_id : str)	bool	Activer les notifications d'histoires de l'utilisateur
d�sactiver_stories_notifications(user_id : str)	bool	D�sactiver les notifications d'histoires de l'utilisateur
fermer_friend_add(user_id: str)	bool	Ajouter � la liste des amis de Close
fermer_friend_remove(user_id : str)	bool	Supprimer de la liste des amis proches
M�thodes de bas niveau :

M�thode	Retour	Description
user_followers_gql_chunk(user_id: str, max_amount : int = 0, end_cursor : str = Aucun)	Tuple [Liste [UserShort], str]	Obtenez les informations des abonn�s de l'utilisateur par l'API Public Graphql et end_cursor
user_followers_gql(user_id: str, amount: int = 0)	List[UserShort]	Get user�s followers information by Public Graphql API
user_followers_v1_chunk(user_id: str, max_amount: int = 0, max_id: str = ��)	Tuple[List[UserShort], str]	Get user�s followers information by Private Mobile API and max_id (cursor)
user_followers_v1(user_id: str, amount: int = 0)	List[UserShort]	Get user�s followers information by Private Mobile API
user_following_v1(user_id: str, amount: int = 0)	List[UserShort]	Get user�s following users information by Private Mobile API
user_following_gql(user_id: str, amount: int = 0)	List[UserShort]	Get user�s following information by Public Graphql API
search_followers_v1(user_id: str, query: str)	List[UserShort]	Search by followers by Private Mobile API
search_following_v1(user_id: str, query: str)	List[UserShort]	Search by following by Private Mobile API
Example:

>>> cl.user_followers(cl.user_id).keys()
dict_keys([5563084402, 43848984510, 1498977320, ...])

>>> cl.user_following(cl.user_id)
{
  8530498223: UserShort(
    pk=8530498223,
    username="something",
    full_name="Example description",
    profile_pic_url=HttpUrl(
      'https://instagram.frix7-1.fna.fbcdn.net/v/t5...9217617140_n.jpg',
      scheme='https',
      host='instagram.frix7-1.fna.fbcdn.net',
      ...
    ),
  ),
  49114585: UserShort(
    pk=49114585,
    username='gx1000',
    full_name='GX1000',
    profile_pic_url=HttpUrl(
      'https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/10388...jpg',
      scheme='https',
      host='scontent-hel3-1.cdninstagram.com',
      ...
    )
  ),
  ...
}

>>> cl.user_info_by_username('example').dict()
{'pk': 1903424587,
 'username': 'example',
 'full_name': 'Example Example',
 'is_private': False,
 'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/123884060_803537687159702_2508263208740189974_n.jpg?...', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', ...'),
 'is_verified': False,
 'media_count': 102,
 'follower_count': 576,
 'following_count': 538,
 'biography': 'Engineer: Python, JavaScript, Erlang',
 'external_url': HttpUrl('https://example.org/', scheme='https', host='example.org', tld='com', host_type='domain', path='/'),
 'is_business': False}

Example: We go around the list of our followers and unfollow from them:

from instagrapi import Client
cl = Client()
cl.login(USERNAME, PASSWORD)

followers = cl.user_followers(cl.user_id)
for user_id in followers.keys():
    cl.user_unfollow(user_id)

--------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Emplacement (lieu)
Affichage des informations de localisation et des m�dias par emplacement

M�thode	Retour	Description
localisation_recherche(lat : float, lng : float)	Liste[Lieu]	Localisation de recherche par coordonn�es GEO
emplacement_complet (emplacement : Emplacement)	Emplacement	Champs vierges complets
localisation_build(emplacement : Emplacement)	Cha�ne	JSON s�rialis�
localisation_info(localisation_pk : int)	Emplacement	Retour Informations sur l'emplacement (pk, nom, adresse, lng, lat, external_id, external_id_source)
localisation_medias_top(localisation_pk : int, montant : int = 9)	Liste[M�dia]	Retourner les meilleurs messages par emplacement
localisation_medias_recent(location_pk: int, montant : int = 24)	Liste[M�dia]	Retour Posts les plus r�cents par Localisation
fbsearch_places(requ�te: str, lat : float = 40.74, lng : float = -73.94)	Liste[Lieu]	>Rechercher des lieux via Facebook Search (40.74/-73.94 - New York, GEO par d�faut)
Exemple:

>>> de instagrapi importation Client

>>> cl = Client()
>>> cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)

>>> emplacement = cl'.localisation_recherche(59.96, 30.29)[0]
>>> emplacement'.dict()
{'pk': Aucun,
 'nom': " Russie, Saint-P�tersbourg ",
 'adresse': " Russie, Saint-P�tersbourg ",
 " Je vais ": 30.30605,
 'lat': 59.93318,
 "acide_externe": 107617247320879,
 'external_id_source': 'facebook_places'}

>>> emplacement = cl'.localisation_complet(emplacement)
>>> emplacement'.dict()
{'pk': 107617247320879,
 'nom': " Russie, Saint-P�tersbourg ",
 'adresse': " Russie, Saint-P�tersbourg ",
 " Je vais ": 30.30605,
 'lat': 59.93318,
 "acide_externe": 107617247320879,
 'external_id_source': 'facebook_places'}

>>> cl'.localisation_construire(emplacement)
'{"name":"Russie, Saint-P�tersbourg","adresse":"Russie, Saint-P�tersbourg","lat":59.93318",lng":30.30605",_source externe":"facebook_places","facebook_places_id":107617247320879}'

>>> emplacement = cl'.localisation_info(107617247320879)
>>> emplacement'.dict()
{'pk': 107617247320879,
 'nom': " Russie, Saint-P�tersbourg ",
 'adresse': '',
 " Je vais ": 30.30605,
 'lat': 59.93318,
 "acide_externe": Aucun,
 'external_id_source': Aucun}

>>> m�dias = cl'.localisation_medias_top(107617247320879, montant=2)
>>> m�dias[0].dict()
{'pk': 2574095228556148891,
 "id": '2574095228556148891_8227888596',
 "code": 'CO5BfjkHgCb',
 'pris_�': dateheure'.dateheure(2021, 5, 15, 11, 6, 25, tzinfo=dateheure'.fuseau horaire'.utc),
 "m�dia_type ": 2,
 'produit_type': 'alimenter',
 'pouce_url': HttpUrl('https://instagram.fhel3-1.fna.fbcdn.net/v/t51.2885-15/e35/185874360_510656656615872_846247842213042525_n.jpg?tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=1&_nc_ohc=vUIk3PZPPrMAX_GGZ7n&edm=AP_V10EBAAAA&ccb=7-4&oh=e418e018b9fc07b7d6b78f0790ddb481&oe=60A24C1F&_nc_sid=4f375e', sch�ma=" https ", h�te='instagram.fhel3-1.fna.fbcdn.net', tld='net', h�te_type=" domaine ", chemin='/v/t51.2885-15/e35/185874360_5106566615872_846247842213042525_n.jpg', requ�te='tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=1&_nc_ohc=vUIk3PZPPrMAX_GGZ7n&edm=AP_V10EBAAAA&ccb=7-4&oh=e418e018b9fc07b7d6b78f0790ddb481&oe=60A24C1F&_nc_sid=4f375e'),
 " emplacement ": {'pk': 107617247320879,
  'nom': " Russie, Saint-P�tersbourg ",
  'adresse': '',
  " Je vais ": 30.30605,
  'lat': 59.93318,
  "acide_externe": 107617247320879,
  'external_id_source': 'facebook_places'},
 'utilisateur': {'pk': 8227888596,
  'nom d'utilisateur': 'mzefirov',
  'nom_complet': '?????? ????? ? ????? ? ??? ? ?? ? ???? ? ',
  'profil_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/54513886_664942437287042_6311410572676038656_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=mOWHIYJXbMsAX8wXvzf&edm=AP_V10EBAAAA&ccb=7-4&oh=90fa78d26bbb2c577dbc27d012c7cf09&oe=60C6A82B&_nc_sid=4f375e', sch�ma=" https ", h�te='scontent-hel3-1.cdninstagram.com', tld='com', h�te_type=" domaine ", chemin='/v/t51.2885-19/s150x150/54513886_664942437287042_6311410572676038656_n.jpg', requ�te='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=mOWHIYJXbMsAX8wXvzf&edm=AP_V10EBAAAA&ccb=7-4&oh=90fa78d26bbb2c577dbc27d012c7cf09&oe=60C6A82B&_nc_sid=4f375e'),
  " histoires ": []},
 'comment_count': 94,
 'comme_compter': 3995,
 'a_ai aim�': Aucun,
 'caption_texte': '???????? ??????, ??? ??????? ? ?????? ? ??.\n\n?????  ? ?? ??????? ??????...  ? ?? ??????????.',
 " �tiquettes d'utilisateur ": [],
 'vid�o_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t50.2886-16/185466467_1373704339669543_4721533329541547409_n.mp4?_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_cat=107&_nc_ohc=IdbMAqYCjngAX987nBb&edm=AP_V10EBAAAA&ccb=7-4&oe=60A1DADD&oh=7c69dc13e5344f7095a94eb717b1ee9e&_nc_sid=4f375e', sch�ma=" https ", h�te='scontent-hel3-1.cdninstagram.com', tld='com', h�te_type=" domaine ", chemin='/v/t50.2886-16/185466467_1373704339669543_472153329541547409_n.mp4', requ�te='_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_cat=107&_nc_ohc=IdbMAqYCjngAX987nBb&edm=AP_V10EBAAAA&ccb=7-4&oe=60A1DADD&oh=7c69dc13e5344f7095a94eb717b1ee9e&_nc_sid=4f375e'),
 'voir_compter': 36295,
 "vid�o_dur�e ": 55.433,
 'titre': '',
 " ressources ": []}

>>> m�dias = cl'.localisation_medias_recent(107617247320879, montant=2)
>>> m�dias[0].dict()
{'pk': 2574187014843321420,
 "id": '2574187014843321420_5600296444',
 "code": 'CO5WXONKMxM',
 'pris_�': dateheure'.dateheure(2021, 5, 15, 13, 57, 6, tzinfo=dateheure'.fuseau horaire'.utc),
 "m�dia_type ": 1,
 'produit_type': '',
 'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/p1080x1080/186279877_479327446453989_5642409805215171470_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=Nx9KwOGWXLYAX_bh1Dx&edm=AP_V10EBAAAA&ccb=7-4&oh=999395b5e4a3c688bcb388616f405161&oe=60C4C08C&_nc_sid=4f375e', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', path='/v/t51.2885-15/e35/p1080x1080/186279877_479327446453989_5642409805215171470_n.jpg', query='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=Nx9KwOGWXLYAX_bh1Dx&edm=AP_V10EBAAAA&ccb=7-4&oh=999395b5e4a3c688bcb388616f405161&oe=60C4C08C&_nc_sid=4f375e'),
 'location': {'pk': 107617247320879,
  'name': 'Russia, Saint-Petersburg',
  'address': '',
  'lng': 30.30605,
  'lat': 59.93318,
  'external_id': 107617247320879,
  'external_id_source': 'facebook_places'},
 'user': {'pk': 5600296444,
  'username': 'sultanieriabinina',
  'full_name': '???????? ?????????',
  'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/92693550_492095081670507_2163230119093600256_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=_8hEZtz-JSIAX_NCxXx&edm=AP_V10EBAAAA&ccb=7-4&oh=17d2d1a8ae00765b8471cde868937c13&oe=60C69D73&_nc_sid=4f375e', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', path='/v/t51.2885-19/s150x150/92693550_492095081670507_2163230119093600256_n.jpg', query='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=_8hEZtz-JSIAX_NCxXx&edm=AP_V10EBAAAA&ccb=7-4&oh=17d2d1a8ae00765b8471cde868937c13&oe=60C69D73&_nc_sid=4f375e'),
  'stories': []},
 'comment_count': 0,
 'like_count': 0,
 'has_liked': None,
 'caption_text': '',
 'usertags': [{'user': {'pk': 3955327494,
    'username': '_parikmakher_irishka3127',
    'full_name': '?????',
    'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/176040256_461659781826794_5379061705031591554_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=uVHqkpa8v0UAX-cmGUE&edm=AP_V10EBAAAA&ccb=7-4&oh=22db3640b911117484d78422eec4f778&oe=60C523D5&_nc_sid=4f375e', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', path='/v/t51.2885-19/s150x150/176040256_461659781826794_5379061705031591554_n.jpg', query='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=uVHqkpa8v0UAX-cmGUE&edm=AP_V10EBAAAA&ccb=7-4&oh=22db3640b911117484d78422eec4f778&oe=60C523D5&_nc_sid=4f375e'),
    'stories': []},
   'x': 0.352,
   'y': 0.292}],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': []}

Facebook Search:

>>> place = cl.fbsearch_places('Perch')[2]
>>> place.dict()
{
 'pk': 3824034,
 'name': 'Perch',
 'phone': '',
 'website': '',
 'category': '',
 'hours': {},
 'address': None,
 'city': None,
 'zip': None,
 'lng': -118.25135,
 'lat': 34.04882,
 'external_id': 207298912632228,
 'external_id_source': 'facebook_places'
}

>>> cl.location_info(place.pk).dict()
{
 'pk': 3824034,
 'name': 'Perch',
 'phone': '(213) 802-1770',
 'website': 'http://www.perchla.com',
 'category': '',
 'hours': {},
 'address': '448 S Hill St',
 'city': 'Los Angeles, California',
 'zip': '90013',
 'lng': -118.25135,
 'lat': 34.04882,
 'external_id': None,
 'external_id_source': None
}
>>> place = cl.fbsearch_places("Villa Sirot", 46.7032028502, 4.3093986902)[0]
>>> place.dict()
{'pk': 1001956449,
 'name': 'Villa Sirot',
 'phone': '',
 'website': '',
 'category': '',
 'hours': {},
 'address': None,
 'city': None,
 'zip': None,
 'lng': 4.3093986902426,
 'lat': 46.703202850229,
 'external_id': 165573396905197,
 'external_id_source': 'facebook_places'}

>>> cl.location_info(place.pk).dict()
{'pk': 1001956449,
 'name': 'Villa Sirot',
 'phone': '',
 'website': None,
 'category': 'Local Business',
 'hours': {'status': '',
  'current_status': '',
  'hours_today': '',
  'schedule': []},
 'address': None,
 'city': None,
 'zip': None,
 'lng': None,
 'lat': None,
 'external_id': 165573396905197,
 'external_id_source': None}

Low level methods:

Method	Return	Description
location_info_a1(location_pk: int)	Location	Get a location using location pk (Public Web API)
location_info_v1(location_pk: int)	Location	Get a location using location pk (Private Mobile API)
location_medias_a1_chunk(location_pk: int, max_amount: int = 24, sleep: float = 0.5, tab_key: str = �edge_location_to_top_posts|edge_location_to_media�, max_id: str = None)	Tuple[List[Media], str]	Get chunk of medias and end_cursor (Public Web API)
location_medias_a1(location_pk: int, amount: int = 24, sleep: float = 0.5, tab_key: str = �edge_location_to_top_posts|edge_location_to_media�)	List[Media]	Get medias for a location (Public Web API)
location_medias_v1_chunk(location_pk: int, max_amount: int = 63, tab_key: str = �ranked|recent�, max_id: str = None)	Tuple[List[Media], str] Get chunk of medias for a location and max_id (cursor) by Private Mobile API	 
location_medias_v1(location_pk: int, amount: int = 63, tab_key: str = �ranked|recent�)	List[Media]	Get medias for a location (Private Mobile API)
location_medias_top_a1(location_pk: int, amount: int = 9, sleep: float = 0.5)	List[Media]	Get top medias for a location (Public Web API)
location_medias_top_v1(location_pk: int, amount: int = 21)	List[Media]	Get top medias for a location (Private Mobile API)
location_medias_recent_a1(location_pk: int, amount: int = 24, sleep: float = 0.5)	List[Media]	Get recent medias for a location (Public Web API)
location_medias_recent_v1(location_pk: int, amount: int = 63)	List[Media]	Get recent medias for a location (Private Mobile API)


---------------------------------


instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Hashtag
Affichage des informations et des m�dias du hashtag par hashtag

M�thode	Retour	Description
hashtag_info(nom: str)	Hashtag	Renvoyez les informations Hashtag (identifiant, nom, image)
hashtag_related_hashtags (nom : str)	Liste[Hashtag]	Liste de retour du Hashtag associ�
hashtag_medias_top(nom : str, montant : int = 9)	Liste[M�dia]	Retour Top posts par Hashtag
hashtag_medias_recent(nom: str, montant : int = 27)	Liste[M�dia]	Retour Messages les plus r�cents par Hashtag
Exemple:

>>> de instagrapi importation Client

>>> cl = Client()
>>> cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)

>>> hashtag = cl'.hashtag_info('descente')
>>> hashtag'.dict()
{"id": 17841563089103670,
 'nom': 'descente',
 'm�dia_compte': 5178255,
 'profil_pic_url': HttpUrl('https://instagram.fhel3-1.fna.fbcdn.net/v/t51.2885-15/e35/s150x150/184304495_294863488920457_8839934375675895594_n.jpg?tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=101&_nc_ohc=L3i9yzFUBR8AX_MAXgr&edm=ABZsPhsBAAAA&ccb=7-4&oh=21a944a197506a42658e8273d92740b7&oe=60C37E35&_nc_sid=4efc9f', sch�ma=" https ", h�te='instagram.fhel3-1.fna.fbcdn.net', tld='net', h�te_type=" domaine ", chemin='/v/t51.2885-15/e35/s150x150/184304495_294863488920457_8839934375675895594_n.jpg', requ�te='tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=101&_nc_ohc=L3i9yzFUBR8AX_MAXgr&edm=ABZsPhsBAAAA&ccb=7-4&oh=21a944a197506a42658e8273d92740b7&oe=60C37E35&_nc_sid=4efc9f')}

>>> m�dias = cl'.hashtag_medias_top('descente', montant=2)
>>> m�dias[0].dict()
{'pk': 2574092718364154697,
 "id": '2574092718364154697_376712420',
 "code": 'CO5A7BxA9tJ',
 'pris_�': dateheure'.dateheure(2021, 5, 15, 10, 49, 45, tzinfo=dateheure'.fuseau horaire'.utc),
 "m�dia_type ": 1,
 'produit_type': '',
 'pouce_url': HttpUrl('https://instagram.fhel3-1.fna.fbcdn.net/v/t51.2885-15/e35/s1080x1080/186430270_473573763896149_2030909827389015824_n.jpg?tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=101&_nc_ohc=4jFHY_INCnMAX-7fObK&edm=AP_V10EBAAAA&ccb=7-4&oh=9fb0c4cdb01a7aa376a96c0df366d844&oe=60C4C01A&_nc_sid=4f375e', sch�ma=" https ", h�te='instagram.fhel3-1.fna.fbcdn.net', tld='net', h�te_type=" domaine ", chemin='/v/t51.2885-15/e35/s1080x1080/186430270_473573763896149_2030909827389015824_n.jpg', requ�te='tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=101&_nc_ohc=4jFHY_INCnMAX-7fObK&edm=AP_V10EBAAAA&ccb=7-4&oh=9fb0c4cdb01a7aa376a96c0df366d844&oe=60C4C01A&_nc_sid=4f375e'),
 " emplacement ": {'pk': 517543,
  'nom': "Sestola",
  'adresse': '',
  " Je vais ": 10.77328,
  'lat': 44.2266,
  "acide_externe": 103150459725396,
  'external_id_source': 'facebook_places'},
 'utilisateur': {'pk': 376712420,
  'nom d'utilisateur': " vascobica ",
  'nom_complet': '?Vasco Bic�?',
  'profil_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/96211403_922669918147090_5138958292701151232_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=tYlGX8kDuSgAX9WtBRF&edm=AP_V10EBAAAA&ccb=7-4&oh=ac96c75846d17519e53923a0ddb3aad0&oe=60C51486&_nc_sid=4f375e', sch�ma=" https ", h�te='scontent-hel3-1.cdninstagram.com', tld='com', h�te_type=" domaine ", chemin='/v/t51.2885-19/s150x150/96211403_922669918147090_5138958292701151232_n.jpg', requ�te='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=tYlGX8kDuSgAX9WtBRF&edm=AP_V10EBAAAA&ccb=7-4&oh=ac96c75846d17519e53923a0ddb3aad0&oe=60C51486&_nc_sid=4f375e'),
  " histoires ": []},
 'comment_count': 8,
 'comme_compter': 327,
 'a_ai aim�': Aucun,
 'caption_texte': 'Pr�t � combattre ?\n#js7 \n'.\n'.\n#sports de montagne suisses #racing #coppaitaliadh \n#mirandabikeparts\xa0#br�lant\xa0#saut \xa0#whipit\xa0#gommage\xa0#enduro\xa0#mtblife\xa0 #descente\xa0#mountainbiking\xa0#glissant\xa0#salet�\xa0#dh\xa0 #mtb\xa0#v�lo\xa0#bikelife\xa0#amis\xa0#mtbssuisse\xa0#descendremtb\xa0#valais\xa0 #montagnes suisses\xa0\xa0#italie #italydownhill',
 " �tiquettes d'utilisateur ": [{'utilisateur': {'pk': 3636959873,
    'username': 'christopherstrm',
    'full_name': 'Christopher Stro�m',
    'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/173775865_527371595096868_8991176723035066304_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=tbsAzTDoLtEAX_HaT9Z&edm=AP_V10EBAAAA&ccb=7-4&oh=94a18b3b4d0d39d9dbda849b4c23a5a9&oe=60C5192F&_nc_sid=4f375e', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', path='/v/t51.2885-19/s150x150/173775865_527371595096868_8991176723035066304_n.jpg', query='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=tbsAzTDoLtEAX_HaT9Z&edm=AP_V10EBAAAA&ccb=7-4&oh=94a18b3b4d0d39d9dbda849b4c23a5a9&oe=60C5192F&_nc_sid=4f375e'),
    'stories': []},
   'x': 0.211352657,
   'y': 0.8478260870000001}],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': []}

>>> medias = cl.hashtag_medias_recent('downhill', amount=2)
>>> medias[0].dict()
{'pk': 2574205305714324167,
 'id': '2574205305714324167_2984719638',
 'code': 'CO5ahY6BzLH',
 'taken_at': datetime.datetime(2021, 5, 15, 14, 33, 27, tzinfo=datetime.timezone.utc),
 'media_type': 8,
 'product_type': '',
 'thumbnail_url': None,
 'location': {'pk': 703017966745848,
  'name': 'Le Canyon Du Diable',
  'address': '',
  'lng': 3.4480762482,
  'lat': 43.6966105493,
  'external_id': 703017966745848,
  'external_id_source': 'facebook_places'},
 'user': {'pk': 2984719638,
  'username': 'lilian.champion',
  'full_name': 'Lilian ????',
  'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/169115203_291696755653751_6779914563403118432_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=VEqYwd5W1FYAX_7ID-6&edm=AP_V10EBAAAA&ccb=7-4&oh=7fe193da2e706c0cafd9e1d432734891&oe=60C59786&_nc_sid=4f375e', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', path='/v/t51.2885-19/s150x150/169115203_291696755653751_6779914563403118432_n.jpg', query='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=VEqYwd5W1FYAX_7ID-6&edm=AP_V10EBAAAA&ccb=7-4&oh=7fe193da2e706c0cafd9e1d432734891&oe=60C59786&_nc_sid=4f375e'),
  'stories': []},
 'comment_count': 0,
 'like_count': 0,
 'has_liked': None,
 'caption_text': "Quand on te prend en photo sans que tu aies demand� et que la personne t'envoie tout par mail apr�s...???????? Merci l'inconnu du coup \n\n#downhill #mountainlovers #ytowners #vanlife #vanlifefrance",
 'usertags': [],
 'video_url': None,
 'view_count': 0,
 'video_duration': 0.0,
 'title': '',
 'resources': [{'pk': 2574205301050111226,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel3-1.fna.fbcdn.net/v/t51.2885-15/e35/184312115_2977220092557985_8274386175388868273_n.jpg?tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=101&_nc_ohc=YoLLGA0cAhsAX8MxnSo&edm=AP_V10EBAAAA&ccb=7-4&oh=b0f2740aaff1d80c5f5219ffa267a186&oe=60C4273E&_nc_sid=4f375e', scheme='https', host='instagram.fhel3-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/184312115_2977220092557985_8274386175388868273_n.jpg', query='tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=101&_nc_ohc=YoLLGA0cAhsAX8MxnSo&edm=AP_V10EBAAAA&ccb=7-4&oh=b0f2740aaff1d80c5f5219ffa267a186&oe=60C4273E&_nc_sid=4f375e'),
   'media_type': 1},
  {'pk': 2574205301083731874,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel6-1.fna.fbcdn.net/v/t51.2885-15/e35/186524178_143770224434390_4909324648747352588_n.jpg?tp=1&_nc_ht=instagram.fhel6-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=w6z9v4MwYg8AX9FdWk0&edm=AP_V10EBAAAA&ccb=7-4&oh=99295fa82472bf4a425fc49bd03c1310&oe=60C40AFC&_nc_sid=4f375e', scheme='https', host='instagram.fhel6-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/186524178_143770224434390_4909324648747352588_n.jpg', query='tp=1&_nc_ht=instagram.fhel6-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=w6z9v4MwYg8AX9FdWk0&edm=AP_V10EBAAAA&ccb=7-4&oh=99295fa82472bf4a425fc49bd03c1310&oe=60C40AFC&_nc_sid=4f375e'),
   'media_type': 1},
  {'pk': 2574205301066842492,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-15/e35/186787154_332065288355469_7843843424299639709_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=-qZy9_HakCQAX-Cqk9v&edm=AP_V10EBAAAA&ccb=7-4&oh=031077ab2f56db0bab7ffbc920f80a41&oe=60C4F57B&_nc_sid=4f375e', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', path='/v/t51.2885-15/e35/186787154_332065288355469_7843843424299639709_n.jpg', query='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=-qZy9_HakCQAX-Cqk9v&edm=AP_V10EBAAAA&ccb=7-4&oh=031077ab2f56db0bab7ffbc920f80a41&oe=60C4F57B&_nc_sid=4f375e'),
   'media_type': 1},
  {'pk': 2574205301075310332,
   'video_url': None,
   'thumbnail_url': HttpUrl('https://instagram.fhel3-1.fna.fbcdn.net/v/t51.2885-15/e35/185727252_524026898594344_9165723485744355754_n.jpg?tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=104&_nc_ohc=45NguRpEtZQAX83VSGE&edm=AP_V10EBAAAA&ccb=7-4&oh=c8c087ecfba444d9d85f7bd059f42a2a&oe=60C5C3C2&_nc_sid=4f375e', scheme='https', host='instagram.fhel3-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-15/e35/185727252_524026898594344_9165723485744355754_n.jpg', query='tp=1&_nc_ht=instagram.fhel3-1.fna.fbcdn.net&_nc_cat=104&_nc_ohc=45NguRpEtZQAX83VSGE&edm=AP_V10EBAAAA&ccb=7-4&oh=c8c087ecfba444d9d85f7bd059f42a2a&oe=60C5C3C2&_nc_sid=4f375e'),
   'media_type': 1}]}
Low level methods:

Method	Return	Description
hashtag_info_a1(name: str, max_id: str = None)	Hashtag	Get information about a hashtag by Public Web API
hashtag_info_gql(name: str, amount: int = 12, end_cursor: str = None)	Hashtag	Get information about a hashtag by Public Graphql API
hashtag_info_v1(name: str)	Hashtag	Get information about a hashtag by Private Mobile API
hashtag_medias_a1_chunk(name: str, max_amount: int = 27, tab_key: str = �edge_hashtag_to_top_posts|edge_hashtag_to_media�, end_cursor: str = None)	Tuple[List[Media], str]	Get chunk of medias and end_cursor by Public Web API
hashtag_medias_a1(name: str, amount: int = 27, tab_key: str = �edge_hashtag_to_top_posts|edge_hashtag_to_media�)	List[Media]	Get medias for a hashtag by Public Web API
hashtag_medias_v1_chunk(name: str, max_amount: int = 27, tab_key: str = �top|recent�, max_id: str = None)	Tuple[List[Media], str]	Get chunk of medias for a hashtag and max_id (cursor) by Private Mobile API
hashtag_medias_v1(name: str, amount: int = 27, tab_key: str = �top|recent�)	List[Media]	Get medias for a hashtag by Private Mobile API
hashtag_medias_top_a1(name: str, amount: int = 9)	List[Media]	Get top medias for a hashtag by Public Web API
hashtag_medias_top_v1(name: str, amount: int = 9)	List[Media]	Get top medias for a hashtag by Private Mobile API
hashtag_medias_recent_a1(name: str, amount: int = 71)	List[Media]	Get recent medias for a hashtag by Public Web API
hashtag_medias_recent_v1(name: str, amount: int = 27)	List[Media]	Get recent medias for a hashtag by Private Mobile API
hashtag_medias_reels_v1(name: str, amount: int = 27)	List[Media]	Get recent clips (reels) for a hashtag by Private Mobile API
Example for Request for loading every next time new posts from hashtag:

>>> medias, cursor = cl.hashtag_medias_v1_chunk('test', max_amount=32, tab_key='recent')
>>> len(medias)
32
>>> cursor
QVFDR0dzT3FJT0V4amFjMaQ3czlGVzRKV3FNWDJqaE1mWmltWU5VWGYtbnV6RVpoOUlsR3dCN05RRmpLc2R5SVlCQTNaekV5bUVOV0F4Vno1MDkxN1Nndg==

# NEXT cursor:

>>> medias, cursor = cl.hashtag_medias_v1_chunk('test', max_amount=32, tab_key='recent', max_id=cursor)
>>> len(medias)
32
>>> cursor
QVFEUXpfM0RtaDdmMExPQ0k0UWRlaHFJa2RVdVlaX01LTzhkNF9Dd1N2UlhtVy1vSTZvMERfYW5XN205OTBRNFBCSVJ2ZTVfTG5ZMXVmY0VJbUM5TU9URQ==

------------------------------------------------


instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Collections
M�thode	Retour	Description
collections()	Liste[Collection]	Obtenez toutes les collections de compte
collection_pk_by_name(nom: str)	int	Obtenez collection_pk par nom
collection_medias_by_name(nom: str)	Liste[M�dia]	Obtenez des m�dias dans la collection par nom
collection_medias(collection_pk: int, montant : int = 21, last_media_pk : int = 0)	Liste[M�dia]	Obtenez des m�dias dans la collection par collection_id ; Utiliser montant=0 pour retourner tous les m�dias de la collection ; Utiliser last_media_pk pour retourner les m�dias par curseur
liked_medias(montant : int = 21, last_media_pk : int = 0)	Liste[M�dia]	Obtenez un m�dia que vous avez aim�
media_save (media_id : str, collection_pk : int = Aucun)	bool	Enregistrer le m�dia dans la collection
media_unsave (media_id : str, collection_pk : int = Aucun)	bool	D�senregistrer les m�dias de la collection

-------------------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Commentaire
Publier des commentaires, des visionnages, des commentaires similaires et diff�rents

M�thode	Retour	Description
media_comment (media_id : str, text : str, answerd_to_comment_id : Facultatif [int] = Aucun)	Commentaire	Ajouter un nouveau commentaire aux m�dias
media_comments (media_id : str, montant : int = 0)	Liste[Commentaire]	Obtenez une liste de commentaires pour les m�dias (amount=0 - tous les commentaires)
media_comments_chunk(media_id : str, max_amount : int, min_id : str = Aucun)	Tuple[Liste[Commentaire], str]	Obtenez une partie des commentaires sur un m�dia et end_cursor
comment_like(comment_pk : int)	bool	Comme un commentaire
comment_unlike(comment_pk : int)	bool	Contrairement � un commentaire
comment_pin(media_id: str,comment_pk : int)	bool	�pingler un commentaire
comment_unpin(media_id: str,comment_pk : int)	bool	D�goupiller un commentaire
comment_bulk_delete(media_id : str, comment_pks : List[int])	bool	Supprimer un commentaire
Exemple:

>>> de instagrapi importation Client

>>> cl = Client()
>>> cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)

>>> m�dias_id = cl'.m�dias_id(cl'.media_pk_from_url('https://www.instagram.com/p/ByU3LAslgWY/'))

>>> commentaire = cl'.m�dia_comment(m�dias_id, "Commentaire de test")
>>> commentaire'.dict()
{'pk': 17926777897585108,
 'texte': 'Commentaire de test',
 'utilisateur': {'pk': 1903424587,
  'nom d'utilisateur': "exemple ",
  'nom_complet': 'Exemple d'exemple',
  'profil_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=EtzrL0pAdg8AX9pE_wN&edm=ABQSlwABAAAA&ccb=7-4&oh=e04d45b7651140e7fef61b1f67f1f408&oe=60C65AD1&_nc_sid=b2b2bd', sch�ma=" https ", h�te='scontent-hel3-1.cdninstagram.com', tld='com', h�te_type=" domaine ", chemin='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', requ�te='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=EtzrL0pAdg8AX9pE_wN&edm=ABQSlwABAAA&ccb=7-4&oh=e04d45b7651140e7fef61b1f67f1f408&oe=60C65AD1&_nc_sid=b2b2bd'),
  " histoires ": []},
 'cr��_at_utc': dateheure'.dateheure(2021, 5, 15, 14, 50, 3, tzinfo=dateheure'.fuseau horaire'.utc),
 'contenu_type': 'commentaire',
 " statut ": " Actif ",
 'a_ai aim�': Aucun,
 'comme_compter': Aucun}

>>> commentaire = cl'.m�dia_comment(m�dias_id, "Commentaire de test 2", r�pondu_to_comment_id=commentaire'.pk)
>>> commentaire'.dict()
{'pk': 17926777897585109,
 'texte': 'Commentaire d'essai 2',
 'utilisateur': {'pk': 1903424587,
  'nom d'utilisateur': "exemple ",
  'nom_complet': 'Exemple d'exemple',
  'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=EtzrL0pAdg8AX9pE_wN&edm=ABQSlwABAAAA&ccb=7-4&oh=e04d45b7651140e7fef61b1f67f1f408&oe=60C65AD1&_nc_sid=b2b2bd', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=EtzrL0pAdg8AX9pE_wN&edm=ABQSlwABAAAA&ccb=7-4&oh=e04d45b7651140e7fef61b1f67f1f408&oe=60C65AD1&_nc_sid=b2b2bd'),
  'stories': []},
 'created_at_utc': datetime.datetime(2021, 5, 15, 14, 50, 3, tzinfo=datetime.timezone.utc),
 'content_type': 'comment',
 'status': 'Active',
 'has_liked': None,
 'like_count': None}

>>> comments = cl.media_comments(media_id)
>>> comments[0].dict()
 {'pk': 17926777897585108,
 'text': 'Test comment',
 'user': {'pk': 1903424587,
  'username': 'example',
  'full_name': 'Example Example',
  'profile_pic_url': HttpUrl('https://scontent-hel3-1.cdninstagram.com/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg?tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=EtzrL0pAdg8AX9pE_wN&edm=AId3EpQBAAAA&ccb=7-4&oh=e3fbafcdb63cec3535004e85eb3397ae&oe=60C65AD1&_nc_sid=705020', scheme='https', host='scontent-hel3-1.cdninstagram.com', tld='com', host_type='domain', path='/v/t51.2885-19/s150x150/156689363_269505058076642_6448820957073669709_n.jpg', query='tp=1&_nc_ht=scontent-hel3-1.cdninstagram.com&_nc_ohc=EtzrL0pAdg8AX9pE_wN&edm=AId3EpQBAAAA&ccb=7-4&oh=e3fbafcdb63cec3535004e85eb3397ae&oe=60C65AD1&_nc_sid=705020'),
  'stories': []},
 'created_at_utc': datetime.datetime(2021, 5, 15, 14, 50, 3, tzinfo=datetime.timezone.utc),
 'content_type': 'comment',
 'status': 'Active',
 'has_liked': False,
 'like_count': 0}

>>> (comments_part1, next_min_id) = cl.media_comments_chunk(media_id, 100)
>>> next_min_id
QVFBQmZCa1dxaFB5eFpBY2luVFMwLWdmN2ZCcUV6OF9hQWlIQk12ZWZqUlctZ2pOa1J5YjJ6bFY5Q1doSGNuUmpxSS1DdXRvZ0NLemJrR1hXd2p0dS1JMg==
>>> (comments_part2, next_min_id) = cl.media_comments_chunk(media_id, 100, next_min_id)
>>> next_min_id
QVFEbHpIWmpFc3BNUkgzUFVuOGZOQlhDQ1hHeWlVWHlJSnBhb2FHbFB3YlJtNThnOUlrd01JUWdKRmRwZTRpWWU0bnZmX3VMNHlwcDBkWTJpZjQ2NE9SeQ==

>>> cl.comment_like(17926777897585108)
True

>>> cl.comment_unlike(17926777897585108)
True

>>> cl.comment_bulk_delete(media_id, [17926777897585108])
True

------------------------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Souligner
M�thode	Retour	Description
surligner_pk_from_url(url: str)	int	Obtenez Highlight PK � partir de l'URL
surligner_info(highlight_pk : int)	Souligner	Obtenez Highlight par pk ou id
user_highlights (user_id : str, montant : int = 0)	Liste[Mise en �vidence]	Obtenez les points forts d'un utilisateur
surligner_cr�er (titre : str, story_ids : List[str], cover_story_id : str = ��, crop_rect : List[float] = [0.0, 0.21830457, 1.0, 0.78094524])	Souligner	Cr�er un surlignage
surligner_change_title (highlight_pk : str, titre : str)	Souligner	Changer de titre pour mettre en �vidence
surligner_change_cover (highlight_pk : str, cover_path : Path)	Souligner	Changer de couverture pour mettre en �vidence
surligner_add_stories (highlight_pk : str, ajout�_media_ids : List[str])	Souligner	Ajoutez des histoires � mettre en �vidence
mettre en surbrillance_remove_stories (highlight_pk : str, removed_media_ids : List[str])	Souligner	Supprimer les histoires de la mise en �vidence
surligner_supprimer (highlight_pk : str)	bool	Supprimer le surlignage
Exemple:

>>> cl'.surligner_info(17895485201104054).dict()
{
    'pk': 17895485201104054,
    'id': 'mise en valeur:17895485201104054',
    'dernier_reel_media': 1622366765,
    'couvrir_m�dia': {
        'cropped_image_version': {" largeur ": 150, 'hauteur': 150, 'url': 'https://instagram.frix7-1.fna.fbcdn.net/v/t51.2885-...'},
        'crop_rect': [0, 0,21855760773966576, 1, 0,7814423922603342],
        'm�dia_id': '2584323966581791455_8641392340'
    },
    'utilisateur': {
        'pk': 8641392340,
        'nom d'utilisateur': "meilleur choix ",
        'nom_complet': � Les meilleurs trucs de patinage �,
        'profil_pic_url': HttpUrl('https://instagram.frix7-1.fna.fbcdn.net/v/t51.2885-19/s150x150/6526...'),
        'profil_pic_url_hd': Aucun,
        'est_priv�': Faux,
        " histoires ": []
    },
    'titre': "Pique-nique 2021",
    'cr��_at': dateheure'.dateheure(2021, 5, 29, 19, 39, 15, tzinfo=dateheure'.fuseau horaire'.utc),
    'est_pinned_highlight': Faux,
    'm�dia_compte': 19,
    " m�dias_ids ": [2584323966581791455, 2584328925731679183, 2584328595757338887, ...],  # identifiants d'histoire
    " articles ": [Histoire, Histoire, Histoire, ...]
}

>>> cl.user_highlights(29817608135)
[Highlight(pk='17907771728171896', id='highlight:17907771728171896', latest_reel_media=1638039687, ...), ...]
Change highlight:

>>> cl.highlight_create("Test", ["2722223419628084989_29817608135"])
Highlight(pk='17920472818962144', id='highlight:17920472818962144', latest_reel_media=1638734336, ...)

>>> cl.highlight_change_title(17907771728171896, "Example title")
Highlight(pk='17907771728171896', id='highlight:17907771728171896', latest_reel_media=1638039687, ...)

>>> cl.highlight_change_cover(17907771728171896, "/tmp/test.jpg")  # recommend 720x720
Highlight(pk='17907771728171896', id='highlight:17907771728171896', ...)

>>> cl.highlight_add_stories(17907771728171896, [2722223419628084989])
Highlight(pk='17907771728171896', id='highlight:17907771728171896', latest_reel_media=1638734336, ...)

>>> cl.highlight_remove_stories(17907771728171896, [2722223419628084989])
Highlight(pk='17907771728171896', id='highlight:17907771728171896', latest_reel_media=1638039687, ...)

>>> cl.highlight_delete(17920472818962144)
True

---------------------------------------------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Remarques WIP
M�thode	Retour	Description
obtenir des_notes()	Liste[Remarque]	R�cup�rer les notes directes
create_note(texte : str, audience : int = 0)	Note	Poster une nouvelle Note
supprimer_note(note_id: int)	bool	Supprimer une note publi�e
update_last_seen_note()	bool	Mettre � jour la derni�re heure vue
Exemple:

>>> note = cl'.cr�er_note(� Bonjour d'Instagrapi, tout le monde peut le voir ! �, 0)
>>> imprimer(note'.dict())
{"id": '17849203563031468', 
'texte': �Bonjour d� Instagrapi, tout le monde peut le voir !', 
'utilisateur_id': 12312312312, 
'utilisateur': {
  'pk': '12312312312', 
  'nom d'utilisateur': "quelque chose", 
  'nom_complet': " Merimi en haut ", 
  'profil_pic_url': HttpUrl('https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/364347953_6289474204435297_7603222331512295081_n.jpg?stp=dst-jpg_s150x150&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_ohc=DVaE0MQwn0YAX8-S8dm&edm=AE-H4JwBAAAA&ccb=7-5&oh=00_AfAnH4mHGMl7B5tqzU7b9PMz9qSC4QE_-EX067lwPHnN1w&oe=64DDA1CB&_nc_sid=cff473', ), 
  'profil_pic_url_hd': Aucun, 
  'est_priv�': Faux, 
  " histoires ": []}, 
" public ": 0, 
'cr��_at': dateheure'.dateheure(2023, 8, 13, 14, 33, 43, tzinfo=dateheure'.fuseau horaire'.utc),
'expire_at': dateheure'.dateheure(2023, 8, 14, 14, 33, 43, tzinfo=dateheure'.fuseau horaire'.utc), 
'est_emoji_only': Faux, 
" a_traduction ": Faux, 
"note_style": 0}
>>> notes = cl'.obtenir_notes()
>>> imprimer(notes)
[Note(identifiant='17849203563031468', texte=�Bonjour d� Instagrapi, tout le monde peut le voir !', ...., a_traduction=Faux, remarque_style=0), Note(identifiant='17902958207826742', texte='Am so happy ????????????', ...., a_traduction=Faux, remarque_style=0)]

>>> cl'.last_seen_update_note()

>>> cl'.supprimer_note(note'.identifiant)
Obtenir des notes | Post Notes | Supprimer des notes
Obtenez des notes directement
Publiez une nouvelle note avec la possibilit� de s�lectionner un public
Supprimer les notes publi�es
Mise � jour vue pour la derni�re fois des notes
La note ne doit pas d�passer 60 caract�res. Le taux entre les demandes de billets doit �tre assez �lev� (soit : 1 requ�te/2 min) * pour �viter de d�clencher l'API Instagram

Arguments communs:

remarque_id - ID de l'objet Note
texte - Contenu de la Note
public - Qui peut voir la note (0 = Abonn�s que vous suivez en arri�re, 1 = Fermer Amis uniquement)


------------------------------------------------


instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Histoire
M�thode	Retour	Description
user_stories(user_id : str, montant : int = Aucun)	Liste[Histoire]	Obtenez la liste des histoires par user_id
story_info(story_pk : int, use_cache : bool = True)	Histoire	Retour histoire info
story_delete(story_pk : int)	bool	Supprimer l'histoire
story_seen (story_pks : List [int], skipped_story_pks : List [int])	bool	Marquer une histoire comme on l'a vu
story_pk_from_url(url: str)	int	Obtenez Story (m�dia) PK � partir de l'URL
story_download (story_pk : int, nom de fichier : str = ��, dossier : Path = ��)	Chemin	T�l�charger des m�dias d'histoire par media_type
story_download_by_url(url: str, nom de fichier : str = ��, dossier : Chemin = ��)	Chemin	T�l�chargez le support d'histoire � l'aide de l'URL du fichier (mp4 ou jpg)
story_viewers (story_pk : int, montant : int = 20)	Liste [UtilisateurCourt]	Liste des t�l�spectateurs de l'histoire (via Private API)
story_like (story_id : str, revert : bool = False)	bool	Comme une histoire
story_unlike(story_id: str)	bool	Contrairement � une histoire
Exemple:

>>> cl'.histoire_t�l�chargement(cl'.story_pk_from_url('https://www.instagram.com/stories/example/2581281926631793076/'))
PosixPath('/app/189361307_229642088942817_9180243596650100310_n.mp4')

>>> s = cl'.histoire_info(2581281926631793076)

>>> cl'.story_download_by_url(s'.vid�o_url)  # url vers fichier mp4
PosixPath('/app/189361307_229642088942817_9180243596650100310_n.mp4')

>>> cl'.story_download_by_url(s'.vignette_url)  # URL vers le fichier jpg
PosixPath('/app/191260083_2908005872746895_8988438451809588865_n.jpg')
T�l�charger des Histoires
T�l�chargez des m�dias sur vos histoires.

Le fichier d'histoire doit �tre � 9 :16 r�solution (par exemple 720x1280). Si vous avez une r�solution diff�rente, vous devez alors pr�parer un fichier ou utiliser StoryBuilder, dont il est �crit ci-dessous.

Arguments communs:

chemin - Chemin vers le fichier multim�dia
l�gende - L�gende de l'histoire (maintenant utilis�e pour r�cup�rer les mentions)
vignette - Vignette � la place captur�e � partir du fichier source
mentions - Profils de balises dans l'histoire
emplacements - Ajoutez des emplacements � l'histoire
liens - �Glissez les liens Up� (maintenant utilisez en premier)
hashtags - Ajouter des hashtags � l'histoire
autocollants - Ajoutez des autocollants � l'histoire
M�thode	Retour	Description
photo_upload_to_story(path: Path, caption: str, upload_id: str, mentions: List[Usertag], locations: List[StoryLocation], links: List[StoryLink], hashtags: List[StoryHashtag], stickers: List[StorySticker], extra_data: Dict[str, str] = {})	Story	Upload photo (Support JPG files)
video_upload_to_story(path: Path, caption: str, thumbnail: Path, mentions: List[Usertag], locations: List[StoryLocation], links: List[StoryLink], hashtags: List[StoryHashtag], stickers: List[StorySticker], extra_data: Dict[str, str] = {})	Story	Upload video (Support MP4 files)
In extra_data, you can pass additional story settings, for example:

Method	Type	Description
audience	String	Publish story for close friends {"audience": "besties"}
Examples:

from instagrapi import Client
from instagrapi.types import StoryMention, StoryMedia, StoryLink, StoryHashtag

cl = Client()
cl.login(USERNAME, PASSWORD)

media_pk = cl.media_pk_from_url('https://www.instagram.com/p/CGgDsi7JQdS/')
media_path = cl.video_download(media_pk)
example = cl.user_info_by_username('example')
hashtag = cl.hashtag_info('dhbastards')

cl.video_upload_to_story(
    media_path,
    "Credits @example",
    mentions=[StoryMention(user=example, x=0.49892962, y=0.703125, width=0.8333333333333334, height=0.125)],
    links=[StoryLink(webUri='https://github.com/subzeroid/instagrapi')],
    hashtags=[StoryHashtag(hashtag=hashtag, x=0.23, y=0.32, width=0.5, height=0.22)],
    medias=[StoryMedia(media_pk=media_pk, x=0.5, y=0.5, width=0.6, height=0.8)],
)
Build Story to Upload
If you want to format your story correctly (correct resolution, user mentions, etc) use StoryBuilder:

Method	Return	Description
StoryBuilder.build_clip(clip: moviepy.Clip, max_duration: int = 0)	StoryBuild	Build CompositeVideoClip with background and mentioned users. Return MP4 file and mentions with coordinates
StoryBuilder.video(max_duration: int = 0)	StoryBuild	Call build_clip(VideoClip, max_duration)
StoryBuilder.photo(max_duration: int = 0)	StoryBuild	Call build_clip(ImageClip, max_duration)
Example:

from instagrapi.types import StoryMention, StoryMedia, StoryLink
from instagrapi.story import StoryBuilder

media_pk = cl.media_pk_from_url('https://www.instagram.com/p/CGgDsi7JQdS/')
media_path = cl.video_download(media_pk)
example = cl.user_info_by_username('example')

buildout = StoryBuilder(
    media_path,
    'Credits @example',
    [StoryMention(user=example)],
    Path('/path/to/background_720x1280.jpg')
).video(15)  # seconds

cl.video_upload_to_story(
    buildout.path,
    "Credits @example",
    mentions=buildout.mentions,
    links=[StoryLink(webUri='https://github.com/subzeroid/instagrapi')],
    medias=[StoryMedia(media_pk=media_pk)]
)
Result:



Photo upload:

cl.photo_upload_to_story('/app/image.jpg')
Upload photo as video:

buildout = StoryBuilder('/app/image.jpg').photo()
cl.video_upload_to_story(buildout.path)
Like & unlike story:

pk = cl.story_pk_from_url("https://instagram.com/stories/purely.anand/2884886531427631361/")
info = cl.story_info(pk).dict()

cl.story_like(info['id']) # To like story
cl.story_unlike(info['id']) # To unlike story

# another way to unlike story
cl.story_like(info['id'], revert=True)
More stories here https://www.instagram.com/wrclive/
--------------------------------------


instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Histoire
M�thode	Retour	Description
user_stories(user_id : str, montant : int = Aucun)	Liste[Histoire]	Obtenez la liste des histoires par user_id
story_info(story_pk : int, use_cache : bool = True)	Histoire	Retour histoire info
story_delete(story_pk : int)	bool	Supprimer l'histoire
story_seen (story_pks : List [int], skipped_story_pks : List [int])	bool	Marquer une histoire comme on l'a vu
story_pk_from_url(url: str)	int	Obtenez Story (m�dia) PK � partir de l'URL
story_download (story_pk : int, nom de fichier : str = ��, dossier : Path = ��)	Chemin	T�l�charger des m�dias d'histoire par media_type
story_download_by_url(url: str, nom de fichier : str = ��, dossier : Chemin = ��)	Chemin	T�l�chargez le support d'histoire � l'aide de l'URL du fichier (mp4 ou jpg)
story_viewers (story_pk : int, montant : int = 20)	Liste [UtilisateurCourt]	Liste des t�l�spectateurs de l'histoire (via Private API)
story_like (story_id : str, revert : bool = False)	bool	Comme une histoire
story_unlike(story_id: str)	bool	Contrairement � une histoire
Exemple:

>>> cl'.histoire_t�l�chargement(cl'.story_pk_from_url('https://www.instagram.com/stories/example/2581281926631793076/'))
PosixPath('/app/189361307_229642088942817_9180243596650100310_n.mp4')

>>> s = cl'.histoire_info(2581281926631793076)

>>> cl'.story_download_by_url(s'.vid�o_url)  # url vers fichier mp4
PosixPath('/app/189361307_229642088942817_9180243596650100310_n.mp4')

>>> cl'.story_download_by_url(s'.vignette_url)  # URL vers le fichier jpg
PosixPath('/app/191260083_2908005872746895_8988438451809588865_n.jpg')
T�l�charger des Histoires
T�l�chargez des m�dias sur vos histoires.

Le fichier d'histoire doit �tre � 9 :16 r�solution (par exemple 720x1280). Si vous avez une r�solution diff�rente, vous devez alors pr�parer un fichier ou utiliser StoryBuilder, dont il est �crit ci-dessous.

Arguments communs:

chemin - Chemin vers le fichier multim�dia
l�gende - L�gende de l'histoire (maintenant utilis�e pour r�cup�rer les mentions)
vignette - Vignette � la place captur�e � partir du fichier source
mentions - Profils de balises dans l'histoire
emplacements - Ajoutez des emplacements � l'histoire
liens - �Glissez les liens Up� (maintenant utilisez en premier)
hashtags - Ajouter des hashtags � l'histoire
autocollants - Ajoutez des autocollants � l'histoire
M�thode	Retour	Description
photo_upload_to_story(path: Path, caption: str, upload_id: str, mentions: List[Usertag], locations: List[StoryLocation], links: List[StoryLink], hashtags: List[StoryHashtag], stickers: List[StorySticker], extra_data: Dict[str, str] = {})	Story	Upload photo (Support JPG files)
video_upload_to_story(path: Path, caption: str, thumbnail: Path, mentions: List[Usertag], locations: List[StoryLocation], links: List[StoryLink], hashtags: List[StoryHashtag], stickers: List[StorySticker], extra_data: Dict[str, str] = {})	Story	Upload video (Support MP4 files)
In extra_data, you can pass additional story settings, for example:

Method	Type	Description
audience	String	Publish story for close friends {"audience": "besties"}
Examples:

from instagrapi import Client
from instagrapi.types import StoryMention, StoryMedia, StoryLink, StoryHashtag

cl = Client()
cl.login(USERNAME, PASSWORD)

media_pk = cl.media_pk_from_url('https://www.instagram.com/p/CGgDsi7JQdS/')
media_path = cl.video_download(media_pk)
example = cl.user_info_by_username('example')
hashtag = cl.hashtag_info('dhbastards')

cl.video_upload_to_story(
    media_path,
    "Credits @example",
    mentions=[StoryMention(user=example, x=0.49892962, y=0.703125, width=0.8333333333333334, height=0.125)],
    links=[StoryLink(webUri='https://github.com/subzeroid/instagrapi')],
    hashtags=[StoryHashtag(hashtag=hashtag, x=0.23, y=0.32, width=0.5, height=0.22)],
    medias=[StoryMedia(media_pk=media_pk, x=0.5, y=0.5, width=0.6, height=0.8)],
)
Build Story to Upload
If you want to format your story correctly (correct resolution, user mentions, etc) use StoryBuilder:

Method	Return	Description
StoryBuilder.build_clip(clip: moviepy.Clip, max_duration: int = 0)	StoryBuild	Build CompositeVideoClip with background and mentioned users. Return MP4 file and mentions with coordinates
StoryBuilder.video(max_duration: int = 0)	StoryBuild	Call build_clip(VideoClip, max_duration)
StoryBuilder.photo(max_duration: int = 0)	StoryBuild	Call build_clip(ImageClip, max_duration)
Example:

from instagrapi.types import StoryMention, StoryMedia, StoryLink
from instagrapi.story import StoryBuilder

media_pk = cl.media_pk_from_url('https://www.instagram.com/p/CGgDsi7JQdS/')
media_path = cl.video_download(media_pk)
example = cl.user_info_by_username('example')

buildout = StoryBuilder(
    media_path,
    'Credits @example',
    [StoryMention(user=example)],
    Path('/path/to/background_720x1280.jpg')
).video(15)  # seconds

cl.video_upload_to_story(
    buildout.path,
    "Credits @example",
    mentions=buildout.mentions,
    links=[StoryLink(webUri='https://github.com/subzeroid/instagrapi')],
    medias=[StoryMedia(media_pk=media_pk)]
)
Result:



Photo upload:

cl.photo_upload_to_story('/app/image.jpg')
Upload photo as video:

buildout = StoryBuilder('/app/image.jpg').photo()
cl.video_upload_to_story(buildout.path)
Like & unlike story:

pk = cl.story_pk_from_url("https://instagram.com/stories/purely.anand/2884886531427631361/")
info = cl.story_info(pk).dict()

cl.story_like(info['id']) # To like story
cl.story_unlike(info['id']) # To unlike story

# another way to unlike story
cl.story_like(info['id'], revert=True)
More stories here https://www.instagram.com/wrclive/


--------------------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Histoire
M�thode	Retour	Description
user_stories(user_id : str, montant : int = Aucun)	Liste[Histoire]	Obtenez la liste des histoires par user_id
story_info(story_pk : int, use_cache : bool = True)	Histoire	Retour histoire info
story_delete(story_pk : int)	bool	Supprimer l'histoire
story_seen (story_pks : List [int], skipped_story_pks : List [int])	bool	Marquer une histoire comme on l'a vu
story_pk_from_url(url: str)	int	Obtenez Story (m�dia) PK � partir de l'URL
story_download (story_pk : int, nom de fichier : str = ��, dossier : Path = ��)	Chemin	T�l�charger des m�dias d'histoire par media_type
story_download_by_url(url: str, nom de fichier : str = ��, dossier : Chemin = ��)	Chemin	T�l�chargez le support d'histoire � l'aide de l'URL du fichier (mp4 ou jpg)
story_viewers (story_pk : int, montant : int = 20)	Liste [UtilisateurCourt]	Liste des t�l�spectateurs de l'histoire (via Private API)
story_like (story_id : str, revert : bool = False)	bool	Comme une histoire
story_unlike(story_id: str)	bool	Contrairement � une histoire
Exemple:

>>> cl'.histoire_t�l�chargement(cl'.story_pk_from_url('https://www.instagram.com/stories/example/2581281926631793076/'))
PosixPath('/app/189361307_229642088942817_9180243596650100310_n.mp4')

>>> s = cl'.histoire_info(2581281926631793076)

>>> cl'.story_download_by_url(s'.vid�o_url)  # url vers fichier mp4
PosixPath('/app/189361307_229642088942817_9180243596650100310_n.mp4')

>>> cl'.story_download_by_url(s'.vignette_url)  # URL vers le fichier jpg
PosixPath('/app/191260083_2908005872746895_8988438451809588865_n.jpg')
T�l�charger des Histoires
T�l�chargez des m�dias sur vos histoires.

Le fichier d'histoire doit �tre � 9 :16 r�solution (par exemple 720x1280). Si vous avez une r�solution diff�rente, vous devez alors pr�parer un fichier ou utiliser StoryBuilder, dont il est �crit ci-dessous.

Arguments communs:

chemin - Chemin vers le fichier multim�dia
l�gende - L�gende de l'histoire (maintenant utilis�e pour r�cup�rer les mentions)
vignette - Vignette � la place captur�e � partir du fichier source
mentions - Profils de balises dans l'histoire
emplacements - Ajoutez des emplacements � l'histoire
liens - �Glissez les liens Up� (maintenant utilisez en premier)
hashtags - Ajouter des hashtags � l'histoire
autocollants - Ajoutez des autocollants � l'histoire
M�thode	Retour	Description
photo_upload_to_story (path : Path, l�gende : str, upload_id : str, mentions : List [Usertag], localisations : List [StoryLocation], liens : List [StoryLink], hashtags : List [StoryHashtag], autocollants : List [StorySticker], extra_data : Dict [str, str] = {})	Histoire	T�l�charger la photo (Supporter les fichiers JPG)
video_upload_to_story (path : Path, l�gende : str, vignette : Path, mentions : List [Usertag], localisations : List [StoryLocation], liens : List [StoryLink], hashtags : List [StoryHashtag], autocollants : List [StorySticker], extra_data : Dict [str, str] = {})	Histoire	T�l�charger la vid�o (Supporter les fichiers MP4)
Dans extra_data, vous pouvez passer des param�tres d'histoire suppl�mentaires, par exemple :

M�thode	Type	Description
public	Cha�ne	Publier une histoire pour des amis proches {"audience": "besties"}
Exemples :

de instagrapi importation Client
de instagrapi.types importation HistoireMention, HistoireM�dia, Lien d'histoire, HistoireHashtag

cl = Client()
cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)

m�dia_pk = cl'.media_pk_from_url('https://www.instagram.com/p/CGgDsi7JQdS/')
m�dia_path = cl'.vid�o_t�l�chargement(m�dia_pk)
exemple = cl'.utilisateur_info_by_nom d'utilisateur("exemple ")
hashtag = cl'.hashtag_info(" salauds de Dh ")

cl'.vid�o_upload_to_story(
    m�dia_path,
    "Cr�dits @exemple",
    mentions=[HistoireMention(utilisateur=exemple, x=0,49892962, y=0,703125, largeur=0,83333333333333334, hauteur=0,125)],
    liens=[Lien d'histoire(webUri='https://github.com/subzeroid/instagrapi')],
    hashtags=[HistoireHashtag(hashtag=hashtag, x=0,23, y=0,32, largeur=0,5, hauteur=0,22)],
    m�dias=[HistoireM�dia(m�dia_pk=m�dia_pk, x=0,5, y=0,5, largeur=0,6, hauteur=0,8)],
)
Construire l'histoire pour t�l�charger
Si vous souhaitez formater correctement votre histoire (r�solution correcte, mentions utilisateur, etc.), utilisez StoryBuilder :

M�thode	Retour	Description
StoryBuilder.build_clip(clip: moviepy.Clip, max_duration : int = 0)	StoryBuild	Cr�ez CompositeVideoClip avec l'arri�re-plan et les utilisateurs mentionn�s. Renvoyez le fichier MP4 et les mentions avec les coordonn�es
StoryBuilder.video(max_duration: int = 0)	StoryBuild	Appeler build_clip(VideoClip, max_duration)
StoryBuilder.photo(max_duration: int = 0)	StoryBuild	Appeler build_clip(ImageClip, max_duration)
Exemple:

de instagrapi.types importation HistoireMention, HistoireM�dia, Lien d'histoire
de instagrapi.story importation Constructeur d'histoires

m�dia_pk = cl'.media_pk_from_url('https://www.instagram.com/p/CGgDsi7JQdS/')
m�dia_path = cl'.vid�o_t�l�chargement(m�dia_pk)
exemple = cl'.utilisateur_info_by_nom d'utilisateur("exemple ")

construction = Constructeur d'histoires(
    m�dia_path,
    'Cr�dits @exemple',
    [HistoireMention(utilisateur=exemple)],
    Chemin('/path/to/background_720x1280.jpg')
).vid�o(15)  # secondes

cl'.vid�o_upload_to_story(
    construction'.chemin,
    "Cr�dits @exemple",
    mentions=construction'.mentions,
    liens=[Lien d'histoire(webUri='https://github.com/subzeroid/instagrapi')],
    m�dias=[HistoireM�dia(m�dia_pk=m�dia_pk)]
)
R�sultat:



T�l�chargement de photos :

cl'.photo_upload_to_story('/app/image.jpg')
T�l�charger la photo sous forme de vid�o :

construction = Constructeur d'histoires('/app/image.jpg').photo()
cl'.vid�o_upload_to_story(construction'.chemin)
Comme et contrairement � l'histoire :

pk = cl'.story_pk_from_url("https://instagram.com/stories/purely.anand/2884886531427631361/")
info = cl'.histoire_info(pk).dict()

cl'.histoire_like(info["id"]) # Aimer l'histoire
cl'.histoire_contrairement(info["id"]) # � une histoire diff�rente

# une autre fa�on de ne pas ressembler � l'histoire
cl'.histoire_like(info["id"], revenir=Vrai)
Plus d'histoires ici https://www.instagram.com/wrclive/

-----------------------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Direct
M�thode	Retour	Description
direct_threads (quantit� : int = 20, s�lectionn�_filter : str = � �, thread_message_limit : Facultatif [int] = Aucun)
Remarque : s�lectionn�_filter = ��, �flagged� ou �unread�	Liste [DirectThread]	Obtenez tous les threads de la bo�te de r�ception
direct_pending_inbox(montant : int = 20)	Liste [DirectThread]	Obtenez tous les threads de la bo�te de r�ception en attente
direct_thread(thread_id: int, montant : int = 20)	Fil direct	Obtenez du fil de discussion avec des messages
direct_messages(thread_id: int, montant : int = 20)	Liste[DirectMessage]	Obtenez uniquement des messages dans le fil de discussion
direct_answer(thread_id : int, texte : str)	Message direct	Ajouter un message pour exister Thread
direct_send (texte : str, user_ids : List [int] = [], thread_ids : List [int] = [])	Message direct	Envoyer un message aux utilisateurs ou aux threads
direct_search(requ�te: str)	Liste [DirectShortThread]	Rechercher des fils de discussion (par exemple par nom d'utilisateur)
direct_thread_by_participants(user_ids : List[int])	Fil direct	Obtenez le fil de discussion par user_id
direct_thread_hide (thread_id : int)	bool	Supprimer (appel� �hide�)
direct_media_share (media_id : str, user_ids : List[int])	Message direct	Partagez un m�dia sur la liste des utilisateurs
direct_story_share (story_id : str, user_ids : List [int], thread_ids : List [int])	Message direct	Partagez une histoire � la liste des utilisateurs
direct_profile_share (user_id : str, user_ids : List [int], thread_ids : List [int])	Message direct	Partagez un profil utilisateur pour r�pertorier les utilisateurs
direct_thread_mark_unread(thread_id : int)	bool	Marquer un fil comme non lu
direct_message_delete(thread_id : int, message_id : int)	bool	Supprimer un message du fil de discussion
direct_thread_mute (thread_id : int, revert : bool = False)	bool	Muet le fil
direct_thread_unmute (thread_id : int)	bool	D�muter le fil
direct_thread_mute_video_call(thread_id : int, revert : bool = False)	bool	Appel vid�o muet pour le fil
direct_thread_unmute_video_call(thread_id : int)	bool	Appel vid�o de d�mutation pour le fil
direct_send_photo(path : Path, user_ids : List [int], thread_ids : List [int])	Message direct	Envoyez une photo directe � la liste des utilisateurs ou des fils de discussion
direct_send_video(chemin : Path, user_ids : List [int], thread_ids : List [int])	Message direct	Envoyez une vid�o directe � la liste des utilisateurs ou des fils de discussion
video_upload_to_direct(path: Path, caption: str, thumbnail: Path, mentions: List[StoryMention], thread_ids: List[int] = [], extra_data: Dict[str, str] = {})	DirectMessage	Upload video to direct thread as a story and configure it
Example of basic actions:

>>> from instagrapi import Client
>>> cl = Client()
>>> cl.login(USERNAME, PASSWORD)

>>> thread = cl.direct_threads(1)[0]
>>> thread.pk
18123276039123479

>>> thread.users
[UserShort(pk=123123123, username='something', full_name='Dima Something', profile_pic_url=HttpUrl('https://instagram.frix7-1.fna.fbcdn.net/v/t51.2885-19/s150x150/11374323_1630877790512376_1081658215_a.jpg?_nc_ht=instagram.frix7-1.fna.fbcdn.net&_nc_ohc=k22oMvVv8xEAX-UEVRB&edm=AI8ESKwBAAAA&ccb=7-4&oh=be799948b28f19d85158153d886d16d3&oe=6135D80F&_nc_sid=195af5', scheme='https', host='instagram.frix7-1.fna.fbcdn.net', tld='net', host_type='domain', path='/v/t51.2885-19/s150x150/11374323_1630877790512376_1081658215_a.jpg', query='_nc_ht=instagram.frix7-1.fna.fbcdn.net&_nc_ohc=k22oMvVv8xEAX-UEVRB&edm=AI8ESKwBAAAA&ccb=7-4&oh=be799948b28f19d85158153d886d16d3&oe=6135D80F&_nc_sid=195af5'), profile_pic_url_hd=None, is_private=False, stories=[])]

>>> thread.messages[0]
DirectMessage(id=300761992574947211231231241955932160, user_id=123123123, thread_id=None, timestamp=datetime.datetime(2021, 8, 31, 18, 20, 28, 754135, tzinfo=datetime.timezone.utc), item_type='text', is_shh_mode=False, reactions=None, text='Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_pending_inbox(1)[0]
DirectThread(
    pk=17881231232408606,
    id=3402823668123123123949128156938656669726,
    messages=[
        DirectMessage(
            id=30073094913010429825449992959033344,
            user_id=123123123123,
            ...
        )
    ],
    ...
)

>>> cl.direct_thread(thread.id, 1)
DirectThread(
    pk=18103276039108479,
    id=340282366841710300949128373114263369599,
    messages=[
        DirectMessage(
            id=30076199257494728485375741955932160,
            user_id=7789547,
            ...
        )
    ],
    ...
)

>>> message = cl.direct_messages(thread.id, 1)[0]
DirectMessage(id=300712312341231237412312312360, user_id=12312312, thread_id=None, timestamp=datetime.datetime(2021, 8, 31, 18, 20, 28, 754135, tzinfo=datetime.timezone.utc), item_type='text', is_shh_mode=False, reactions=None, text='Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_answer(thread.id, 'Hello!')
DirectMessage(id=30076213210116812312341061613568, user_id=None, thread_id=34028236684171031231231231233331238762, timestamp=datetime.datetime(2021, 8, 31, 18, 33, 5, 127298, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_send('How are you?', user_ids=[cl.user_id])  # send youself
DirectMessage(id=30076213210116812312341061613568, user_id=None, thread_id=34028236684171031231231231233331238762, timestamp=datetime.datetime(2021, 8, 31, 18, 33, 5, 127298, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_send('How are you?', thread_ids=[thread.id])
DirectMessage(id=30076213210116812312341061613568, user_id=None, thread_id=34028236684171031231231231233331238762, timestamp=datetime.datetime(2021, 8, 31, 18, 33, 5, 127298, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_thread_by_participants([cl.user_id])
DirectThread(pk=178612312342, id=340282366812312312312341298762, messages=[DirectMessage(id=30076214123123123123123864, user_id=1903424587, thread_id=None, timestamp=datetime.datetime(2021, 8, 31, 18, 33, 49, 107154, ...)

>>> cl.direct_media_share(media.pk, user_ids=[cl.user_id])
DirectMessage(id=3007629312312312312312300374016, user_id=None, thread_id=340282366812313212334410641298762, timestamp=datetime.datetime(2021, 8, 31, 19, 45, 20, 708276, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_story_share(media.pk, user_ids=[cl.user_id])
DirectMessage(id=30076291231321231369939116032, user_id=None, thread_id=340282312312312334410641298762, timestamp=datetime.datetime(2021, 8, 31, 19, 48, 12, 217677, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_story_share(media.pk, thread_ids=[thread.id])
DirectMessage(id=30076291231231230352896, user_id=None, thread_id=3402812312312310641298762, timestamp=datetime.datetime(2021, 8, 31, 19, 48, 38, 482706, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_message_delete(thread.id, message.pk)
True

>>> photo_path = cl.photo_download(cl.media_pk_from_url('https://www.instagram.com/p/BgqFyjqloOr/'))
>>> cl.direct_send_photo(photo_path, user_ids=[cl.user_id])  # or
>>> cl.direct_send_photo(photo_path, thread_ids=[thread.id])
DirectMessage(id=300775273512312312312321568, user_id=None, thread_id=34028236123123123123128762, timestamp=datetime.datetime(2021, 9, 1, 14, 20, 24, 949673, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> video_path = cl.video_download(cl.media_pk_from_url('https://www.instagram.com/p/B3rFQPblq40/'))
>>> cl.direct_send_video(video_path, user_ids=[cl.user_id])  # or
>>> cl.direct_send_video(video_path, thread_ids=[thread.id])
Analyzing video file "/.../example_2155839952940084788.mp4"
DirectMessage(id=300775489123123123123664, user_id=None, thread_id=34012312312312312398762, timestamp=datetime.datetime(2021, 9, 1, 14, 39, 56, 959454, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.video_upload_to_direct(video_path, thread_ids=[thread.id])
Analyzing video file "/.../example_2155839952940084788.mp4"
Generating thumbnail "/.../example_2155839952940084788.mp4.jpg"...
DirectMessage(id=3007123123123123664, user_id=None, thread_id=3401212312312312398762, timestamp=datetime.datetime(2021, 9, 1, 14, 39, 56, 959454, tzinfo=datetime.timezone.utc), item_type=None, is_shh_mode=None, reactions=None, text=None, animated_media=None, media=None, media_share=None, reel_share=None, story_share=None, felix_share=None, clip=None, placeholder=None)

>>> cl.direct_thread_mark_unread(340282366841710301949128122292511813703)
True

>>> cl.direct_thread_mute(340282366841710301949128122292511813703)
True

>>> cl.direct_thread_mute_video_call(340282366841710301949128122292511813703)
True

>>> cl.direct_thread_unmute_video_call(340282366841710301949128122292511813703)
True

>>> cl.direct_thread_unmute(340282366841710301949128122292511813703)
True


---------------------------------------------



instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Aper�us
Obtenez des statistiques par m�dias. Arguments communs:

post_type - Type de m�dia : �ALL�, �CAROUSEL_V2�, �IMAGE�, �SHOPPING�, �VIDEO�.
time_frame - D�lai de publication des m�dias date : �ONE_WEEK�, �ONE_MONTH�, �THREE_MONTHS�, �SIX_MONTHS�, �ONE_YEAR�, �TWO_YEARS�.
commande de donn�es - Commande des donn�es en r�ponse instagram : �REACH_COUNT�, �LIKE_COUNT�, �FOLLOW�, �SHARE_COUNT�, �BIO_LINK_CLICK�, �COMMENT_COUNT�, �IMPRESSION_COUNT�, �PROFILE_VIEW�, �VIDEO_VIEW_COUNT�, �SAVE_COUNT�.
M�thode	Retour	Description
insights_media_feed_all(post_type : str = �ALL�, time_frame : str = �TWO_YEARS�, data_ordering : str = �REACH_COUNT�, count : int = 0, sleep : int = 2)	Liste[Dicte]	Renvoyez les m�dias avec des informations
insights_compte()	Dic	Obtenez des statistiques par votre compte
insights_media(media_pk : int)	Dic	Obtenez des statistiques par vos m�dias
Exemple:

de instagrapi importation Client

cl = Client()
cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)

cl'.insights_media_feed_all("VID�O", "UNE_SEMAINE", "LIKE_COUNT", 42)
cl'.insights_compte()

m�dia_pk = cl'.media_pk_from_url('https://www.instagram.com/p/CP5h-I1FuPr/')
cl'.insights_m�dias(m�dia_pk)



-------------------------------------------

instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Piste
Affichage et t�l�chargement des pistes

M�thode	Retour	Description
track_info_by_canonical_id(musique_canonical_id: str)	Piste	Obtenir Track par music_canonical_id
track_download_by_url(url: str, nom de fichier : str = ��, dossier : Path = ��)	Chemin	T�l�charger la piste par URL
search_music(requ�te: str)	Liste[Piste]	Liste de retour des pistes
Exemple:
>>> de instagrapi importation Client
>>> cl = Client()
>>> cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)

>>> [m�dias'.clips_m�tadonn�es['musique_canonique_id'] pour m�dias dans cl'.bobines(montant=10)]

['18159860503036324',
 '18245182426110798',
 '18156435169051995',
 '18274086877034385',
 '18243482860109137',
 '18244791958105000',
 '18310451203035205',
 '18293984647065921',
 '18154598032011335',
 '18301950994013617']

>>> cl'.track_info_by_canonical_id(18159860503036324).dict()
{
"id": '2398788493765573',
'titre': � Un peu, �a va tr�s loin �,
'sous-titre': '',
'affichage_artiste': " Yh�ti ",
'audio_cluster_id': 1054108181594434,
'artiste_id': Aucun,
'cover_artwork_uri': Aucun,
'cover_artwork_thumbnail_uri': Aucun,
'progressive_download_url': Aucun,
'fast_start_progressive_download_url': Aucun,
'reactive_audio_download_url': Aucun,
'highlight_start_times_in_ms': [38500],
'est_explicite': Faux,
'dash_manifest': '<?xml version="1.0" encodage="UTF-8"?>\n<! -G�n�r� avec https://github.com/google/shaka-packager version v1.6.0-release-->\n<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:cenc="urn:mpeg:cenc:2013" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"profils="urn:mpeg:dash:profile:isoff-on-demand :2011" minBufferTime="PT2S"=statique"Pr�sentation3D=\n  <P�riode id="0">\n    <AdaptationSet id="0" contentType="audio" sous-segmentAlignment="true">\n      <Repr�sentation id="0" bande passante="130017" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="48000">\n        <Sch�ma AudioChannelConfigurationIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>\n        <BaseURL>https://scontent-cph2-1.xx.fbcdn.net/v/t39.12897-6/84846439_2484536748531420_3971102873273499648_n.m4a?_nc_cat=101&amp;ccb=1-7&amp;_nc_sid=02c1ff&amp;_nc_ohc=N6k7lDt_6TAAX_yKEoV&amp;_nc_ad=z-m&amp;_nc_cid=0&amp;_nc_ht=scontent-cph2-1.xx&amp;oh=00_AT9Cly5G-kzGxRceunBi8NUl5eFLEqwlMEJbWnxykUTO0Q&amp;oe=62DF3A6E</BaseURL>\n        <SegmentBase indexRange="741-1864" timescale="48000">\n          <Plage d'initialisation="0-740"/>\n        </SegmentBase>\n      </Repr�sentation>\n    </AdaptationSet>\n  </P�riode>\n</MPD>\n',
'uri': HttpUrl('https://scontent-cph2-1.xx.fbcdn.net/v/t39.12897-6/84846439_2484536748531420_3971102873273499648_n.m4a?_nc_cat=101&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=N6k7lDt_6TAAX_yKEoV&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent-cph2-1.xx&oh=00_AT9Cly5G-kzGxRceunBi8NUl5eFLEqwlMEJbWnxykUTO0Q&oe=62DF3A6E', sch�ma=" https ", h�te='scontent-cph2-1.xx.fbcdn.net', tld='net', h�te_type=" domaine ", port='443', chemin='/v/t39.12897-6/84846439_2484536748531420_3971102873273499648_n.m4a', requ�te='_nc_cat=101&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=N6k7lDt_6TAAX_yKEoV&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent-cph2-1.xx&oh=00_AT9Cly5G-kzGxRceunBi8NUl5eFLEqwlMEJbWnxykUTO0Q&oe=62DF3A6E'),
'has_lyrics': Faux,
'audio_asset_id': 2398788493765573,
"dur�e_in_ms": 182094,
" Dark_message ": Aucun,
'permet_sauver': Vrai,
"territoire_validit�_p�riodes ": {}
}

>>> track_uri = cl'.track_info_by_canonical_id(18159860503036324).uri
HttpUrl('https://scontent-cph2-1.xx.fbcdn.net/v/t39.12897-6/84846439_2484536748531420_3971102873273499648_n.m4a?_nc_cat=101&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=N6k7lDt_6TAAX_yKEoV&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent-cph2-1.xx&oh=00_AT9Cly5G-kzGxRceunBi8NUl5eFLEqwlMEJbWnxykUTO0Q&oe=62DF3A6E', sch�ma=" https ", h�te='scontent-cph2-1.xx.fbcdn.net', tld='net', h�te_type=" domaine ", port='443', chemin='/v/t39.12897-6/84846439_2484536748531420_3971102873273499648_n.m4a', requ�te='_nc_cat=101&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=N6k7lDt_6TAAX_yKEoV&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent-cph2-1.xx&oh=00_AT9Cly5G-kzGxRceunBi8NUl5eFLEqwlMEJbWnxykUTO0Q&oe=62DF3A6E')

>>> cl'.track_download_by_url(track_uri, dossier="/tmp")
PosixPath('/tmp/84846439_2484536748531420_3971102873273499648_n.m4a')

>>> cl'.rechercher_musique("amour")[0].dict()
{
"id": '354372829354341',
'titre': 'Aime ta voix',
'sous-titre': '',
'affichage_artiste': 'JONY',
'audio_cluster_id': 410742646320351,
'artiste_id': Aucun,
'cover_artwork_uri': HttpUrl('https://cdn.fbsbx.com/v/t65.14500-21/191897578_1074647849725858_3973554110966662866_n.jpg?stp=cp0_dst-jpg_e15_p526x296_q65&_nc_cat=1&ccb=1-7&_nc_sid=cbead8&_nc_ohc=ugygksMclf4AX_u7L7g&_nc_ht=cdn.fbsbx.com&oh=00_AT89FBXl6h7Q6zytlI5cA4UIG_zQkK_DsOqyUqyXk1zyIg&oe=62DAEA82', sch�ma=" https ", h�te='cdn.fbsbx.com', tld='com', h�te_type=" domaine ", port='443', chemin='/v/t65.14500-21/191897578_1074647849725858_3973554110966662866_n.jpg', requ�te='stp=cp0_dst-jpg_e15_p526x296_q65&_nc_cat=1&ccb=1-7&_nc_sid=cbead8&_nc_ohc=ugygksMclf4AX_u7L7g&_nc_ht=cdn.fbsbx.com&oh=00_AT89FBXl6h7Q6zytlI5cA4UIG_zQkK_DsOqyUqyXk1zyIg&=62DAE82),
'cover_artwork_thumbnail_uri': HttpUrl('https://cdn.fbsbx.com/v/t65.14500-21/191897578_1074647849725858_3973554110966662866_n.jpg?stp=cp0_dst-jpg_e15_q65_s168x128&_nc_cat=1&ccb=1-7&_nc_sid=cbead8&_nc_ohc=ugygksMclf4AX_u7L7g&_nc_ht=cdn.fbsbx.com&oh=00_AT81eLXWBA5EaM20EhaMldwlyzKG1X1zA_nYNkYWf6c5cg&oe=62DAEA82', sch�ma=" https ", h�te='cdn.fbsbx.com', tld='com', h�te_type=" domaine ", port='443', chemin='/v/t65.14500-21/191897578_1074647849725858_3973554110966662866_n.jpg', requ�te='stp=cp0_dst-jpg_e15_q65_s168x128&_nc_cat=1&ccb=1-7&_nc_sid=cbead8&_nc_ohc=ugygksMclf4AX_u7L7g&_nc_ht=cdn.fbsbx.com&oh=00_AT81eLXWBA5EaM20EhaMldwlyzKG1X1zA_nYNkYWf6cg&oe=62DAEA82'),
'progressive_download_url': HttpUrl('https://scontent-cph2-1.xx.fbcdn.net/v/t39.12897-6/199073207_321615622853093_2366400633227710754_n.m4a?_nc_cat=1&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=UxUNJHpsoy4AX-eA1Bm&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent-cph2-1.xx&oh=00_AT_IpjsOwgCikt0wNx1nS7FzEJE-1pKkzNZSXIpKCzkZhg&oe=62DE2CA8', sch�ma=" https ", h�te='scontent-cph2-1.xx.fbcdn.net', tld='net', h�te_type=" domaine ", port='443', chemin='/v/t39.12897-6/199073207_321615622853093_2366400633227710754_n.m4a', requ�te='_nc_cat=1&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=UxUNJHpsoy4AX-eA1Bm&_nc_ad=z-m&_nc_cid=0&_nc_ht=sontent-cph2-1.xx&oh=00_AT_IpjsOwgCikt0wNx1nS7FzEJE-1pKkzNZSXIpKCzkZhg&o=62DE2CA8'),
'fast_start_progressive_download_url': HttpUrl('https://scontent-cph2-1.xx.fbcdn.net/v/t39.12897-6/199073207_321615622853093_2366400633227710754_n.m4a?_nc_cat=1&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=UxUNJHpsoy4AX-eA1Bm&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent-cph2-1.xx&oh=00_AT_IpjsOwgCikt0wNx1nS7FzEJE-1pKkzNZSXIpKCzkZhg&oe=62DE2CA8', sch�ma=" https ", h�te='scontent-cph2-1.xx.fbcdn.net', tld='net', h�te_type=" domaine ", port='443', chemin='/v/t39.12897-6/199073207_321615622853093_2366400633227710754_n.m4a', requ�te='_nc_cat=1&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=UxUNJHpsoy4AX-eA1Bm&_nc_ad=z-m&_nc_cid=0&_nc_ht=sontent-cph2-1.xx&oh=00_AT_IpjsOwgCikt0wNx1nS7FzEJE-1pKkzNZSXIpKCzkZhg&o=62DE2CA8'),
'reactive_audio_download_url': Aucun,
'highlight_start_times_in_ms': [20000, 35500, 86500],
'est_explicite': Faux,
'dash_manifest': '<?xml version="1.0" encodage="UTF-8"?>\n<! -G�n�r� avec https://github.com/google/shaka-packager version v1.6.0-release-->\n<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:cenc="urn:mpeg:cenc:2013" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"profils="urn:mpeg:dash:profile:isoff-on-demand :2011" minBufferTime="PT2S"tatique"Paystatique"P7D=S015\n  <P�riode id="0">\n    <AdaptationSet id="0" contentType="audio" sous-segmentAlignment="true">\n      <Repr�sentation id="0" bande passante="130029" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="48000">\n        <Sch�ma AudioChannelConfigurationIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>\n        <BaseURL>https://scontent-cph2-1.xx.fbcdn.net/v/t39.12897-6/198992520_981513595929106_5731656525090532090_n.m4a?_nc_cat=1&amp;ccb=1-7&amp;_nc_sid=02c1ff&amp;_nc_ohc=ZZ6zJXs2dkAAX-B0LDK&amp;_nc_ad=z-m&amp;_nc_cid=0&amp;_nc_ht=scontent-cph2-1.xx&amp;oh=00_AT8j4tjiUNSVWv9qbkg9Ro9MzAGeW9_wXU4e0ncV0MhdZQ&amp;oe=62DECA6E</BaseURL>\n        <SegmentBase indexRange="741-1672" timescale="48000">\n          <Plage d'initialisation="0-740"/>\n        </SegmentBase>\n      </Repr�sentation>\n    </AdaptationSet>\n  </P�riode>\n</MPD>\n',
'uri': HttpUrl('https://scontent-cph2-1.xx.fbcdn.net/v/t39.12897-6/198992520_981513595929106_5731656525090532090_n.m4a?_nc_cat=1&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=ZZ6zJXs2dkAAX-B0LDK&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent-cph2-1.xx&oh=00_AT8j4tjiUNSVWv9qbkg9Ro9MzAGeW9_wXU4e0ncV0MhdZQ&oe=62DECA6E', scheme='https', host='scontent-cph2-1.xx.fbcdn.net', tld='net', host_type='domain', port='443', path='/v/t39.12897-6/198992520_981513595929106_5731656525090532090_n.m4a', query='_nc_cat=1&ccb=1-7&_nc_sid=02c1ff&_nc_ohc=ZZ6zJXs2dkAAX-B0LDK&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent-cph2-1.xx&oh=00_AT8j4tjiUNSVWv9qbkg9Ro9MzAGeW9_wXU4e0ncV0MhdZQ&oe=62DECA6E'),
'has_lyrics': True,
'audio_asset_id': 354372829354341,
'duration_in_ms': 150329,
'dark_message': None,
'allows_saving': True,
'territory_validity_periods': {}
}


------------------------------------


instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Pratiques exemplaires
Il s'agit d'un guide de bonnes pratiques concernant l'utilisation de l'API Instagram afin que vous n'obteniez pas de taux limit� ou interdit.

Utiliser un Proxy
Si vous obtenez des erreurs comme celle-ci

�Le nom d'utilisateur que vous avez saisi ne semble pas appartenir � un compte. Veuillez v�rifier votre nom d'utilisateur et r�essayer.�
Ou vous remarquez qu'Instagram vous envoie des e-mails concernant une tentative de connexion suspecte, vous devriez envisager d'utiliser un proxy. Vous obtenez un tarif limit� par Instagram ou ils se m�fient de votre emplacement.

Vous devez avoir une adresse IP que vous utilisez de mani�re coh�rente par utilisateur lors des requ�tes API. Ce sera moins suspect que d'utiliser une adresse IP diff�rente � chaque fois que vous faites une demande.

D'apr�s notre exp�rience, voici les limites de s�curit� que nous avons vues pour diverses actions :

utilisation de 10 comptes par adresse IP
publication de 4 � 16 messages pour chaque compte
publication de 24 � 48 histoires
Nous vous recommandons d'utiliser le CANULAR service proxy. Voici un exemple d'utilisation avec instagrapi

de instagrapi importation Client

cl = Client()
avant_ip = cl'._send_public_request("https://api.ipify.org/")
cl'.d�finir_proxy("http://<api_key>:wifi;ca;;;toronto@proxy.soax.com:9137")
apr�s_ip = cl'._send_public_request("https://api.ipify.org/")

imprimer(f"Avant: {avant_ip}")
imprimer(f"Apr�s: {apr�s_ip}")
Ajouter des Retards
Il est recommand� d'essayer d'imiter le comportement d'un utilisateur r�el. Cela signifie que vous devriez ajouter des retards entre demandes. Les d�lais doivent �tre al�atoires et pas trop longs.

Ce qui suit est un bon exemple de la fa�on d'ajouter des d�lais entre les demandes.

de instagrapi importation Client

cl = Client()

# ajoute un d�lai al�atoire entre 1 et 3 secondes apr�s chaque demande
cl'.d�lai_range = [1, 3]
Utiliser les sessions
Lors de l'utilisation .connexion() vous allez vous connecter et cr�er une nouvelle session avec Instagram � chaque fois. C'est suspect pour Instagram. Par exemple, lorsque vous utilisez votre appareil mobile, vous vous connectez une fois � Instagram et puis vous pouvez l'utiliser longtemps sans vous reconnecter. C'est parce que les boutiques Instagram votre session sur votre appareil et vous pouvez l'utiliser pour vous connecter � Instagram sans saisir votre nom d'utilisateur et mot de passe encore.

Pour imiter ce comportement, vous pouvez utiliser le .connexion() m�thode une fois pour cr�er une session, puis stocker cette session en utilisant .dump_settings() et puis chargez-le � nouveau en utilisant .load_settings()'.

La premi�re fois que vous ex�cutez votre script

de instagrapi importation Client

cl = Client()
cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)
cl'.dump_settings("session.json")
Et la fois suivante

de instagrapi importation Client

cl = Client()
cl'.charger_param�tres("session.json")
cl'.login (NOM D'UTILISATEUR, MOT DE PASSE) # cela ne se connecte pas r�ellement � l'aide du nom d'utilisateur/mot de passe mais utilise la session
cl'.get_timeline_feed() # v�rifier la session
Vous remarquerez que nous appelons � cl.get_timeline_feed() pour v�rifier si la session est valide. Si ce n'est pas valide, vous obtiendrez une exception.

En rassemblant tout cela, nous pourrions �crire une fonction de connexion comme celle-ci

de instagrapi importation Client
de instagrapi.exceptions importation ConnexionObligatoire
importation journalisation

enregistreur = journalisation'.getLogger()

d�f connexion_user():
    """
    Tentatives de connexion � Instagram en utilisant les informations de session fournies
    ou le nom d'utilisateur et le mot de passe fournis.
    """

    cl = Client()
    session = cl'.charger_param�tres("session.json")

    connexion_via_session = Faux
    connexion_via_pw = Faux

    si session:
        essayez:
            cl'.set_settings(session)
            cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)

            # v�rifiez si la session est valide
            essayez:
                cl'.get_timeline_feed()
            sauf ConnexionObligatoire:
                enregistreur'.info(� La session n'est pas valide, il faut se connecter via le nom d'utilisateur et le mot de passe �)

                ancienne_session = cl'.get_settings()

                # utilisez les m�mes uuids d'appareil sur les connexions
                cl'.set_settings({})
                cl'.set_uuids(ancienne_session["uuids"])

                cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)
            connexion_via_session = Vrai
        sauf Exception comme e:
            enregistreur'.info(� Impossible de connecter l'utilisateur � l'aide des informations de session : % s � % e)

    si pas connexion_via_session:
        essayez:
            enregistreur'.info(� Tentative de connexion via le nom d'utilisateur et le mot de passe. nom d'utilisateur : % s � % NOM D'UTILISATEUR)
            si cl'.login(NOM D'UTILISATEUR, MOT DE PASSE):
                connexion_via_pw = Vrai
        sauf Exception comme e:
            enregistreur'.info(� Impossible de connecter l'utilisateur � l'aide du nom d'utilisateur et du mot de passe : % s � % e)

    si pas connexion_via_pw et pas connexion_via_session:
        augmenter Exception(� Impossible de connecter l'utilisateur avec un mot de passe ou une session �)



------------------------------------------------



instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Guide de d�veloppement
Bienvenue ! Merci de vouloir rendre le projet meilleur. Cette section donne un aper�u de la mani�re dont la structure du r�f�rentiel et comment travailler avec la base de code.

Avant de vous plonger l�-dedans, il est pr�f�rable de lire :

Le Guide contributeur
Docker
Le instagrapi le projet utilise Docker pour faciliter la mise en place d'un environnement de d�veloppement coh�rent. La documentation Docker a d�tails sur la fa�on de installez docker sur votre ordinateur.

Une fois configur�e, la suite de tests peut �tre ex�cut�e localement :

docker-compose run --rm test
Si vous souhaitez pouvoir ex�cuter du code dans le conteneur :

docker-compose run --rm devbox
(votre code ici)
Dans l'environnement devbox, vous pourrez saisir un shell Python et importer instagrapi ou toutes d�pendances.

D�bogage
Le conteneur d'accueil a pdb++ installer qui peut �tre utilis� comme d�bogueur. (Cependant, vous �tes invit�s � vous installer un d�bogueur diff�rent si vous le souhaitez.)

Cela vous permet de cr�er facilement un point d'arr�t n'importe o� dans le code.

d�f ma_fonction():
    point d'arr�t()
    ...
Lorsque votre code sera disponible, vous tomberez dans un fichier interactif pdb++ d�bogueur.

Voir la documentation sur pdb et pdb++ pour plus d'informations.

Test
Vous ne pourrez pas fusionner le code � moins que la doublure et les tests ne r�ussissent. Vous pouvez les ex�cuter dans votre conteneur via :

docker-compose run --rm test
Cela ex�cutera les m�mes tests, doublures et couvertures de code que ceux ex�cut�s par le pipeline CI. La seule diff�rence est que, lorsqu'il est ex�cut� localement, noir et isort sont configur�s pour corriger automatiquement les probl�mes qu'ils d�tectent.

En g�n�ral, nous devrions nous efforcer d'�crire des tests pour chaque fonctionnalit�. Chaque nouvelle branche de fonctionnalit�s devrait augmenter le test couverture plut�t que de la diminuer.

Nous utilisons pytest comme notre cadre de test.

�tapes
Pour personnaliser/remplacer une �tape de test sp�cifique, veuillez lire la documentation sp�cifique � cet outil :

Test Py
MonPy
Isort
Flocon8
Bandit
configuration.py
Setuptools est utilis� pour emballer la biblioth�que.

configuration.py ne doit rien importer du colis Lors de l'installation � partir de la source, l'utilisateur peut ne pas avoir le les d�pendances des packages sont install�es et l'importation du package est susceptible de g�n�rer un ImporterErreur'. Pour cette raison, le la version du package doit �tre obtenue sans importer'. C'est ce qui explique pourquoi configuration.py utilise une expression r�guli�re pour saisit la version de __init__.py sans r�ellement importer.

Exigences
exigences.txt - R�pertorie toutes les d�pendances directes (paquets import�s par la biblioth�que).
exigences-test.txt - R�pertorie toutes les exigences directes n�cessaires pour ex�cuter la suite de tests et les doublures.
Cela d�clenchera le syst�me CI pour construire une roue et une distribution de sources du package et les poussera vers PyPI'.

Pipeline d'int�gration continue
TODO : Ajouter la documentation CI.



-------------------------------------



instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Vous pouvez g�rer toutes les exceptions � l'aide d'un gestionnaire g�n�rique :

de instagrapi importation Client
de instagrapi.exceptions importation (
    Mauvais mot de passe, ReloginTentativeExceed, D�fiObligatoire,
    S�lectionnezContactPointRecoveryForm, RecaptchaChallengeForm,
    CommentairesObligatoire, Veuillez attendre peu d' minutes, ConnexionObligatoire
)


d�f handle_exception(client, e):
    si est l'instance(e, Mauvais mot de passe):
        client'.enregistreur'.exception(e)
        client'.d�finir_proxy(soi-m�me'.suivant_proxy().href)
        si client'.relogin_tentative > 0:
            soi-m�me'.geler(str(e), jours=7)
            augmenter ReloginTentativeExceed(e)
        client'.param�tres = soi-m�me'.reconstruire_client_settings()
        retour soi-m�me'.update_client_settings(client'.get_settings())
    elif est l'instance(e, ConnexionObligatoire):
        client'.enregistreur'.exception(e)
        client'.reloginer()
        retour soi-m�me'.update_client_settings(client'.get_settings())
    elif est l'instance(e, D�fiObligatoire):
        api_path = valeur_json(client'.dernier_json, "d�fi", "api_path")
        si api_path == "/d�fi/":
            client'.d�finir_proxy(soi-m�me'.suivant_proxy().href)
            client'.param�tres = soi-m�me'.reconstruire_client_settings()
        autre:
            essayez:
                client'.challenge_resolve(client'.dernier_json)
            sauf D�fiObligatoire comme e:
                soi-m�me'.geler(�D�fi manuel requis�, jours=2)
                augmenter e
            sauf (D�fiObligatoire, S�lectionnezContactPointRecoveryForm, RecaptchaChallengeForm) comme e:
                soi-m�me'.geler(str(e), jours=4)
                augmenter e
            soi-m�me'.update_client_settings(client'.get_settings())
        retour Vrai
    elif est l'instance(e, CommentairesObligatoire):
        message = client'.dernier_json["feedback_message"]
        si "Cette action a �t� bloqu�e. Veuillez r�essayer plus tard" dans message:
            soi-m�me'.geler(message, heures=12)
            # client.settings = self.rebuild_client_settings()
            # retour self.update_client_settings(client.get_settings())
        elif � Nous restreignons certaines activit�s pour prot�ger notre communaut� � dans message:
            # 6 heures ne suffisent pas
            soi-m�me'.geler(message, heures=12)
        elif � Votre compte a �t� temporairement bloqu� � dans message:
            """
            Sur la base d'une utilisation ant�rieure de cette fonctionnalit�, votre compte a �t� temporairement
            emp�ch� de prendre cette mesure.
            Ce bloc expirera le 27/03/2020.
            """
            soi-m�me'.geler(message)
    elif est l'instance(e, Veuillez attendre peu d' minutes):
        soi-m�me'.geler(str(e), heures=1)
    augmenter e

cl = Client()
cl'.handle_exception = handle_exception
cl'.login(NOM D'UTILISATEUR, MOT DE PASSE)
De cette mani�re, vous pouvez g�rer les erreurs de mani�re centralis�e et non r�p�ter les gestionnaires tout au long de votre code.

Exemple complet ici




from instagrapi import Client
from instagrapi.exceptions import (
    BadPassword,
    ChallengeRequired,
    FeedbackRequired,
    LoginRequired,
    PleaseWaitFewMinutes,
    RecaptchaChallengeForm,
    ReloginAttemptExceeded,
    SelectContactPointRecoveryForm,
)


class Account:
    username = ""
    password = ""

    def get_client(self):
        """We return the client class, in which we automatically handle exceptions
        You can move the "handle_exception" above or into an external module
        """

        def handle_exception(client, e):
            if isinstance(e, BadPassword):
                client.logger.exception(e)
                client.set_proxy(self.next_proxy().href)
                if client.relogin_attempt > 0:
                    self.freeze(str(e), days=7)
                    raise ReloginAttemptExceeded(e)
                client.settings = self.rebuild_client_settings()
                return self.update_client_settings(client.get_settings())
            elif isinstance(e, LoginRequired):
                client.logger.exception(e)
                client.relogin()
                return self.update_client_settings(client.get_settings())
            elif isinstance(e, ChallengeRequired):
                api_path = client.last_json.get("challenge", {}).get("api_path")
                if api_path == "/challenge/":
                    client.set_proxy(self.next_proxy().href)
                    client.settings = self.rebuild_client_settings()
                else:
                    try:
                        client.challenge_resolve(client.last_json)
                    except ChallengeRequired as e:
                        self.freeze("Manual Challenge Required", days=2)
                        raise e
                    except (
                        ChallengeRequired,
                        SelectContactPointRecoveryForm,
                        RecaptchaChallengeForm,
                    ) as e:
                        self.freeze(str(e), days=4)
                        raise e
                    self.update_client_settings(client.get_settings())
                return True
            elif isinstance(e, FeedbackRequired):
                message = client.last_json["feedback_message"]
                if "This action was blocked. Please try again later" in message:
                    self.freeze(message, hours=12)
                    # client.settings = self.rebuild_client_settings()
                    # return self.update_client_settings(client.get_settings())
                elif "We restrict certain activity to protect our community" in message:
                    # 6 hours is not enough
                    self.freeze(message, hours=12)
                elif "Your account has been temporarily blocked" in message:
                    """
                    Based on previous use of this feature, your account has been temporarily
                    blocked from taking this action.
                    This block will expire on 2020-03-27.
                    """
                    self.freeze(message)
            elif isinstance(e, PleaseWaitFewMinutes):
                self.freeze(str(e), hours=1)
            raise e

        cl = Client()
        cl.handle_exception = handle_exception
        cl.login(self.username, self.password)
        return cl

-----------------------


instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Nouveau d�fi de mot de passe
Vous pouvez modifier automatiquement votre mot de passe pour r�soudre le d�fi depuis Instagram.

D�clarer changer_password_handler qui renverra un nouveau mot de passe.

d�f changer_password_handler(nom d'utilisateur):
    # Mani�re simple de g�n�rer une cha�ne al�atoire
    char = liste("abcdefghijklmnopqrstuvwxyz1234567890!&�@#")
    mot de passe = ""'.rejoindre(al�atoire'.�chantillon(char, 8))
    retour mot de passe

cl = Client()
cl'.changer_password_handler = changer_password_handler
cl'.login(IG_NOM D'UTILISATEUR, IG_PASSWORD)
D�fi de v�rification du code
Vous pouvez traiter automatiquement les codes qui vous sont envoy�s pour r�soudre le d�fi depuis Instagram.

Vous devez d�clarer challenge_code_handler qui renverra le code re�u d'Instagram par Email ou SMS :

de instagrapi.mixins.challenge importation D�fiChoix


d�f challenge_code_handler(nom d'utilisateur, choix):
    si choix == D�fiChoix'.SMS:
        retour get_code_from_sms(nom d'utilisateur)
    elif choix == D�fiChoix'.COURRIEL:
        retour get_code_from_email(nom d'utilisateur)
    retour Faux

cl = Client()
cl'.challenge_code_handler = challenge_code_handler
cl'.login(IG_NOM D'UTILISATEUR, IG_PASSWORD)
Par exemple, vous pouvez obtenir le code via l'IMAP de Gmail :

d�f get_code_from_email(nom d'utilisateur):
    courrier = imaplib'.IMAP4_SSL("imap.gmail.com")
    courrier'.login(D�FI_EMAIL, D�FI_MOT DE PASSE)
    courrier'.s�lectionner("bo�te de r�ception")
    r�sultat, donn�es = courrier'.recherche(Aucun, "(INVISIBLE)")
    affirmer r�sultat == "D'ACCORD", "Erreur1 pendant get_code_from_email : %s" % r�sultat
    identifiants = donn�es'.pop().fractionn�()
    pour num�ro dans invers�(identifiants):
        courrier'.magasin(num�ro, "+FLAGS", "\\Vu")  # marquer comme lu
        r�sultat, donn�es = courrier'.aller chercher(num�ro, "(RFC822)")
        affirmer r�sultat == "D'ACCORD", "Erreur2 pendant get_code_from_email : %s" % r�sultat
        msg = courriel'.message_from_string(donn�es[0][1].d�coder())
        charges utiles = msg'.obtenir_payload()
        si pas est l'instance(charges utiles, liste):
            charges utiles = [msg]
        code = Aucun
        for payload in payloads:
            body = payload.get_payload(decode=True).decode()
            if "<div" not in body:
                continue
            match = re.search(">([^>]*?({u})[^<]*?)<".format(u=username), body)
            if not match:
                continue
            print("Match from email:", match.group(1))
            match = re.search(r">(\d{6})<", body)
            if not match:
                print('Skip this email, "code" not found')
                continue
            code = match.group(1)
            if code:
                return code
    return False
All challenges solved in the module challenge.py

Automatic submission code from SMS/Email in examples here

"""
Example to handle Email/SMS challenges
"""
import email
import imaplib
import re
import random

from instagrapi import Client
from instagrapi.mixins.challenge import ChallengeChoice

CHALLENGE_EMAIL = ""
CHALLENGE_PASSWORD = ""

IG_USERNAME = ""
IG_PASSWORD = ""


def get_code_from_email(username):
    mail = imaplib.IMAP4_SSL("imap.gmail.com")
    mail.login(CHALLENGE_EMAIL, CHALLENGE_PASSWORD)
    mail.select("inbox")
    result, data = mail.search(None, "(UNSEEN)")
    assert result == "OK", "Error1 during get_code_from_email: %s" % result
    ids = data.pop().split()
    for num in reversed(ids):
        mail.store(num, "+FLAGS", "\\Seen")  # mark as read
        result, data = mail.fetch(num, "(RFC822)")
        assert result == "OK", "Error2 during get_code_from_email: %s" % result
        msg = email.message_from_string(data[0][1].decode())
        payloads = msg.get_payload()
        if not isinstance(payloads, list):
            payloads = [msg]
        code = None
        for payload in payloads:
            body = payload.get_payload(decode=True).decode()
            if "<div" not in body:
                continue
            match = re.search(">([^>]*?({u})[^<]*?)<".format(u=username), body)
            if not match:
                continue
            print("Match from email:", match.group(1))
            match = re.search(r">(\d{6})<", body)
            if not match:
                print('Skip this email, "code" not found')
                continue
            code = match.group(1)
            if code:
                return code
    return False


def get_code_from_sms(username):
    while True:
        code = input(f"Enter code (6 digits) for {username}: ").strip()
        if code and code.isdigit():
            return code
    return None


def challenge_code_handler(username, choice):
    if choice == ChallengeChoice.SMS:
        return get_code_from_sms(username)
    elif choice == ChallengeChoice.EMAIL:
        return get_code_from_email(username)
    return False


def change_password_handler(username):
    # Simple way to generate a random string
    chars = list("abcdefghijklmnopqrstuvwxyz1234567890!&�@#")
    password = "".join(random.sample(chars, 10))
    return password


if __name__ == "__main__":
    cl = Client()
    cl.challenge_code_handler = challenge_code_handler
    cl.change_password_handler = change_password_handler
    cl.login(IG_USERNAME, IG_PASSWORD)


-----------------------------------


instagrapi
?? La biblioth�que Python la plus rapide et puissante pour Instagram Private API 2024
Voir sur GitHub
Exceptions communes
Exception	Base	Description
ClientErreur	Exception	Exception de base pour les appels Instagram
Erreur de demande g�n�rique	ClientErreur	Exception de base pour la demande (Solution : essayez de modifier votre proxy)
ClientGraphqlError	ClientErreur	Exception pour les appels GraphQL
ClientJSONDEcodeError	ClientErreur	Exception JSON
ClientConnexionErreur	ClientErreur	Erreur de connexion (Solution : essayez de modifier votre proxy)
ClientBadRequestError	ClientErreur	Exception HTTP 400
ClientErreur non autoris�e	ClientErreur	Exception HTTP 401
ClientForbiddenError	ClientErreur	Exception HTTP 403
ClientNotFoundError	ClientErreur	Exception HTTP 404
ClientThrottledError	ClientErreur	HTTP 429 Exception (Solution : essayez de modifier votre proxy)
ClientRequestTimeout	ClientErreur	Demandez l'exception de d�lai d'attente
ClientIncompletReadError	ClientErreur	Souleve lorsque la r�ponse est interrompue
ClientLoginRequis	ClientErreur	Augmente lorsque Instagram a besoin de Connexion (Solution : essayez de modifier votre proxy)
ReloginTentativeExceed	ClientErreur	Augmente lorsque toutes les tentatives sont d�pass�es
ClientErrorWithTitle	ClientErreur	Se produit lorsque Instagram renvoie une erreur inconnue avec le titre
ClientInconnuError	ClientErreur	Se produit lorsque Instagram renvoie une erreur inconnue
Erreur de curseur erron�e	ClientErreur	Se produit lorsque le curseur pour la pagination est pass� dans le mauvais format
ClientStatusFail	ClientErreur	Se produit lorsque Instagram renvoie un message avec status=fail avec les d�tails
Exceptions de procuration
Exception	Base	Description
Erreur de proxy	ClientErreur	Exception de base pour le proxy
ConnectProxyError	Erreur de proxy	Se produit lorsqu'il n'est pas possible de se connecter � votre proxy
AuthRequiredProxyError	Erreur de proxy	Se produit lorsque des informations d'identification incorrectes sont transmises pour autoriser votre proxy
Adresse proxyIsBlocked	Erreur priv�e	Cela se produit lorsque votre proxy est bloqu� par Instagram, changez de proxy !
SentryBlock	Erreur priv�e	Augmente lorsque vous obtenez le message=sentry_block (tr�s probablement, vous avez �t� banni d'instagram par l'adresse ip. Solution : essayez de changer votre proxy)
RateLimitError	Erreur priv�e	Augmente lorsque obtenez le message=rate_limit_error (Solution : essayez de modifier votre proxy)
Veuillez attendre peu d' minutes	Erreur priv�e	Augmente lorsque obtenez le message=�Veuillez attendre quelques minutes avant de r�essayer� (Solution : essayez de modifier votre proxy)
GraphQL/Exceptions publiques
Exception	Base	Description
Compte Suspendu	ClientErreur	Votre compte est suspendu
TermesD�blocage	ClientErreur	Votre compte peut �tre bloqu�, vous devez accepter les conditions
ConditionsAccepter	ClientErreur	Votre compte peut �tre bloqu�, vous devez accepter les conditions
� propos deUsError	ClientErreur	Votre compte peut �tre bloqu�
Exceptions Priv�es
Exception	Base	Description
Erreur priv�e	ClientErreur	Exception de base pour les appels priv�s (re�us sur Instagram)
CommentairesObligatoire	Erreur priv�e	Augmente lorsque vous recevez le message=feedback_required
Pr�LoginObligatoire	ClientErreur	Augmente lorsque l'autorisation est requise avant d'appeler une m�thode
ConnexionObligatoire	Erreur priv�e	Augmente lorsque vous recevez le message=login_required (depuis Instagram)
Mauvais mot de passe	Erreur priv�e	Augmente lorsque vous obtenez le message=bad_password
DeuxFactorRequis	Erreur priv�e	Augmente lorsque vous obtenez le message=two_factor_required
InconnuErreur	Erreur priv�e	Souleve lorsque vous obtenez un message inconnu (nouveau message d'instagram)
MauvaisCr�dentiels	Erreur priv�e	La paire de connexion et de mot de passe pour votre compte n'a pas �t� transmise
IsR�glement�C18Error	ClientBadRequestError	L'utilisateur est limit� � 18+
D�fier les exceptions
Exception	Base	Description
D�fiErreur	Erreur priv�e	Exception du d�fi de base (re�ue sur Instagram)
Redirection de d�fi	D�fiErreur	Augmente lorsque vous obtenez type=CHALLENGE_REDIRECTION
D�fiObligatoire	D�fiErreur	Augmente lorsque vous recevez le message=challenge_required
D�fiSelfieCaptcha	D�fiErreur	Augmente quand obtenez step=selfie_captcha
D�fiInconnu�tape	D�fiErreur	Se produit lorsque le d�fi est inconnu
S�lectionnezContactPointRecoveryForm	D�fiErreur	Augmente lorsque vous obtenez un d�fiType=SelectContactPointRecoveryForm
RecaptchaChallengeForm	D�fiErreur	Augmente lorsque vous obtenez un d�fiType=RecaptchaChallengeForm
EnvoyerPhoneNumberForm	D�fiErreur	Augmente lorsque vous obtenez un d�fiType=SubmitPhoneNumberForm
LegacyForceSetNewPasswordForm	D�fiErreur	Souleve lorsque get challengeType=LegacyForceSetNewPasswordForm
ConsentementObligatoire	Erreur priv�e	Augmente lorsque vous obtenez message=consent_required
GeoBlockObligatoire	Erreur priv�e	Augmente lorsque vous obtenez le message=geoblock_required
Point de contr�leObligatoire	Erreur priv�e	Augmente lorsque vous recevez le message=checkpoint_required
Exceptions M�dias
Exception	Base	Description
Erreur m�diatique	Erreur priv�e	Exception des m�dias de base (re�ue sur Instagram)
M�diasNon Fond�	Erreur m�diatique	Augmente lorsque l'utilisateur n'est pas disponible
Utilisateur Target invalide	Erreur priv�e	Se produit lorsque l'utilisateur s�lectionn� ne peut pas �tre mentionn� (n'existe pas, a �t� supprim� ou est ferm� par les param�tres de confidentialit�)
InvalidMediaId	Erreur priv�e	Se produit lorsque le m�dia s�lectionn� n'existe pas
M�diasIndisponible	Erreur priv�e	Se produit lorsque le m�dia s�lectionn� n'est plus disponible
Exceptions Utilisateur
Exception	Base	Description
Erreur utilisateur	Erreur priv�e	Exception de l'utilisateur de base (re�ue sur Instagram)
UtilisateurNotFound	Erreur utilisateur	Augmente lorsque l'utilisateur n'est pas disponible
Compte Priv�	Erreur priv�e	L'utilisateur cible est ferm� par les param�tres de confidentialit�
Exceptions de compte
Exception	Base	Description
R�initialiserPasswordError	ClientErreur	Souleve lorsque le mot de passe n'est pas r�initialis�
Erreur non prise en charge	ClientErreur	Augmente lorsque l'option est prise en charge
Valeur de configuration non prise en charge	Erreur non prise en charge	Augmente lorsque la valeur de la d�finition du compte n'est pas prise en charge
Exceptions de collection
Exception	Base	Description
CollectionErreur	Erreur priv�e	Exception de la collection de base (re�ue sur Instagram)
CollectionNon Fond�	CollectionErreur	Souleve lorsque la collecte n'est pas disponible
Exceptions directes
Exception	Base	Description
Erreur directe	Erreur priv�e	Exception directe de base
DirectThreadNotFound	Erreur directe	Souleve lorsque le fil n'est pas trouv�
DirectMessageNotFound	Erreur directe	Souleve lorsque le message dans le fil de discussion n'est pas trouv�
Exceptions Photo
Exception	Base	Description
PhotoNotDownload	Erreur priv�e	Souleve lorsque la photo source n'est pas trouv�e
PhotoNotUpload	Erreur priv�e	Souleve lorsque la photo ne t�l�charge pas
PhotoConfigurerErreur	PhotoNotUpload	Souleve lorsque la photo n'est pas configur�e
PhotoConfigurer�claireErreur	PhotoConfigurerErreur	S'�l�ve lorsque l'histoire photo n'est pas configur�e
Exceptions Vid�o
Exception	Base	Description
Vid�oNotDownload	Erreur priv�e	Souleve lorsque la vid�o source n'est pas trouv�e
Vid�oNotUpload	Erreur priv�e	Souleve lorsque la vid�o ne t�l�charge pas
Vid�oConfigurerError	Vid�oNotUpload	Souleve lorsque la vid�o n'est pas configur�e
Vid�oConfigurer�claireErreur	Vid�oConfigurerError	Souleve lorsque l'histoire vid�o n'est pas configur�e
Vid�oTooLongException	Erreur priv�e	Souleve lorsque la vid�o est trop longue
Exceptions IGTV
Exception	Base	Description
IGTVNotUpload	Erreur priv�e	Augmente lorsque IGTV ne t�l�charge pas
IGTVConfigurerError	IGTVNotUpload	Souleve lorsque IGTV n'est pas configur�
Exceptions de bobines/clips
Exception	Base	Description
ClipNotUpload	Erreur priv�e	Augmente lorsque Reels Clip ne t�l�charge pas
ClipConfigurerError	ClipNotUpload	Augmente lorsque Reels Clip n'est pas configur�
Exceptions d'albums
Exception	Base	Description
AlbumNotDownload	Erreur priv�e	Augmente lorsque l'album n'est pas trouv�
AlbumInconnuFormat	Erreur priv�e	Augmente lorsque le format des m�dias n'est pas MP4 ou JPG
AlbumConfigurerError	Erreur priv�e	Augmente lorsque l'album n'est pas configur�
Exceptions d'histoire
Exception	Base	Description
HistoireNon Fond�e	Pas d'erreur fond�e	Souleve lorsque l'histoire n'est pas trouv�e
Mettre en surbrillance les exceptions
Exception	Base	Description
SurlignerNotFound	Pas d'erreur fond�e	Augmente lorsque la surbrillance n'est pas trouv�e
Exceptions Hashtag
Exception	Base	Description
HashtagErreur	Erreur priv�e	Exception de base pour le hashtag
HashtagNotFound	Pas d'erreur fond�e	Souleve lorsque le hashtag n'est pas trouv�
HashtagPageAvertissement	ClientForbiddenError	Se produit lorsque Instagram renvoie un avertissement_message avec la cat�gorie_name=HASHTAG_PAGE_WARNING_MESSAGE
Exceptions d'emplacement
Exception	Base	Description
EmplacementErreur	Erreur priv�e	Exception de base pour l'emplacement
EmplacementNon trouv�	Pas d'erreur fond�e	Souleve lorsque l'emplacement n'est pas trouv�
Exceptions de commentaires
Exception	Base	Description
CommentaireNotFound	Erreur priv�e	Souleve lorsque le commentaire n'est pas trouv�
CommentairesD�sactiv�	Erreur priv�e	La possibilit� de commenter a �t� d�sactiv�e par l'auteur du message
Partager les exceptions
Exception	Base	Description
PartagerDecodeError	Erreur priv�e	Se produit lorsque le format de donn�es pour Share-obj est incorrect
Remarque Exceptions
Exception	Base	Description
RemarqueNon trouv�	Pas d'erreur fond�e	Souleve lorsque la note n'est pas trouv�e
Suivre les exceptions
Exception	Base	Description
PisteNotFound	Pas d'erreur fond�e	Souleve lorsque la piste n'est pas trouv�e






from instagrapi import Client
import time
import random
import getpass
from colorama import Fore, init
from datetime import datetime, timedelta
import pytz

# تهيئة للألوان
init(autoreset=True)

def main():
    # إدخال بيانات المستخدم والمعايير
    username = input("Enter your Instagram username: ")
    password = getpass.getpass("Enter your Instagram password: ")

    # عدد الإعجابات والتعليقات
    like_count = int(input("Enter the number of likes to perform: "))
    comment_count = int(input("Enter the number of comments to perform: "))

    # تهيئة عميل إنستاغرام
    cl = Client()
    cl.login(username, password)

    # تحديد الموقع الجغرافي: نيويورك كأمثلة
    target_latitude = 37.090240
    target_longitude = -95.712891

    # البحث في المنشورات المتعلقة بالموقع الجغرافي
    engage_with_location_posts(cl, target_latitude, target_longitude, like_count, comment_count)

def engage_with_location_posts(cl, latitude, longitude, like_count, comment_count):
    # استخدام منطقة زمنية معرّفة
    now = datetime.now(pytz.utc)
    five_minutes_ago = now - timedelta(minutes=5)

    # البحث عن المواقع عند إحداثيات معينة
    locations = cl.location_search(lat=latitude, lng=longitude)

    if not locations:
        print(Fore.RED + "No locations found at the specified coordinates.")
        return

    for location in locations[:1]:  # استخدام أول موقع فقط للبحث
        if not location.pk:
            print(Fore.RED + f"Location {location.name} does not have a valid ID.")
            continue

        print(Fore.CYAN + f"Fetching posts from location: {location.name}")

        # جلب المنشورات باستخدام الموقع
        medias = cl.location_medias_recent(location.pk, amount=10)
        if not medias:
            print(Fore.YELLOW + f"No new posts found for location: {location.name}")
            continue

        for media in medias:
            # تحقق مما إذا كان المنشور قد تم في الخمس دقائق الأخيرة
            if media.taken_at.replace(tzinfo=pytz.utc) >= five_minutes_ago:
                try:
                    # إعجاب بالمنشور بعدد محدد
                    for _ in range(like_count):
                        cl.media_like(media.pk)
                    print(Fore.GREEN + f"Liked post [ID {media.pk}] from user @{media.user.username}")

                    # تعليق على المنشور بعدد محدد
                    for _ in range(comment_count):
                        comment_text = "Great post! Thanks for sharing."
                        cl.media_comment(media.pk, comment_text)
                        print(Fore.GREEN + f"Commented: '{comment_text}' on post [ID {media.pk}] from user @{media.user.username}")

                    # التأخير العشوائي
                    sleep_time = random.uniform(60, 180)
                    print(Fore.YELLOW + f"Waiting for {sleep_time:.2f} seconds before the next action...")
                    time.sleep(sleep_time)
                except Exception as e:
                    print(Fore.RED + f"Error interacting with post [ID {media.pk}]: {e}")
                    if "feedback_required" in str(e):
                        print(Fore.RED + "Detected suspicious activity. Pausing for one hour.")
                        time.sleep(3600)
                    break

if __name__ == "__main__":
    main()

print(Fore.GREEN + "Done! Automated interactions completed.")