Guide des fonctionnalités avancées et de la configuration personnalisée d'Instaloader

Ce guide explore les fonctionnalités avancées et les options de configuration personnalisée d'Instaloader, un outil permettant de télécharger des images, vidéos et métadonnées depuis Instagram. Nous aborderons la personnalisation des modèles de noms de fichiers et de structures de répertoires, les stratégies de filtrage et de téléchargement conditionnel, l'analyse détaillée des fichiers de métadonnées au format JSON, ainsi que la gestion des sessions et la configuration de la connexion. En utilisant ces configurations de manière flexible, les utilisateurs peuvent organiser efficacement leurs téléchargements, filtrer précisément les données, exploiter pleinement les métadonnées et gérer leurs sessions de compte en toute sécurité.

Personnalisation des modèles de noms de fichiers et des structures de répertoires

Instaloader offre des capacités robustes pour la personnalisation des modèles de noms de fichiers et des structures de répertoires, permettant aux utilisateurs d'organiser le contenu téléchargé selon leurs besoins spécifiques. Grâce aux options --dirname-pattern, --filename-pattern et --title-pattern, vous pouvez contrôler entièrement la manière dont les fichiers téléchargés sont stockés et nommés.

Modèle de structure de répertoire (dirname-pattern)

L'option --dirname-pattern permet de définir le nom du répertoire pour chaque cible. La valeur par défaut est {target}, utilisant ainsi le nom de la cible comme nom de répertoire.

Variables disponibles :

  • {target} : Nom de la cible spécifiée dans la ligne de commande.
  • {profile} : Nom d'utilisateur du propriétaire de la publication.

Exemples :

# Comportement par défaut : création de répertoires séparés pour chaque cible
instaloader username1 username2

# Structure de répertoire personnalisée : organisation par nom d'utilisateur
instaloader --dirname-pattern=profiles/{profile} username1 username2

# Utilisation mixte des variables
instaloader --dirname-pattern={target}/posts "#travel" username1

Modèle de nom de fichier (filename-pattern)

L'option --filename-pattern configure le chemin relatif des fichiers de publication et d'histoire, par rapport au répertoire spécifié par --dirname-pattern. La valeur par défaut est {date_utc}_UTC.

Variables disponibles :

Variable Description Exemple de valeur
{target} Nom de la cible username, #travel, :feed
{profile} Nom d'utilisateur du propriétaire de la publication instagram_user
{owner_id} Identifiant unique du propriétaire 123456789
{shortcode} Code court de la publication B_K4CykAOtf
{mediaid} Idnetifiant du média (représentation entière) 1234567890123456789
{filename} Nom de fichier interne d'Instagram 12345678_123456789123456_123456789_n.jpg
{date_utc} Date et heure de création en UTC (strftime) 2024-01-15_14-30-45
{date} Synonyme de {date_utc} 2024-01-15_14-30-45
{typename} Type de média GraphImage, GraphVideo, GraphStoryVideo

Exemples de format de date :

# Inclure le nom d'utilisateur et la date
instaloader --filename-pattern={date_utc}_UTC_{profile} "#travel"

# Organiser les fichiers par année/mois
instaloader --filename-pattern={date_utc:%Y}/{date_utc:%m}/{shortcode} username

# Utiliser un format de date complet
instaloader --filename-pattern={date_utc:%Y-%m-%d_%H-%M-%S}_{profile} username

Modèle de nom de titre (title-pattern)

L'option --title-pattern est spécifiquement utilisée pour nommer les images de profil, les images de profil de hashtag et les couvertures de mises en avant. Les variables {shortcode} et {mediaid} ne sont pas prises en charge.

Comportement par défaut :

  • Si --dirname-pattern inclut {target} ou {profile} : {date_utc}_UTC_{typename}
  • Sinon : {target}_{date_utc}_UTC_{typename}

Exemple :

# Personnalisation du modèle de nom de titre
instaloader --title-pattern={profile}_{date_utc:%Y%m%d}_{typename} username

Options de nettoyage des chemins (sanitize-paths)

L'option --sanitize-paths nettoie obligatoirement les chemins, garantissant que les noms de fichiers et de répertoires générés sont valides sur les systèmes Windows et Unix. Les caractères illégaux sont automatiquement remplacés :

