Saltar a contenido

Paginación

GET /v1/more/{channel}/{direction}/{position}

Carga las publicaciones más antiguas (before) o más recientes (after) que position, como al desplazarse por el canal en t.me. La publicación de referencia no se incluye.

Parámetros

Nombre En Tipo Descripción
channel path string Nombre de usuario del canal
direction path before | after before = publicaciones más antiguas, after = más recientes
position path integer 1…10 000 000 ID de la publicación de referencia

Respuesta

Un More: posts (con la misma forma que en la página del canal) y meta.offset con los siguientes cursores. Por ejemplo, GET /v1/more/durov/before/531 devuelve las publicaciones 510…529:

{
  "posts": [ { "id": 510, "content": { … }, "footer": { … }, "forwarded": null, "view": "…" }, … ],
  "meta": {"offset": {"before": 510, "after": null}}
}

Recorrer un canal entero

import httpx

api = "http://localhost:8000/v1"
page = httpx.get(f"{api}/body/durov").json()
posts = page["content"]["posts"]
cursor = page["meta"]["offset"]["before"]

while cursor:
    batch = httpx.get(f"{api}/more/durov/before/{cursor}").json()
    if not batch["posts"]:
        break
    posts = batch["posts"] + posts
    cursor = batch["meta"]["offset"]["before"]

print(len(posts), "posts")

Con moderación

Cada página que no está en caché es una solicitud a t.me. Recorrer canales grandes rápidamente puede hacer que Telegram limite la frecuencia de solicitudes de la IP del servidor; añade una pausa entre páginas.

Errores

404 para canales desconocidos, 422 para parámetros no válidos, 502/503 como se describe en Errores.