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. 你的脚本返回的值

在哪个页面?