Estoy trabajando en https://mentionme.app y quiero recopilar el contenido más reciente de foros Discourse disponibles públicamente. Para ello, he seleccionado el punto final de la API /posts.json.
He notado que este punto final devuelve una cantidad aparentemente aleatoria de elementos. La documentación indica que devolverá los 50 últimos posts, pero al inspeccionar más de cerca (por ejemplo, https://meta.discourse.org/posts.json) vemos que, en lugar de los 50 últimos posts, aparecen posts con IDs que van desde max-50 hasta max, y algunos faltan.
Supongo que el hecho de que no haya 50 posts en ese punto final es una imperfección de la API. ¿Tengo razón?
Supongo que los IDs de los posts se asignan desde un conjunto mayor de IDs que incluye otras cosas (¿IDs de usuarios?) y que no debería preocuparme por eso.
En particular, para algunos valores, la lista está vacía, por ejemplo: https://meta.discourse.org/posts.json?before=1234. ¿Qué debo hacer si una lista sin el parámetro “before” (“posts.json”) devuelve una lista vacía y no puedo obtener el ID máximo de la publicación para comenzar?
Algunas publicaciones estarán dentro de categorías protegidas que no puedes ver, y otras estarán dentro de mensajes privados y no aparecerán listadas en el punto de conexión, que muestra las últimas publicaciones en los temas que puedes leer.
Por ejemplo, en este momento esta publicación tiene el ID 621820 y la siguiente es la 621818 de @gerhard. La que falta es la 621819, que es un mensaje privado, y por eso no puedes verla.
Gracias por la explicación, ahora está claro. Estoy escaneando varios foros de Discourse y, hasta ahora, he encontrado el problema en producción una vez (posts.json sin el parámetro “before” devuelve una lista vacía). No es el fin del mundo, pero es algo a tener en cuenta.