Discrepancia entre los datos de la API y los datos de la WebUI

Quiero obtener los datos de un usuario específico a través de la API. Básicamente, quiero saber cuántas respuestas dio el usuario desde que se unió al foro. Usé el siguiente código (básicamente, obtuve todas las user_actions donde action_type=5 y luego imprimí el número de dichos registros). La salida final no coincidió con lo que veo en la interfaz web. ¿Alguien puede explicar por qué podría estar sucediendo esto?

import requests, time

defaultHost = #tu_default_host

# Encabezados para la autenticación
headers = {
    'Api-Key': #TU_API_KEY,
    'Api-Username':#TU_API_USERNAME
}


# incrementa el offset en 30 cada vez. El bucle debe romperse cuando el número de elementos en la respuesta sea menor que 30
offset = 0
data_dict ={"user_actions":[]}
username = #nombre_de_usuario_para_el_que_queremos_obtener_los_datos

# filter=5 # Para "el usuario respondió a un tema"

while True:
    time.sleep(0.2)
    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
    # Realizar la solicitud
    response = requests.get(endpoint, 
                            headers=headers)

    # Comprobar la respuesta
    if response.status_code == 200:
        data = response.json()
        num_elements = len(data["user_actions"])
        data_dict["user_actions"].extend(data["user_actions"])
        offset+=30
        if num_elements<30: 
            break    
    else:
        print(f'Error: {response.status_code}')
        break

print(len(data_dict["user_actions"]))

Solo una suposición (no he mirado los archivos principales ni la base de datos). Quizás un valor tiene en cuenta las primeras publicaciones (que no son respuestas), mientras que el otro solo devuelve respuestas.

Además, ¿por qué no usas una consulta de explorador de datos para devolver estos datos? Creo que sería mucho más conveniente, a menos que me esté perdiendo algo. :thinking:

2 Me gusta

[quote=“Coconut Flavored Quark, post:2, topic:347920, username:Canapin”]ningún valor tiene en cuenta las primeras publicaciones (que no son respuestas), mientras que el otro solo devuelve respuestas.
[/quote]

¿Puedes aclarar de qué valores estás hablando?

Sí, si la API no da la salida correcta, entonces el Explorador de Datos es la solución definitiva. Pero la pregunta más importante es: ¿Por qué la API y la interfaz web no devuelven exactamente los mismos datos?

[quote=“Nate Dhaliwal, post:3, topic:347920, username:NateDhaliwal”]necesitarás establecer el nombre de usuario, el desplazamiento y el filtro en la consulta.
[/quote]

sí, lo he hecho como puedes ver en el código que publiqué:

    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
2 Me gusta
  1. El valor devuelto por la interfaz de Discourse

  2. El valor devuelto por tu script

¿En qué página?