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://global.discourse-cdn.com/meta/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 총수와 숫자가 맞지 않습니다. 그 원인을 분석해 보고 싶습니다.
이것은 사용자의 총 수를 가져오지만, 저는 사용자 목록을 얻고 싶습니다. Discourse API Docs 를 통해 가져온 사용자 수가 {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개 이상인 경우, 어떤 상태(status)의 사용자가 API 인터페이스를 통해 가져오지 못하는지 구별할 수 없습니다.
그렇다면 각 페이지를 순회하면서(예: Python 같은 도구를 사용하여) 페이지 번호를 증가시키고 데이터가 더 이상 남지 않을 때까지 데이터를 가져오는 방식을 사용한다면 어떻게 될까요? 그런 방식이 가능할까요?
데이터 탐색기 쿼리를 사용하는 것이 전체 사용자 목록을 가져오는 가장 쉬운 방법이라고 생각합니다.
네, 처리되었습니다. 이전의 차이는 API를 통해 데이터를 가져올 때 기본 조건을 사용했기 때문이며, 이 경우 활성 사용자만 검색됩니다.