APIデータとWebUIデータの不一致

API経由で特定のユーザーのデータを取得したいです。基本的には、ユーザーがフォーラムに参加してからの返信数を把握したいです。以下のコードを使用しました(基本的に、action_type=5 のすべての user_actions を取得し、そのレコード数を表示しました)。最終的な出力がWebUIで確認できるものと一致しませんでした。 なぜこのようなことが起こるのか、誰か説明してもらえませんか?

import requests, time

defaultHost = #your_default_host

# 認証用のヘッダー
headers = {
    'Api-Key': #YOUR_API_KEY,
    'Api-Username':#YOUR_API_USERNAME
}


# オフセットを毎回30ずつ増やします。レスポンスの要素数が30未満になったらループを抜けます。
offset = 0
data_dict ={"user_actions":[]}
username = #username_for_which_we_want_to_fetch_the_data

# filter=5 # 「ユーザーがトピックに返信した」用

while True:
    time.sleep(0.2)
    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
    # リクエストを実行
    response = requests.get(endpoint, 
                            headers=headers)

    # レスポンスを確認
    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"]))

推測ですが(コアファイルやデータベースは確認していません)、一方の値は最初の投稿(返信ではないもの)を考慮し、もう一方は返信のみを返すのではないでしょうか。

また、このデータを返すためにデータエクスプローラークエリを使用しないのはなぜですか?何か見落としていることがない限り、もっと便利だと思いますが。:thinking:

「いいね!」 2

どの値について話しているのか教えていただけますか?

はい、APIが正しい出力を返さない場合、データエクスプローラーが最終的な解決策となります。しかし、より大きな疑問は、なぜAPIとWebUIが全く同じデータを返さないのかということです。

はい、投稿したコードで確認できるように、すでに設定しました。

    endpoint = f'https://{defaultHost}/user_actions.json?username={username}&offset={offset}&filter=5'
「いいね!」 2
  1. Discourseのインターフェースが返す値

  2. あなたのスクリプトが返す値

どのページですか?