Table de remplacement des caractères :

Caractère original Caractère de remplacement Code Unicode
/ U+2215
: U+FF1A
< U+FE64
> U+FE65
" U+FF02
\ U+FE68
` `
? U+FE16
* U+FF0A

Exemple de configuration avancée

Organisation par utilisateur et par année :

instaloader \
  --dirname-pattern=instagram/{profile} \
  --filename-pattern={date_utc:%Y}/{shortcode} \
  --title-pattern=profile_pics/{date_utc:%Y}/{profile} \
  username1 username2

Structure de répertoire résultante :

instagram/
├── username1/
│   ├── 2024/
│   │   ├── ABC123DEF.jpg
│   │   ├── ABC123DEF.json.xz
│   │   └── ABC123DEF.txt
│   ├── 2023/
│   │   └── XYZ789UVW.jpg
│   └── profile_pics/
│       └── 2024/
│           └── username1.jpg
└── username2/
    └── 2024/
        └── DEF456GHI.jpg

Organisation du contenu par hashtags :

instaloader \
  --dirname-pattern=hashtags/{target} \
  --filename-pattern={date_utc:%Y-%m}/{profile}/{shortcode} \
  "#travel" "#food"

Identification du type de média :

# Utiliser des préfixes différents pour les types de médias
instaloader --filename-pattern={typename}_{date_utc}_{shortcode} username

Bonnes pratiques

  1. Maintenir la cohérence : Utilisez les mêmes modèles pour toutes vos tâches de téléchargement afin de faciliter la gestion globale.
  2. Éviter les chemins trop longs : Certains systèmes ont des limites de longueur de chemin.
  3. Utiliser le tri par date : L'organisation par date permet de parcourir le contenu dans l'ordre chronologique.
  4. Sauvegarder la configuration : Conservez les modèles fréquemment utilisés dans des scripts ou des fichiers de configuration.
  5. Tester les modèles : Testez d'abord vos modèles avec un petit échantillon de contenu pour vérifier leur bon fonctionnement.

En utilisant ces options de modèle de manière flexible, vous pouvez créer un système d'archivage de contenu Instagram parfaitement adapté à vos besoins personnels, que ce soit pour organiser les fichiers téléchargés par date, utilisateur, type de contenu ou toute autre logique.

Stratégies de filtrage et de téléchargement conditionnel de contenu

Instaloader offre des fonctionnalités de filtrage puissantes qui permettent aux utilisateurs de sélectionner le contenu à télécharger en fonction de critères spécifiques. Grâce à des stratégies de filtrage flexibles, vous pouvez contrôler précisément le contenu téléchargé, éviter le gaspillage de ressources inutile et vous concentrer sur les données réellement importantes.

Syntaxe des expressions de filtrage

Instaloader prend en charge l'utilisation d'expressions Python comme conditions de filtrage. Ces expressions sont évaluées pour chaque publication ou élément d'histoire lors de l'exécution. Elles permettent d'accéder directement aux attributs des objets Post ou StoryItem, offrant une syntaxe concise et puissante.

Exemples de filtrage de base :

# Télécharger uniquement les publications avec plus de 1000 likes
instaloader --post-filter="likes > 1000" username

# Télécharger uniquement le contenu vidéo
instaloader --post-filter="is_video" username

# Télécharger uniquement les publications contenant des hashtags spécifiques
instaloader --post-filter="'#travel' in caption_hashtags" username

Référence aux attributs de filtrage courants

Le tableau suivant liste les attributs les plus couramment utilisés de l'objet Post pour le filtrage :

Attribut Type Description Exemple
likes int Nombre de likes de la publication likes > 500
comments int Nombre de commentaires comments > 10
is_video bool Indique si c'est une vidéo is_video
date datetime Date de publication date > datetime(2024,1,1)
caption str Texte de la description 'travel' in caption
caption_hashtags list Hashtags dans la description '#nature' in caption_hashtags
caption_mentions list Mentions dans la description len(caption_mentions) > 0
viewer_has_liked bool Indique si l'utilisateur actuel a liké viewer_has_liked
video_view_count int Nombre de vues de la vidéo video_view_count > 10000
is_sponsored bool Indique si le contenu est sponsorisé not is_sponsored

