Discrépance entre les données API et les données WebUI

Je veux récupérer les données d’un utilisateur spécifique via l’API. En gros, je veux savoir combien de réponses l’utilisateur a données depuis qu’il a rejoint le forum. J’ai utilisé le code suivant (en gros, j’ai récupéré toutes les user_actionsaction_type=5 et j’ai ensuite imprimé le nombre de ces enregistrements). Le résultat final ne correspondait pas à ce que je vois dans l’interface web. Quelqu’un peut-il expliquer pourquoi cela pourrait se produire ?

import requests, time

defaultHost = #your_default_host

# En-têtes pour l'authentification
headers = {
    'Api-Key': #YOUR_API_KEY,
    'Api-Username':#YOUR_API_USERNAME
}


# incrémente l'offset de 30 à chaque fois. La boucle doit s'arrêter lorsque le nombre d'éléments dans la réponse est inférieur à 30
offset = 0
data_dict ={"user_actions":[]}
username = #username_for_which_we_want_to_fetch_the_data

# filter=5 # Pour le « user_replied_to_a_topic »

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

    # Vérifier la réponse
    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'Erreur : {response.status_code}')
        break

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

Juste une supposition (je n’ai pas regardé les fichiers principaux et la base de données). Peut-être qu’une valeur prend en compte les premiers messages (qui ne sont pas des réponses), tandis que l’autre ne renvoie que les réponses.

Aussi, pourquoi n’utilisez-vous pas une requête d’explorateur de données pour renvoyer ces données ? Je pense que ce serait beaucoup plus pratique, à moins que je ne manque quelque chose. :thinking:

2 « J'aime »

[quote=“Coconut Flavored Quark, post:2, topic:347920, username:Canapin”]aucune valeur ne prend en compte les premiers messages (qui ne sont pas des réponses), tandis que l’autre ne retourne que les réponses.
[/quote]

Pouvez-vous clarifier de quelles valeurs vous parlez ?

Oui, si l’API ne donne pas le bon résultat, alors le Data Explorer est la solution ultime. Mais la plus grande question est : pourquoi l’API et l’interface utilisateur Web ne renvoient-elles pas exactement les mêmes données ?

[quote=“Nate Dhaliwal, post:3, topic:347920, username:NateDhaliwal”]vous devrez définir le nom d’utilisateur, le décalage et le filtre dans la requête.
[/quote]

oui, je l’ai fait comme vous pouvez le voir dans le code que j’ai posté :

    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
2 « J'aime »
  1. La valeur retournée par l’interface de Discourse

  2. La valeur retournée par votre script

Sur quelle page ?