获得徽章颁发的日期/时间?

时间:2018-03-05 17:30:24

标签: r stackexchange-api

使用此功能,可以从Stack Overflow的特定用户获取徽章:

library(stackr) 
badges <- stack_users(9371451, "badges", num_pages=100000, pagesize=100)

如何添加参数以获取徽章授予用户的时间戳?如果可能的话,回答哪个?

2 个答案:

答案 0 :(得分:1)

使用Stack Exchange API可能是 ish ,但不是你正在使用的the stackr library

/users/{ids}/badges route会返回badge objects的列表,其中只包含可能的属性:

    award_count     integer
    badge_id        integer, refers to a badge
    badge_type      one of named, or tag_based
    description     string 
    link            string 
    name            string
    rank            one of gold, silver, or bronze
    user            shallow_user 

因此,您无法获得时间戳或触发帖子。

但是,您可以the /notifications route获取此信息(主要是),这可以返回如下结果:

{ "items": [ {
      "site": {"site_url": "https://webmasters.stackexchange.com"},
      "is_unread": false,
      "creation_date": 1520234766,
      "notification_type": "badge_earned",
      "body":   `You've earned the \"Notable Question\" badge for 
                <a href=\"http://webmasters.stackexchange.com/questions/65822\">
                How to bulk delete email accounts from cPanel / my hosting account?</a>.`
                //  Manually wrapped for this post
    },
    etc.

但是,重要:

  1. /notifications 需要身份验证,仅适用于已登录(通过API)的用户。
  2. stackr 库不支持身份验证。 (稍后请参阅上一个问题。)
  3. / notifications 返回所有给定用户的Stack Exchange网站,因此您必须过滤掉您不感兴趣的网站。
  4. / notifications 会返回多种通知,因此您必须过滤掉与徽章无关的通知。
  5. / notifications不会返回rank等徽章详细信息,因此您仍然需要致电/users/{ids}/badges并将结果结合。
  6. 对于较高代表用户,您可能会耗尽API配额,然后才能获取所有该用户的通知。

答案 1 :(得分:1)

您可以使用users/{ids}/timeline。见description page

  

返回{ids}中的用户在网站上执行的操作的子集。

     

此方法按照完成的顺序返回用户的帖子,编辑和获得的徽章。

library(stackr)
df_timeline <- stackr:::stack_GET("users/9371451/timeline", num_pages = 10000)

:::是必需的,因为函数stack_GET是一个内部命令