Stratégies de filtrage avancées

Filtrage par plage de dates

Utilisez le module datetime pour un contrôle précis de la plage temporelle :

# Télécharger les publications publiées en 2024
instaloader --post-filter="date >= datetime(2024,1,1) and date < datetime(2025,1,1)" username

# Télécharger le contenu des 30 derniers jours
from datetime import datetime, timedelta
instaloader --post-filter="date > datetime.now() - timedelta(days=30)" username

Filtrage par conditions composées

Combinez plusieurs conditions pour une logique de filtrage complexe :

# Télécharger du contenu de haute qualité non vidéo
instaloader --post-filter="not is_video and likes > 1000 and comments > 50" username

# Télécharger du contenu de voyage populaire
instaloader --post-filter="('#travel' in caption_hashtags or '#adventure' in caption_hashtags) and likes > 500" username

Filtrage par interaction utilisateur

Filtrez en fonction des actions d'interaction de l'utilisateur :

# Télécharger uniquement le contenu que l'utilisateur a liké (nécessite une connexion)
instaloader --login=votre_nom_utilisateur --post-filter="viewer_has_liked" username

# Télécharger les publications avec un taux d'interaction élevé
instaloader --post-filter="likes + comments > 1000" username

Stratégies de filtrage des éléments d'histoire (StoryItem)

L'objet StoryItem possède des attributs de filtrage spécifiques :

# Télécharger uniquement les histoires vidéo
instaloader --storyitem-filter="is_video" username

# Télécharger les histoires contenant un texte spécifique
instaloader --storyitem-filter="caption and 'sale' in caption.lower()" username

# Télécharger les nouvelles histoires des dernières 24 heures
instaloader --storyitem-filter="date > datetime.now() - timedelta(hours=24)" username

Interface de filtrage programmatique

Pour des besoins de filtrage plus complexes, vous pouvez utiliser l'API Python d'Instaloader pour un filtrage programmatique :

import instaloader
from datetime import datetime, timedelta

L = instaloader.Instaloader()

# Fonction de filtrage personnalisée
def custom_filter(post):
    return (post.likes > 1000 and
            not post.is_video and
            post.date > datetime.now() - timedelta(days=7) and
            '#photography' in post.caption_hashtags)

# Obtenir les publications d'un utilisateur et appliquer le filtre
profile = instaloader.Profile.from_username(L.context, "target_user")
filtered_posts = filter(custom_filter, profile.get_posts())

for post in filtered_posts:
    L.download_post(post, "target_user")

Conseils d'optimisation des performances

Lors de l'utilisation de fonctionnalités de filtrage, tenez compte des stratégies d'optimisation des performances suivantes :

  1. Coût d'accès aux attributs : Certains attributs (comme get_likes(), get_comments()) nécessitent des appels API supplémentaires. Privilégiez les attributs directement accessibles.
  2. Complexité des expressions : Gardez les expressions de filtrage concises et évitez les logiques de calcul complexes.
  3. Traitement par lots : Pour de grandes quantités de données, envisagez de récupérer d'abord les métadonnées avantt d'appliquer le filtrage.
  4. Stratégie de mise en cache : Les conditions de filtrage réutilisées peuvent être pré-compilées pour améliorer l'efficacité.

Scénarios d'application typiques

Gestion des erreurs et débogage

En cas de problème avec les expressions de filtrage, Instaloader fournit des messages d'erreur détaillés. Les problèmes courants incluent :

  • Attribut inexistant : Assurez-vous que l'attribut utilisé existe dans les classes Post ou StoryItem.
  • Erreur de syntaxe : Vérifiez la correction de la syntaxe de l'expression Python.
  • Incompatibilité de type : Assurez-vous que les types des opérandes sont compatibles lors des comparaisons.

En utilisant judicieusement les stratégies de filtrage et de téléchargement conditionnel, vous pouvez améliorer considérablement l'efficacité et la pertinence de la collecte de données, en garantissant que vous n'obtenez que le contenu dont vous avez réellement besoin, ce qui permet d'économiser de l'espace de stockage et du temps de traitement.

Analyse détaillée des fichiers de métadonnées et du format JSON

