Necesitaba desesperadamente la misma función hace dos años. Todavía no he descubierto cómo hacerlo de manera (más) adecuada. Este es mi truco:
def get_topic_post(topic_id, post_num)
topic = @api.topic(topic_id, {print: true})
post_obj = topic['post_stream']['posts'].find { |p| p['post_number'] == post_num }
if post_obj
post_obj['id']
else
throw "No se pudo encontrar la publicación #{topic_id}/#{post_num}."
end
end
Esto evita los problemas mencionados: {print: true} aborda el problema de la paginación. El find es necesario porque la moderación puede crear una discrepancia entre los índices del array y los números de publicación.
Funciona para los temas del tamaño con el que estoy trabajando. Sin embargo, una forma más directa a través de la API se sentiría más satisfactoria.