Diskrepanz zwischen API-Daten und WebUI-Daten

Ich möchte die Daten eines bestimmten Benutzers über die API abrufen. Im Grunde möchte ich wissen, wie viele Antworten der Benutzer seit seinem Beitritt zum Forum gegeben hat. Ich habe den folgenden Code verwendet (im Grunde habe ich alle user_actions abgerufen, bei denen action_type=5 war, und dann die Anzahl dieser Datensätze ausgegeben). Die endgültige Ausgabe stimmte nicht mit dem überein, was ich in der WebUI sehe. Kann mir jemand erklären, warum das so sein könnte?

import requests, time

defaultHost = #your_default_host

# Header für die Authentifizierung
headers = {
    'Api-Key': #YOUR_API_KEY,
    'Api-Username':#YOUR_API_USERNAME
}


# Erhöhe den Offset jedes Mal um 30. Die Schleife sollte unterbrochen werden, wenn die Anzahl der Elemente in der Antwort kleiner als 30 ist
offset = 0
data_dict ={"user_actions":[]}
username = #username_for_which_we_want_to_fetch_the_data

# filter=5 # Für "user_replied_to_a_topic"

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

    # Antwort prüfen
    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"]))

Nur eine Vermutung (habe mir die Kerndateien und die Datenbank nicht angesehen). Vielleicht berücksichtigt ein Wert die ersten Beiträge (die keine Antworten sind), während der andere nur Antworten zurückgibt.

Außerdem, warum verwendest du keine Data-Explorer-Abfrage, um diese Daten zurückzugeben? Ich denke, das wäre viel bequemer, es sei denn, ich übersehe etwas. :thinking:

2 „Gefällt mir“

[quote=“Coconut Flavored Quark, post:2, topic:347920, username:Canapin”]kein Wert berücksichtigt die ersten Beiträge (die keine Antworten sind), während der andere nur Antworten zurückgibt.
[/quote]

Können Sie klären, von welchen Werten Sie sprechen?

Ja, wenn die API keine korrekten Ergebnisse liefert, ist der Daten-Explorer die ultimative Lösung. Aber die größere Frage ist: Warum liefern die API und die WebUI nicht genau die gleichen Daten?

Ja, das habe ich getan, wie Sie in dem von mir geposteten Code sehen können:

    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
2 „Gefällt mir“
  1. Der von der Benutzeroberfläche von Discourse zurückgegebene Wert

  2. Der von Ihrem Skript zurückgegebene Wert

Auf welcher Seite?