Instaloader ne se contente pas de télécharger des images et des vidéos d'Instagram ; il sauvegarde également de manière exhaustive les métadonnées de chaque contenu. Ces métadonnées sont stockées au format JSON et couvrent un large éventail d'informations, des détails de base aux statistiques complètes, offrant ainsi aux utilisateurs des capacités riches pour l'analyse et le traitement des données.

Structure des fichiers de métadonnées JSON

Les fichiers de métadonnées générés par Instaloader sont conçus avec une structure standardisée. Chaque fichier comprend deux sections principales :

{
  "node": {
    // Structure de données spécifique d'Instagram
  },
  "instaloader": {
    "version": "4.10",
    "node_type": "Post"
  }
}

La section "node" contient les données réelles d'Instagram, tandis que la section "instaloader" enregistre la version des métadonnées et le type de nœud, assurant ainsi la compatibilité ascendante.

Types de données pris en charge

Instaloader prend en charge la sérialisation JSON de plusieurs types de données :

Structure détaillée des métadonnées de publication (Post)

Les métadonnées des publications (Post) contiennent une hiérarchie d'informations extrêmement riche :

{
  "node": {
    "shortcode": "ABC123DEF",
    "id": "1234567890",
    "__typename": "GraphImage",
    "owner": {
      "id": "987654321",
      "username": "instagramuser",
      "full_name": "Instagram User",
      "is_private": false,
      "profile_pic_url": "https://...",
      "is_verified": false
    },
    "date": 1640995200,
    "caption": "Ceci est une publication d'exemple #exemple",
    "edge_media_preview_like": {
      "count": 150
    },
    "edge_media_to_comment": {
      "count": 25
    },
    "display_url": "https://...",
    "is_video": false,
    "accessibility_caption": "Description d'image exemple",
    "location": {
      "id": "12345",
      "name": "Lieu exemple",
      "slug": "lieu-exemple",
      "has_public_page": true,
      "lat": 40.7128,
      "lng": -74.0060
    },
    "iphone_struct": {
      // Structure de données originale de l'API iPhone
    }
  },
  "instaloader": {
    "version": "4.10",
    "node_type": "Post"
  }
}

Analyse des champs clés

Voici les champs les plus importants dans les métadonnées de publication et leur signification :

Nom du champ Type de données Description Exemple de valeur
shortcode string Code court unique de la publication "ABC123DEF"
id string Identifiant numérique de la publication "1234567890"
__typename string Type de publication "GraphImage"
owner.id string Identifiant de l'utilisateur "987654321"
owner.username string Nom d'utilisateur du propriétaire "instagramuser"
date number Horodatage de publication 1640995200
caption string Texte descriptif de la publication "Publication exemple"
edge_media_preview_like.count number Nombre de likes 150
edge_media_to_comment.count number Nombre de commentaires 25
location.name string Nom du lieu géographique "Lieu exemple"
location.lat number Coordonnée de latitude 40.7128
location.lng number Coordonnée de longitude -74.0060

Structure des métadonnées de profil (Profile)

La structure JSON des profils d'utilisateurs est également détaillée :

{
  "node": {
    "id": "987654321",
    "username": "instagramuser",
    "full_name": "Instagram User",
    "biography": "Ceci est ma bio",
    "external_url": "https://example.com",
    "edge_followed_by": {
      "count": 1000
    },
    "edge_follow": {
      "count": 500
    },
    "profile_pic_url": "https://...",
    "is_private": false,
    "is_verified": false,
    "is_business_account": true,
    "business_category_name": "Artiste"
  },
  "instaloader": {
    "version": "4.10",
    "node_type": "Profile"
  }
}

Conventions de nommage des fichiers de métadonnées

Instaloader nomme les fichiers de métadonnées selon un modèle spécifique :

Pour les publications, le nom du fichier suit le format : {shortcode}_{timestamp_UTC}.json. Pour les profils d'utilisateurs : {username}.json. Pour les hashtags :

【免费下载链接】instaloader Download pictures (or videos) along with their captions and other metadata from Instagram. 项目地址: https://gitcode.com/gh_mirrors/in/instaloader

Étiquettes: instaloader instagram scraping Python API

Publié le 7 août à 03h49