Discrepanza tra i dati API e i dati WebUI

Voglio ottenere i dati di un utente specifico tramite API. In sostanza, voglio sapere quante risposte ha dato l’utente da quando si è unito al forum. Ho usato il seguente codice (in pratica ho recuperato tutte le user_actions in cui action_type=5 e poi ho stampato il numero di tali record). L’output finale non corrisponde a ciò che vedo nell’interfaccia web. Qualcuno può spiegare perché questo potrebbe accadere?

import requests, time

defaultHost = #your_default_host

# Headers for authentication
headers = {
    'Api-Key': #YOUR_API_KEY,
    'Api-Username':#YOUR_API_USERNAME
}


# increment the offset by 30 each time. The loop should break when the number of elements in the response is less than 30
offset = 0
data_dict ={"user_actions":[]}
username = #username_for_which_we_want_to_fetch_the_data

# filter=5 # For the "user_replied_to_a_topic"

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

    # Check the response
    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 un’ipotesi (non ho guardato i file core e il database). Forse un valore tiene conto dei primi post (che non sono risposte), mentre l’altro restituisce solo le risposte.

Inoltre, perché non usi una query del data explorer per restituire questi dati? Penso che sarebbe molto più conveniente, a meno che non mi stia sfuggendo qualcosa. :thinking:

2 Mi Piace

[quote=“Coconut Flavored Quark, post:2, topic:347920, username:Canapin”]nessun valore tiene conto dei primi post (che non sono risposte), mentre l’altro restituisce solo le risposte.
[/quote]

Puoi chiarire a quali valori ti riferisci?

Sì, se l’API non fornisce l’output corretto, allora il Data Explorer è la soluzione definitiva. Ma la domanda più grande è: perché l’API e l’interfaccia utente web non restituiscono esattamente gli stessi dati?

sì, l’ho fatto come puoi vedere nel codice che ho postato:

    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
2 Mi Piace
  1. Il valore restituito dall’interfaccia di Discourse

  2. Il valore restituito dal tuo script

In quale pagina?