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": "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.jsonのusers_countの総数と一致しません。原因を分析したいと思います。
これはユーザーの総数を取得するものですが、ユーザーリストを取得したいです。なぜなら、https://docs.discourse.org/#tag/Users/operation/adminListUsers から取得したユーザー数と {site url}/about.json の users_count が一致せず、多くのユーザーが不足しているからです。
こんにちは、この (Discourse Docs) API呼び出しはどうですか?例えば、https://meta.discourse.org/directory_items.json?period=all&order=likes_received は、いいねの数で並べ替えられたすべてのユーザーを取得します。さらに多くのユーザーページを取得するには、末尾に&page=2、&page=3を追加できます。
すべてのページを取得するために page パラメータを使用しましたか?
はい、ページネーションで取得したデータがなくなるまで取得します。例えば、合計が34,000件以上あるのに、取得できるのが30,000件強しかない場合、APIインターフェースで取得できないユーザーの状態が何であるか判別できません。
Pythonのようなものを使って各ページをループ処理し、ページ番号をインクリメントして、取得できるデータがなくなるまでデータを取得し続けるとしたら、どうなりますか?それは機能しますか?
データエクスプローラークエリを使用するのが、ユーザーリスト全体を取得する最も簡単な方法だと思います。
はい、処理済みです。以前の差異は、APIからデータを取得する際にデフォルト条件を使用し、アクティブなユーザーのみを取得していたためです。