Получить активных пользователей — через API

Я хочу получить количество активных пользователей через API, точно так же, как при экспорте. Через какой API мне это сделать?

Активность в каком смысле: ежедневно, еженедельно, ежемесячно или ежегодно?

Чтобы получить общее количество пользователей, необходимо учесть всех активных пользователей на данный момент.

Так что вы имеете в виду всех онлайн-пользователей, то есть тех, кто в данный момент находится на форуме в это время?

А что насчет /admin/users/list/active.json?

Возможно, эта документация поможет?

https://docs.discourse.org/#tag/Users/operation/adminListUsers

Также посмотрите

Нет, это общее количество активных пользователей сайта, то есть сколько всего людей сейчас на сайте.

Вы можете извлечь данные из {site url}/about.json и получить значение ключа users_count. Например, на Meta:

{
  "about": {
    "stats": {
      "topics_last_day": 16,
      "topics_7_days": 99,
      "topics_30_days": 553,
      "topics_count": 60801,
      "posts_last_day": 549,
      "posts_7_days": 3352,
      "posts_30_days": 19273,
      "posts_count": 1722045,
      "users_last_day": 23,
      "users_7_days": 132,
      "users_30_days": 713,
      "users_count": 61086, // Это значение здесь!
      "active_users_last_day": 535,
      "active_users_7_days": 1219,
      "active_users_30_days": 2518,
      "likes_last_day": 169,
      "likes_7_days": 1547,
      "likes_30_days": 10833,
      "likes_count": 1641538,
      "participating_users_last_day": 119,
      "participating_users_7_days": 373,
      "participating_users_30_days": 912,
      "visitors_last_day": 2161,
      "visitors_7_days": 4468,
      "visitors_30_days": 8669,
      "eu_visitors_last_day": 653,
      "eu_visitors_7_days": 1206,
      "eu_visitors_30_days": 2022,
      "chat_messages_last_day": 72,
      "chat_messages_7_days": 707,
      "chat_messages_30_days": 3015,
      "chat_messages_previous_30_days": 3621,
      "chat_messages_count": 99670,
      "chat_users_last_day": 8,
      "chat_users_7_days": 27,
      "chat_users_30_days": 67,
      "chat_users_previous_30_days": 87,
      "chat_users_count": 925,
      "chat_channels_last_day": 3,
      "chat_channels_7_days": 8,
      "chat_channels_30_days": 39,
      "chat_channels_previous_30_days": 36,
      "chat_channels_count": 3117
    },
    "description": "Узнайте о Discourse и обсудите его — это программное обеспечение для форумов следующего поколения с открытым исходным кодом.",
    "extended_site_description": "<p>Место для сообщества Discourse, где можно встретиться, задать вопросы, оказать поддержку друг другу и поделиться высоко ценимой обратной связью.</p>",
    "banner_image": "https://d11a6trkgmumsb.cloudfront.net/original/4X/8/3/5/835377a3ea23f75e6c6c08ed3d7d606a0f2c3e72.jpeg",
    "site_creation_date": "2016-02-17T07:50:40.228Z",
    "title": "Discourse Meta",
    "locale": "en",
    "version": "3.6.0.beta1-dev",
    "https": true,
    "can_see_about_stats": true,
    "contact_url": "",
    "contact_email": "team@discourse.org",
    "moderator_ids": [
      127856,
      112395,
      8307,
      8571,
      140271
    ],
    "admin_ids": [],
    "category_moderators": []
  }
}

число users_count равно 61086.

Да, сейчас я получаю данные пользователей через этот API, но они не совпадают с общим количеством users_count на странице https://{site url}/about.json в Meta. Я хочу проанализировать причины этого расхождения.

Это для получения общего количества пользователей, но мне нужен список пользователей. Поскольку данные, полученные через Discourse API Docs, не совпадают с полем users_count из {site url}/about.json — там значительно меньше пользователей.

Привет! Как насчет вызова API этот (Документация Discourse)? Например, https://meta.discourse.org/directory_items.json?period=all&order=likes_received возвращает всех пользователей, отсортированных по количеству полученных лайков. Чтобы получить следующие страницы пользователей, можно добавить &page=2, &page=3 и так далее в конец запроса.

Вы использовали параметр page, чтобы получить все страницы?

Да, данные получаются постранично до тех пор, пока не перестанут возвращаться. Например, общее количество составляет более 34 000, но получено только более 30 000. Я не могу точно определить, пользователей с каким статусом невозможно получить через API-интерфейс.

А что, если перебрать каждую страницу (возможно, используя что-то вроде Python), увеличивать номер страницы и получать данные до тех пор, пока не останется данных для получения? Это сработает?

Я думаю, что использование запроса в обзоре данных — самый простой способ получить полный список пользователей.

Да, всё исправлено. Разница возникла потому, что при получении данных через API использовались условия по умолчанию, которые возвращали только активных пользователей.