Saltar al contenido principal
La X API utiliza paginación para los endpoints que devuelven varias páginas de resultados (p. ej., timelines, búsqueda, etc.). Cada respuesta de la API incluye un objeto meta con result_count, previous_token y next_token. El XDK se encarga de realizar varias llamadas a la API usando next_token, para que los desarrolladores solo tengan que especificar cuántos datos necesitan sin tener que hacer múltiples llamadas. El SDK lo simplifica con:
  • Iteradores integrados: Use funciones generadoras para obtener varias páginas sin interrupciones.
  • Manejo explícito de tokens: Para un control manual flexible, pasando pagination_token cuando sea necesario.
  • Cumplimiento de resultados máximos: Respeta max_results por llamada (hasta los límites de la API, p. ej., 100 para búsqueda).
Utiliza el método iterate() en respuestas paginadas para obtener todos los resultados de manera diferida. Ejemplo: Búsqueda paginada
from xdk import Client

client = Client(bearer_token="your_bearer_token")

# Búsqueda con paginación automática
all_posts = []
for page in client.posts.search_recent(
    query="python",
    max_results=100,  # Por página
    tweetfields=["created_at", "author_id"]  # expansions opcionales
):
    all_posts.extend(page.data)
    print(f"Se obtuvieron {len(page.data)} Posts (total: {len(all_posts)})")

print(f"Total de Tweets: {len(all_posts)}")
  • El iterador gestiona next_token automáticamente.
  • Se detiene cuando no hay next_token.
  • Admite backoff por límite de velocidad para evitar errores 429.

Paginación manual

Si necesitas controlar los resultados para alguna lógica personalizada (p. ej., procesarlos página por página), puedes seguir usando next_token y realizar la paginación manualmente como se muestra a continuación:
response = client.posts.search_recent(
    query="xdk python sdk",
    max_results=100,
    pagination_token=None  # Primera página
)

print(f"Primera página: {len(response.data)} Posts")
next_token = response.meta.next_token

if next_token:
    next_response = client.posts.search_recent(
        query="xdk python sdk",
        max_results=100,
        pagination_token=next_token
    )
    print(f"Segunda página: {len(next_response.data)} Posts")
Consejos:
  • Especifica siempre max_results para optimizar (el valor predeterminado varía según el endpoint).
  • Supervisa meta.result_count para depurar.
  • Para consultas muy grandes, considera la iteración asíncrona para evitar bloqueos.