Características clave:
- Entrega de datos en tiempo real: Obtén datos que cumplan tus reglas casi en tiempo real.
- Filtrado preciso: Filtra exactamente los datos que estás buscando usando consultas booleanas con operadores.
- Entrega: Respuesta JSON mediante HTTP/1.1 con codificación de transferencia fragmentada (chunked transfer encoding).
- Compatibilidad con centros de datos locales: Obtén Publicaciones solo del centro de datos local para reducir la latencia al evitar el retardo de replicación.
La API de Powerstream es una oferta premium disponible en determinados planes Enterprise.Si estás interesado en acceder a Powerstream o en obtener más información sobre nuestras soluciones Enterprise, comunícate con nuestro equipo de ventas enviando el Formulario de solicitud Enterprise.
Estaremos encantados de analizar cómo Powerstream puede satisfacer tus necesidades.
Inicio rápido
requests. Instálala con pip install requests. Todos los ejemplos usan autenticación OAuth 2.0 con Bearer Token. Reemplaza YOUR_BEARER_TOKEN con tu token real (almacénalo de forma segura, por ejemplo, mediante os.getenv('BEARER_TOKEN')).
Veremos cada endpoint con fragmentos de código. Supón que tienes estas importaciones al inicio:
Configuración
1. Crear reglas (POST /rules)
2. Eliminar reglas (POST /rules)
3. Obtener reglas (GET /rules)
4. PowerStream (GET /stream)
stream=True para la lectura línea por línea. Implementa lógica de reconexión para mayor robustez.
Compatibilidad con el centro de datos local
?localDcOnly=true al endpoint del stream (por ejemplo, /2/powerstream?localDcOnly=true). El centro de datos al que estás conectado se indicará tanto en la carga inicial de datos del stream como en un encabezado HTTP en la respuesta.
Para usarlo en código:
localDcOnly está activado, cuando el stream se conecte por primera vez incluirá las siguientes cabeceras de respuesta, que indican qué centro de datos local se está utilizando:
Consejo: Para optimizar la latencia, configura conexiones desde diferentes ubicaciones geográficas (por ejemplo, una cerca de Atlanta en la costa este de EE. UU. y otra cerca de Portland en la costa oeste de EE. UU.), habilitando
localDcOnly=true para cada una. Esto proporciona acceso más rápido a las Publicaciones desde cada centro de datos correspondiente. Agrega los streams de tu lado para combinar los datos entre centros de datos.Operadores
Operadores por campo
Operadores de usuario
| Operador | Resumen | Ejemplo |
|---|---|---|
from: | Coincide con publicaciones de un usuario específico | from:xdevelopers o from:123456 |
to: | Coincide con publicaciones dirigidas a un usuario específico | to:jvaleski |
retweets_of: | Coincide con reposts de un usuario específico | retweets_of:xdevelopers |
Operadores de contenido
| Operador | Descripción | Ejemplo |
|---|---|---|
contains: | Coincide con Publicaciones que contienen texto o palabras clave específicas | contains:hello o contains:-2345.432 |
url_contains: | Coincide con Publicaciones con URL que contienen texto específico | url_contains:"com/willplayforfood" |
lang: | Coincide con Publicaciones en idiomas específicos | lang:en |
Operadores de entidades
| Operador | Resumen | Ejemplo |
|---|---|---|
has: | Devuelve publicaciones que contienen entidades específicas (opciones: mentions, geo, links, media, lang, symbols, images, videos) | has:images, has:geo, has:mentions |
is: | Devuelve publicaciones de tipos específicos o con propiedades específicas (opciones: retweet, reply) | is:retweet, is:reply |
Operadores de ubicación
| Operador | Descripción | Ejemplo |
|---|---|---|
place: | Coincide con publicaciones de lugares o ubicaciones específicos | place:"Belmont Central", place:02763fa2a7611cf3 |
bounding_box: | Coincide con publicaciones dentro de un recuadro geográfico delimitado | bounding_box:[-112.424083 42.355283 -112.409111 42.792311] |
point_radius: | Coincide con publicaciones dentro de un radio con centro en un punto | point_radius:[-111.464973 46.371179 25mi], point_radius:[-111.464973 46.371179 15km] |
Operadores avanzados/de contenido
| Operator | Summary | Example |
|---|---|---|
bio: | Coincide con Publicaciones de usuarios cuyo perfil incluye un contenido de biografía específico (utiliza coincidencia de frases) | N/D |
bio_name: | Coincide con Publicaciones de usuarios cuyo perfil incluye un nombre específico en la biografía (utiliza coincidencia de frases) | N/D |
Operadores adicionales
| Operador | Resumen | Ejemplo |
|---|---|---|
retweets_of_status_id: | Coincide con republicaciones de publicaciones específicas | retweets_of_status_id:1234567890123456789 |
in_reply_to_status_id: | Coincide con respuestas a publicaciones específicas | in_reply_to_status_id:1234567890123456789 |
Operadores no basados en campos
Operadores de sintaxis especial
| Operador | Resumen | Ejemplo |
|---|---|---|
@ | Operador de mención | @username |
| Coincidencia de frases | Coincide con frases exactas | "exact phrase" |
Operadores lógicos
| Operador | Descripción | Ejemplo |
|---|---|---|
OR | OR lógico entre expresiones | x OR facebook |
| Espacio/AND | AND lógico entre expresiones | x facebook (ambos términos deben estar presentes) |
() | Agrupación para expresiones complejas | (x OR facebook) iphone |
- | Negación/exclusión | x -facebook (x pero no facebook) |
Respuestas
Límites y mejores prácticas
- Límites de tasa: 50 solicitudes/24 h para la gestión de reglas; sin límite en streams (pero se aplican límites de conexión).
- Reconexión: backoff exponencial en caso de desconexión.
- Monitoreo: usa encabezados
Connection: keep-alive.