API経由でアクティブユーザーを取得する

API経由でアクティブユーザー数を取得したいのですが、エクスポートしたものと全く同じものを取得したいです。どのAPIで取得すればよいでしょうか。

どの意味でアクティブですか:毎日、毎週、毎月、それとも毎年?

「いいね!」 1

取得したい、現在アクティブなユーザー、つまり総ユーザー数

「いいね!」 1

つまり、オンラインのユーザー、つまりその時点でフォーラムにいるユーザー全員ということですか?

「いいね!」 1

/admin/users/list/active.json についてはどうでしょうか?

このドキュメントがお役に立つかもしれません。

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

こちらも参照してください。

「いいね!」 2

いいえ、ウェブサイトの全有効ユーザー数です。つまり、ウェブサイトに現在何人いるかということです。

{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": "Learn about and discuss Discourse, the next-generation open-source forum software.",
    "extended_site_description": "<p>A place for the Discourse community to meet, ask questions, provide support to one other, and share much-appreciated feedback.</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を使用してユーザーデータを取得していますが、Metaの{site url}/about.jsonusers_countの総数と一致しません。原因を分析したいと思います。

これはユーザーの総数を取得するものですが、ユーザーリストを取得したいです。なぜなら、https://docs.discourse.org/#tag/Users/operation/adminListUsers から取得したユーザー数と {site url}/about.jsonusers_count が一致せず、多くのユーザーが不足しているからです。

こんにちは、この (Discourse Docs) API呼び出しはどうですか?例えば、https://meta.discourse.org/directory_items.json?period=all&order=likes_received は、いいねの数で並べ替えられたすべてのユーザーを取得します。さらに多くのユーザーページを取得するには、末尾に&page=2&page=3を追加できます。

「いいね!」 1

すべてのページを取得するために page パラメータを使用しましたか?

「いいね!」 1

はい、ページネーションで取得したデータがなくなるまで取得します。例えば、合計が34,000件以上あるのに、取得できるのが30,000件強しかない場合、APIインターフェースで取得できないユーザーの状態が何であるか判別できません。

Pythonのようなものを使って各ページをループ処理し、ページ番号をインクリメントして、取得できるデータがなくなるまでデータを取得し続けるとしたら、どうなりますか?それは機能しますか?

「いいね!」 1

データエクスプローラークエリを使用するのが、ユーザーリスト全体を取得する最も簡単な方法だと思います。

「いいね!」 1

はい、処理済みです。以前の差異は、APIからデータを取得する際にデフォルト条件を使用し、アクティブなユーザーのみを取得していたためです。