Discrepância nos dados da API vs dados do WebUI

Quero obter os dados de um usuário específico via API. Basicamente, quero saber quantas respostas o usuário deu desde que entrou no fórum. Usei o seguinte código (basicamente, busquei todas as user_actions onde action_type=5 e depois imprimi o número de tais registros). A saída final não correspondeu ao que vejo na interface web. Alguém pode explicar por que isso pode estar acontecendo?

import requests, time

defaultHost = #seu_default_host

# Headers para autenticação
headers = {
    'Api-Key': #SUA_API_KEY,
    'Api-Username':#SEU_API_USERNAME
}


# incrementa o offset em 30 a cada vez. O loop deve parar quando o número de elementos na resposta for menor que 30
offset = 0
data_dict ={"user_actions":[]}
username = #nome_de_usuário_para_o_qual_queremos_buscar_os_dados

# filter=5 # Para o \"user_replied_to_a_topic\"

while True:
    time.sleep(0.2)
    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
    # Faz a requisição
    response = requests.get(endpoint, 
                            headers=headers)

    # Verifica a resposta
    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'Erro: {response.status_code}')
        break

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

Apenas um palpite (não dei uma olhada nos arquivos principais e no banco de dados). Talvez um valor leve em consideração os primeiros posts (que não são respostas), enquanto o outro retorna apenas respostas.

Além disso, por que você não usa uma consulta de explorador de dados para retornar esses dados? Acho que seria muito mais conveniente, a menos que eu esteja perdendo alguma coisa. :thinking:

2 curtidas

[quote=“Coconut Flavored Quark, post:2, topic:347920, username:Canapin”]nenhum valor leva em consideração as primeiras postagens (que não são respostas), enquanto o outro retorna apenas respostas.
[/quote]

Você pode esclarecer a quais valores você está se referindo?

Sim, se a API não der a saída correta, então o Data Explorer é a solução definitiva. Mas a questão maior é: Por que a API e a webUI não retornam exatamente os mesmos dados?

[quote=“Nate Dhaliwal, post:3, topic:347920, username:NateDhaliwal”]você precisará definir o nome de usuário, o deslocamento e o filtro na consulta.
[/quote]

sim, eu fiz isso como você pode ver no código que postei:

    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
2 curtidas
  1. O valor retornado pela interface do Discourse

  2. O valor retornado pelo seu script

Em qual página?