Fonctionnalités clés :
- Diffusion de données en temps réel : recevez presque en temps réel les données correspondant à vos règles.
- Filtrage précis : filtrez exactement les données que vous recherchez à l’aide de requêtes booléennes et d’opérateurs.
- Diffusion : réponse JSON via l’encodage de transfert fragmenté HTTP/1.1 (chunked transfer encoding).
- Prise en charge du centre de données local : récupérez des Publications uniquement depuis le centre de données local pour réduire la latence en évitant le décalage dû à la réplication.
L’API Powerstream est une offre premium disponible dans le cadre de certains abonnements Enterprise.Si vous souhaitez accéder à Powerstream ou en savoir plus sur nos offres Enterprise, veuillez contacter notre équipe commerciale en remplissant le formulaire de demande Enterprise.
Nous serons ravis d’échanger sur la manière dont Powerstream peut répondre à vos besoins.
Démarrage rapide
requests. Installez-la via pip install requests. Tous les exemples utilisent l’authentification OAuth 2.0 par Jeton Bearer. Remplacez YOUR_BEARER_TOKEN par votre jeton réel (stockez-le de manière sécurisée, par exemple via os.getenv('BEARER_TOKEN')).
Nous passerons en revue chaque endpoint avec des extraits de code. Supposons ces imports en haut du fichier :
Configuration
1. Créer des règles (POST /rules)
2. Supprimer des règles (POST /rules)
3. Récupérer les règles (GET /rules)
4. PowerStream (GET /stream)
stream=True pour une lecture ligne à ligne. Implémentez une logique de reconnexion pour améliorer la robustesse.
Prise en charge du centre de données local
?localDcOnly=true au point de terminaison du flux (par exemple, /2/powerstream?localDcOnly=true). Le centre de données auquel vous êtes connecté sera indiqué à la fois dans la charge utile de données initiale du flux et dans un en-tête HTTP de la réponse.
Pour l’utiliser dans du code :
localDcOnly est activé, lorsque le flux se connecte pour la première fois, il inclura les en-têtes de réponse suivants, précisant le centre de données local utilisé :
Conseil : Pour optimiser la latence, configurez des connexions depuis différentes zones géographiques (par exemple, une près d’Atlanta sur la côte Est des États-Unis et une autre près de Portland sur la côte Ouest), en activant
localDcOnly=true pour chacune. Cela permet un accès plus rapide aux Publications depuis chaque centre de données. Agrégez les flux de votre côté pour combiner les données provenant de plusieurs centres de données.Opérateurs
Opérateurs par champ
Opérateurs utilisateur
| Operator | Summary | Example |
|---|---|---|
from: | Sélectionne les publications provenant d’un utilisateur spécifique | from:xdevelopers ou from:123456 |
to: | Sélectionne les publications adressées à un utilisateur spécifique | to:jvaleski |
retweets_of: | Sélectionne les republications d’un utilisateur spécifique | retweets_of:xdevelopers |
Opérateurs de contenu
| Opérateur | Résumé | Exemple |
|---|---|---|
contains: | Renvoie les publications contenant un texte ou des mots-clés spécifiques | contains:hello ou contains:-2345.432 |
url_contains: | Renvoie les publications dont les URL contiennent un texte spécifique | url_contains:"com/willplayforfood" |
lang: | Renvoie les publications dans des langues spécifiques | lang:en |
Opérateurs d’entités
| Opérateur | Description | Exemple |
|---|---|---|
has: | Renvoie les Publications contenant des entités spécifiques (Options : mentions, geo, links, media, lang, symbols, images, videos) | has:images, has:geo, has:mentions |
is: | Renvoie les Publications d’un type spécifique ou possédant des propriétés spécifiques (Options : retweet, reply) | is:retweet, is:reply |
Opérateurs de localisation
| Operator | Summary | Example |
|---|---|---|
place: | Correspond aux Publications provenant de lieux spécifiques | place:"Belmont Central", place:02763fa2a7611cf3 |
bounding_box: | Correspond aux Publications situées dans une zone géographique délimitée | bounding_box:[-112.424083 42.355283 -112.409111 42.792311] |
point_radius: | Correspond aux Publications situées dans un rayon autour d’un point | point_radius:[-111.464973 46.371179 25mi], point_radius:[-111.464973 46.371179 15km] |
Opérateurs avancés/de contenu
| Opérateur | Résumé | Exemple |
|---|---|---|
bio: | Renvoie les publications d’utilisateurs dont la bio contient un contenu spécifique (utilise la recherche par expression) | N/A |
bio_name: | Renvoie les publications d’utilisateurs dont la bio contient un nom spécifique (utilise la recherche par expression) | N/A |
Opérateurs supplémentaires
| Opérateur | Résumé | Exemple |
|---|---|---|
retweets_of_status_id: | Correspond aux republications d’une publication spécifique | retweets_of_status_id:1234567890123456789 |
in_reply_to_status_id: | Correspond aux réponses à une publication spécifique | in_reply_to_status_id:1234567890123456789 |
Opérateurs sans champ
Opérateurs de syntaxe spéciale
| Opérateur | Description | Exemple |
|---|---|---|
@ | Opérateur de mention | @username |
| Correspondance de phrase | Fait correspondre des expressions exactes | "exact phrase" |
Opérateurs logiques
| Operator | Summary | Example |
|---|---|---|
OR | OU logique entre expressions | x OR facebook |
| Space/AND | ET logique entre expressions | x facebook (les deux termes doivent être présents) |
() | Regroupement d’expressions complexes | (x OR facebook) iphone |
- | Négation/exclusion | x -facebook (x mais pas facebook) |
Réponses
Limites & Bonnes pratiques
- Limites de taux : 50 requêtes/24 h pour la gestion des règles ; aucune limite pour les flux (mais des limites de connexion s’appliquent).
- Reconnexion : backoff exponentiel en cas de déconnexion.
- Surveillance : utilisez les en-têtes
Connection: keep-alive.